web-dev-qa-db-fra.com

quelle est la commande rsync pour fusionner «intelligemment» deux dossiers?

J'ai des dossiers qui ont été dupliqués par erreur et je dois les fusionner ensemble. Supposons que le dossier A contient le fichier X et que le dossier B contient le fichier Y, j'aimerais que le fichier X soit copié dans le dossier B. Mais, bien sûr, je peux faire face à des cas plus complexes, où f.i. les deux dossiers A et B contiennent le même fichier X: dans ce cas, je voudrais conserver la copie la plus récente du fichier. rsync doit donc comparer les deux fichiers. Si l’Origine est plus ancienne, il suffit de la ignorer. un, écraser.

Quels paramètres dois-je mettre sur la ligne de commande rsync?

C'est ce que j'ai trouvé googler, mais je ne pense pas que ce soit correct.

rsync -avz --ignore-existing src dest

La page de manuel me dépasse.

Je vous remercie.

PS Dans les cas où un fichier existe dans les deux dossiers, le mieux serait d’écraser l’ancien dans le dossier de destination tout en conservant une copie de l’ancien, tout comme une sauvegarde au cas où vous devriez revenir à la précédent

37
Tiziano Solignani

J'utiliserais:

rsync -abviuzP src/ dest/
  • -i active le format détaillé, qui affiche plus d'informations que le format par défaut
  • -b crée des fichiers de sauvegarde rsync existant dans les deux dossiers, en ajoutant ~ à l'ancien fichier. Vous pouvez contrôler ce suffixe avec --suffix .suf
  • -u permet au transfert rsync d'ignorer les fichiers qui sont plus récents dans dest que dans src
  • -z active la compression, ce qui est utile lors du transfert de fichiers facilement compressibles sur des liens lents
  • -P active --partial et --progress
  • --partial fait que rsync garde les fichiers partiellement transférés si le transfert est interrompu
  • --progress affiche une barre de progression pour chaque transfert, utile si vous transférez de gros fichiers
62
user49740