Utilisez rsync pour copier tous les fichiers à l'exception de certains noms de fichiers avec une certaine extension

28

J'ai deux cartes flash de même taille et je souhaite copier le contenu de l'une à l'autre en fonction des règles suivantes:

  1. Je veux que tous les répertoires et sous-répertoires soient en place
  2. Je souhaite exclure les fichiers de type .FOO, .BAR et .ZIM (tous les autres fichiers sont copiés)
  3. Bonus: Ce serait cool s'il sort les noms de fichiers au fur et à mesure qu'ils sont copiés, étant donné qu'il copiera ~ 8 Go d'informations

Cela pourrait-il être fait avec "trouver" en quelque sorte?

macek
la source

Réponses:

41

Ce serait beaucoup plus facile d' utiliser rsync avec son --excludecommutateur.

rsync -av --exclude='*.FOO' --exclude='*.BAR' --exclude='*.ZIM' /source /dest

Le -vcommutateur fournira une sortie détaillée sur laquelle les fichiers sont synchronisés.

John T
la source
Petit suivi ici: la copie est terminée et / src / * est maintenant dans / dest / src / * Comment utiliser rsync pour obtenir / src / * dans / dest / *?
macek
Essayez/source/ /dest
John T
Ça ne marche pas. Je vois toujours des fichiers * .FOO en cours de copie.
Jake
Il est spécifié comment vous devez indiquer le chemin d'accès --exclude. Si vous rencontrez des problèmes, consultez cette réponse .
totymedli
0

Si vous avez un grand nombre d'extensions à exclure, vous pouvez créer un fichier et noter toute l'extension ou le fichier à exclure et utiliser une seule option d'exclusion pour le rendre simple.

rsync -ravz --exclude = '. / abc, txt' / source / dest

Il est toujours bon d'utiliser z pour la compression et l'option r si vous devez copier récursivement.

amit singh
la source