2
votes

Existe-t-il un moyen de vérifier si `cp -r` écraserait quelque chose?

Y a-t-il un moyen de vérifier si cp -r écraserait quelque chose, sans rien copier?

-n semble copier des fichiers qui n'entrent pas en collision, ce qui n'est pas ce que je veux.


3 Réponses :


2
votes

Le moyen le plus simple est d'utiliser la commande rsync là où vous avez beaucoup de paramètres pour remplacer la cible ou supprimer des fichiers sur la cible si vous le souhaitez.

https://linux.die.net/man/1/rsync

ou similaire mentionné dans les commentaires, vous pouvez utiliser cp -n pour --no-clobber . Mais en général, je suggérerais rsync là où vous avez beaucoup plus de possibilités.


2 commentaires

Se mettre d'accord. Si vous avez besoin de savoir, cp n'est pas le bon outil.


Notez que cp a l'option -i --interactive et l'option -n, --no-clobber.



0
votes

cp a l'option -i --interactive et l'option -n, --no-clobber. Voir `man 1 cp '.


0 commentaires

0
votes

Pour vérifier uniquement si le fichier existe à l'emplacement cible, mais pour n'effectuer aucune copie, vous pouvez utiliser la commande diff avec l'option -r .

De man diff :

-r, --recursive
comparer récursivement tous les sous-répertoires trouvés

Files /source-folder/file1.txt and /target-folder/file1.txt are identical
Files /source-folder/file2.jpg and /target-folder/file2.jpg differ
  • --brief répertorie les fichiers qui diffèrent (identique à -q )
  • --report-identiques-files fait de même pour les fichiers qui ne diffèrent pas (comme -s )
  • Le grep -v '^ Only in' supprime les fichiers qui ne se trouvent que dans une arborescence de répertoires, car ils ne seront pas écrasés.

La sortie ressemblera à ceci:

diff -r --brief --report-identical-files /source-folder/ /target-folder/ | grep -v '^Only in'


0 commentaires