rsync Remote zu lokalen Dateien, die älter als bestimmte Zeit sind

562
Mike Dannyboy

Ich möchte von einem entfernten zu lokalen Dateien rsync, die älter (oder neuer) als eine bestimmte Zeit sind.

Ich habe Antworten gesehen, die besagen find /src/path -mtime -1 | rsync ..., dass sie nur funktionieren, wenn das Verzeichnis lokal gesehen wird. Da es fern ist, ist es nicht sichtbar.

Wie kann ich also die findRemote-Verbindung ausführen und die Ergebnisse auf lokal zurücksetzen?

0

1 Antwort auf die Frage

0
codedstructure

rsync hat eine --list-onlyOption, die einen Index der entfernten Dateien einschließlich Zeitstempeln bereitstellt:

$ rsync --list-only $REMOTE drwx------ 160 2018/09/04 12:55:12 . -rw-r--r-- 1,348 2018/09/04 12:52:33 .bash_profile -rw-r--r-- 55 2018/09/04 12:52:33 .bashrc ... 

Filtern nach dieser Liste, um nur geeignete Datumsangaben auszuwählen, und diese dann in ein nachfolgendes --files-fromArgument von rsync (das sich auf stdin beziehen kann --files-from=-) zu verwenden, sollte die Aufgabe erfüllen.

Im folgenden Beispiel werden Dateien mit einer mtime zwischen 2018-08-01 und 2018-08-07 auf dem lokalen Computer rsync (mit entsprechenden Werten von $REMOTEund $LOCAL_PATH; Hinweis $5im Befehl awk bezieht sich auf die fünfte Spalte - dh den Dateinamen - von) die rsync-Ausgabe)

$ rsync --list-only $REMOTE | awk '/2018-08-0[1-7]/ ' | rsync --files-from=- $REMOTE $LOCAL_PATH 

Dies löst nicht das vollständige Problem der Verwendung von find's- -mtimeTyp-Bezeichnern, aber es könnte eine weitere Analyse der Datumszeichenfolge (z. B. Verwendung date) durchgeführt werden, um dies zu erweitern.