finden und rsync?

24

Ich möchte in der Lage sein, über 14 Tage und über 10.000 nach Dateien zu suchen und diese gefundenen Dateien dann mit einem Ziel zu synchronisieren.

Gibt es eine Möglichkeit, diese beiden Befehle zu kombinieren?

find ./ -mtime +14 -size +10k 
rsync --remove-sent-files -avz /src /dest
mkrouse
quelle

Antworten:

33

Sie können die Ausgabe von find mit einer der folgenden Optionen an rsync senden.

Methode 1

Diese beiden Optionen sind sich sehr ähnlich. Beide setzen voraus, dass Sie die Verzeichnisse an einen bestimmten Ort verschieben und dann den findBefehl von dort ausführen.

$ rsync -avz --remove-sent-files \
        --files-from=<(find ./ -mtime +14 -size +10k) ./ /dest

Sie können auch eine Pipe verwenden, um die Liste einzugeben:

$ find ./ -mtime +14 -size +10k -print0 \
        | rsync -av --files-from=- --from0 ./ /dest

Methode # 2

Diese Methode kann von überall ausgeführt werden.

$ find /src/dir/ -mtime +14 -size +10k -printf %P\\0 \
        | rsync --files-from=- --from0 /src/dir/ /dst/dir/
  • printf %P: Dateiname mit dem Namen des Befehlszeilenarguments, unter dem es gefunden wurde, entfernt. Auf diese Weise können Sie jedes src-Verzeichnis verwenden, ohne zuerst in Ihr src-Verzeichnis cden zu müssen.

Verweise

slm
quelle