Ich habe Verzeichnis a und Verzeichnis b. Sie sind groß. b ist fast identisch mit a. „Fast“ bedeutet, dass sich 4-5 Dateien unterscheiden und ich nicht weiß, welche das sind. Ich möchte b über a kopieren, aber nur die Dateien, die sich unterscheiden. Ich bin in Bash.
(nein, ich kann a nicht einfach löschen und durch b ersetzen, weil 1) a einer Versionskontrolle unterliegt und 2) eine vollständige Kopie (oder ein mv) zu viel Zeit in Anspruch nehmen würde. Ich möchte nur die Dateien kopieren, die sich unterscheiden.)
Antwort1
Sie können rsync
hierfür den folgenden Befehl verwenden:rsync -tr "folder to copy from" "folder to copy to"
z.Brsync -tr /home/me/stuff/* /home/me/otherstuff/
Antwort2
Dies ist auch mit der guten alten Methode möglich cp
:
Danke an srcspider für die Erinnerung, zu verwenden -T
!
cp -ruT old-dir new-dir
Antwort3
Eine weitere gute Option ist Unison (http://www.cis.upenn.edu/~bcpierce/unison/), insbesondere wenn es nicht wirklich eine „Quelle“ und ein „Ziel“ gibt. Jedes Verzeichnis ist ein Stammverzeichnis und Unison synchronisiert sie und speichert Metadaten für zukünftige Synchronisierungen. Es bietet sowohl eine Befehlszeilen- als auch eine GUI-Option, die auch einfach über Cron geplant werden kann.
Ich verwende es, um ein Backup meiner Dropbox auf meinem lokalen NAS-Gerät zu erstellen, auf dem kein Dropbox-Client ausgeführt werden kann.
Antwort4
Sie können die beiden Verzeichnisse vergleichen.
diff -r Verzeichnis1 Verzeichnis2
Es wird Ihnen die Liste der Dateien angezeigt, die unterschiedlich sind