web-dev-qa-db-fra.com

trouver et rsync?

Je souhaite pouvoir rechercher des fichiers sur 14 jours et plus de 10 000 et que RSYNC Ceux-ci ont trouvé des fichiers trouvés dans une destination.

Y a-t-il un moyen de combiner ces deux commandes?

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

Vous pouvez envoyer la sortie de recherche dans RSYNC en utilisant l'une des options décrites ci-dessous.

Méthode n ° 1

Ces 2 options sont très similaires, elles supposent tous les deux que vous changez de répertoires vers un emplacement, puis de l'exécution de la commande find à partir de là.

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

Vous pouvez également utiliser un tuyau pour nourrir la liste dans:

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

Méthode n ° 2

Cette méthode peut être exécutée de n'importe où.

$ find /src/dir/ -mtime +14 -size +10k -printf %P\\0 \
        | rsync --files-from=- --from0 /src/dir/ /dst/dir/
  • printf %P: Nom du fichier avec le nom de l'argument de ligne de commande sous lequel il a été trouvé supprimé. De cette façon, vous pouvez utiliser n'importe quel répertoire SRC, pas besoin de CD dans votre répertoire SRC en premier.

Les références

36
slm