J'ai le répertoire a et le répertoire b. Ils sont grands. b est presque identique à a. "presque" signifie que 4 à 5 fichiers diffèrent, et je ne sais pas de quoi il s'agit. Je veux copier b sur a, mais seulement les fichiers qui diffèrent. je suis en bash.
(non, je ne peux pas simplement supprimer a et le remplacer par b, car 1) a est contrôlé par version 2) une copie complète (ou un mv) prendrait trop. Je veux copier uniquement les fichiers qui diffèrent).
linux
bash
cp
file-transfer
janesconference
la source
la source
rsync
une option?Réponses:
Vous pouvez utiliser
rsync
pour ce faire, la commande que j'utilise estrsync -tr "folder to copy from" "folder to copy to"
par exemple
rsync -tr /home/me/stuff/* /home/me/otherstuff/
la source
Il est également possible de le faire avec du bon vieux
cp
:Merci à srcspider de m'avoir rappelé de l'utiliser
-T
!cp -ruT old-dir new-dir
la source
Une autre bonne option est Unison ( http://www.cis.upenn.edu/~bcpierce/unison/ ), surtout s'il n'y a pas vraiment de "source" et de "destination". Chaque répertoire est une racine et Unison les synchronise et conserve les métadonnées pour les futures synchronisations. Il offre à la fois une ligne de commande et une option GUI qui peuvent également être facilement planifiées via cron.
Je l'utilise pour faire une sauvegarde de ma Dropbox sur mon appareil NAS local qui ne peut pas exécuter un client Dropbox.
la source
Cela peut être fait avec un bon vieux cp, mais avec un format légèrement différent de celui indiqué ci-dessus. Voici comment je l'ai fait:
la source
Vous pouvez différencier les 2 répertoires.
diff -r dir1 dir2
il vous montrera la liste des fichiers qui sont différents
la source