Ich muss eine große Anzahl von Dateien von einem FTP-Server auf einen neuen Server übertragen. Es könnten Tausende von Dateien sein, daher möchte ich die Übertragung auf Dateien beschränken, die in den letzten drei Monaten hochgeladen wurden. Ist das möglich und wenn ja, wie?
Ist es außerdem möglich, herauszufinden, wie groß der Download voraussichtlich sein wird, bevor Sie mit dem eigentlichen Download beginnen?
Danke
Antwort1
Sie könnenlftp
dafür verwenden Sie den entsprechenden mirror
Befehl. Hier ist ein Ausschnitt aus der Manpage:
mirror [OPTS] [source [target]]
Mirror specified source directory to local target directory. If target
directory ends with a slash, the source base name is appended to
target directory name. Source and/or target can be URLs pointing to
directories.
[cut...]
-N, --newer-than=SPEC download only files newer than specified time
--on-change=CMD execute the command if anything has been changed
--older-than=SPEC download only files older than specified time
[...]
Schau unbedingt ins Handbuch, da gibt es wirklich viele nützliche Optionen dazu mirror
- wie zum Beispiel --allow-chown
, --allow-suid
oder --parallel[=N]
. Lftp funktioniert auch mit anderen Zugriffsprotokollen wie sftp
, fish
oder http(s)
.
Antwort2
Sie könnten versuchen, es als Dateisystem zu mounten mitcurlftpfs
.
Kopieren Sie dann mit find
.
zB:
mkdir /tmp/mountpoint
curlftpfs ftp://example.com/ /tmp/mountpoint/
cd /tmp/mountpoint
find -mtime +90 -exec cp {} /dest/path/ \;
Ich vermute, es gibt bessere Lösungen.