trovare e rsync?


24

Voglio essere in grado di cercare file per 14 giorni e oltre 10k e poi sincronizzare i file trovati con una destinazione.

C'è un modo per combinare questi due comandi?

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

Risposte:


33

È possibile inviare l'output di find in rsync utilizzando una delle opzioni descritte di seguito.

Metodo n. 1

Queste 2 opzioni sono molto simili, entrambe presumono che tu stia cambiando directory in una posizione e quindi eseguendo il findcomando da lì.

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

Puoi anche usare una pipe per alimentare l'elenco in:

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

Metodo n. 2

Questo metodo può essere eseguito da qualsiasi luogo.

$ find /src/dir/ -mtime +14 -size +10k -printf %P\\0 \
        | rsync --files-from=- --from0 /src/dir/ /dst/dir/
  • printf %P: Nome del file con il nome dell'argomento della riga di comando in base al quale è stato trovato rimosso. In questo modo, è possibile utilizzare qualsiasi directory src, non è necessario eseguire prima il cd nella directory src.

Riferimenti

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.