Synchronisieren von Dateien über FTP

11

Ich muss Dateien auf meinem Computer mit einem Server synchronisieren, auf den ich nur FTP-Zugriff habe. Daher kann ich rsync nicht verwenden (das würde mindestens SFTP erfordern, aber der einzige Kanal, der für mich verfügbar ist, ist einfaches Vanille-FTP).

Ich brauche nur eine Einweg-Synchronisation: von meinem Computer zum Server. Ich habe von einem Programm namens unison gehört , aber es scheint für die bidirektionale Synchronisation gedacht zu sein, und ich bin mir nicht sicher, ob es optimiert werden kann, um das zu tun, was ich will. Ich sollte auch hinzufügen, dass das Programm nicht interaktiv funktionieren sollte, damit es in einem Skript verwendet werden kann.

Die letzte Option wäre, ein eigenes Skript zu schreiben , das Dateien nach Änderungszeit (oder ähnlichem) vergleicht und über die geänderten kopiert. Ich habe es bereits geschafft, das FTP-Verzeichnis in ein lokales Verzeichnis einzubinden, sodass das Problem darin besteht, nur zwei Verzeichnisse zu synchronisieren. Aber mein Bauchgefühl sagt mir, dass es so etwas schon in freier Wildbahn geben muss.

Rene Saarsoo
quelle

Antworten:

14

Da ich nicht wputzur Arbeit kommen konnte, suchte ich nach einer Alternative und fand: ncftp .

Genauer gesagt ncftpput schien fast zu tun , was wput entworfen wurde , zu tun. Am wichtigsten für mich war, dass es nicht wie wput abstürzte. Tatsächlich können nur die Dateien hochgeladen werden, die sich mit der Option -z nicht geändert haben :

ncftpput -z -u user -p pass ftp.mydomain.com dir/name files-to-upload...
Rene Saarsoo
quelle
funktionierte perfekt für mich
Roman m
Installieren Sie unter OSX über : brew install ncftp.
Kenorb
1
Verwenden Sie zum Kopieren ganzer Verzeichnisbäume -R.
Kenorb
+1 für die Off-Label-Verwendung von -z bedeutet "noclobber" / "nicht überschreiben"
barrycarter
Ich wünschte, ich hätte das vor 2 Tagen gefunden. Ich habe ncftpget aufgegeben, da auf der Manpage keine "nur neueren" "vorhandenen" Optionen überspringen "angezeigt wurden. Ich habe meinen Kopf auf lftp geschlagen - von BASH bis Python. Dann habe ich einen weiteren Versuch unternommen, ncftp bei Google zu verwenden, und Ihre Lösung gefunden. Ich habe nach ncftpget (Manpage) gesucht - "-z / -Z Versuchen Sie (nicht), die Übertragung fortzusetzen. Standardmäßig wird versucht, die Übertragung fortzusetzen". Hört sich nicht überzeugend an. Aber verdammt noch mal ... das ist die Option, nach der ich gesucht habe: Lade nur neue Dateien mit ncftpget herunter. Ich hoffe dieser Kommentar hilft jemandem.
Anup Nair
4

lftpscheint auch hier angebracht: /programming//a/693280/480534

Zusammenfassung:

lftp <username>@<server>
  mirror -c <source> <dest>
  exit
Robert Muil
quelle
3

Sicher, und es heißt wput

user7963
quelle
Natürlich! Wie habe ich nicht darüber nachgedacht. Ich habe dieses Programm total vergessen. Ich denke, es wird funktionieren, aber ich melde mich zurück, wenn ich wieder zu Hause bin, um es auszuprobieren ...
Rene Saarsoo
Aus irgendeinem Grund gibt mir wput "Segmentierungsfehler", wenn ich versuche, etwas hochzuladen.
Rene Saarsoo