Je voudrais copier un ensemble de fichiers du répertoire A dans le répertoire B, avec l’avertissement que si un fichier du répertoire A est identique à un fichier du répertoire B, il ne doit pas être copié (et donc son heure de modification ne doit pas être modifiée). mis à jour). Y at-il un moyen de faire cela avec les outils existants, sans écrire mon propre script pour le faire?
Pour en dire un peu plus sur mon cas d'utilisation: je suis en train de générer automatiquement un groupe de .c
fichiers dans un répertoire temporaire (par une méthode qui doit tous les générer de manière inconditionnelle), et lorsque je les régénère , j'aimerais copier uniquement ceux qui ont changé dans le répertoire source réel, laissant les inchangés inchangés (avec leurs anciens temps de création) afin que make
sachent qu’il n’est pas nécessaire de les recompiler. (Tous les fichiers générés ne sont pas des .c
fichiers, cependant, je dois donc faire des comparaisons binaires plutôt que des comparaisons de texte.)
(Remarque: ceci découle de la question que j'ai posée à l' adresse https://stackoverflow.com/questions/8981552/speeding-up-file-comparions-with-cmp-on-cygwin/8981762#8981762 , où j'essayais. pour accélérer le fichier de script que j'utilisais pour effectuer cette opération, mais il me semble que je devrais vraiment demander s'il existe un meilleur moyen de le faire que d'écrire mon propre script - en particulier depuis tout moyen simple de le faire dans un shell Le script invoquera quelque chose comme cmp
sur chaque paire de fichiers, et le démarrage de tous ces processus prend trop de temps.)
rsync -avnc
ou le long chemin à parcourir rsync --archive --verbose --dry-run --checksum
.
diff -qr dirA dirB
pour voir quels fichiers sont uniquesdirA
etdirB
, respectivement.