Ich möchte eine Reihe von Dateien von Verzeichnis A in Verzeichnis B kopieren, mit dem Vorbehalt, dass, wenn eine Datei in Verzeichnis A mit einer Datei in Verzeichnis B identisch ist, diese Datei nicht kopiert werden sollte (und daher ihre Änderungszeit nicht sein sollte) aktualisiert). Gibt es eine Möglichkeit, dies mit vorhandenen Tools zu tun, ohne dafür ein eigenes Skript zu schreiben?
Um ein wenig auf meinen Anwendungsfall einzugehen: Ich .cerstelle automatisch eine Reihe von Dateien in einem temporären Verzeichnis (mit einer Methode, die alle Dateien bedingungslos generieren muss), und wenn ich sie erneut generiere, möchte ich nur kopieren Diejenigen, die sich in das eigentliche Quellverzeichnis geändert haben, lassen die unveränderten (mit ihren alten Erstellungszeiten) unberührt, makedamit Sie wissen, dass sie nicht neu kompiliert werden müssen. (Da es sich bei nicht allen generierten Dateien um .cDateien handelt, muss ich eher binäre Vergleiche als Textvergleiche durchführen.)
(Als Hinweis: Dies ergab sich aus der Frage, die ich unter https://stackoverflow.com/questions/8981552/speeding-up-file-comparions-with-cmp-on-cygwin/8981762#8981762 gestellt hatte , wo ich es versuchte Um die Skriptdatei zu beschleunigen, die ich für diese Operation verwendet habe, sollte ich mich wirklich fragen, ob es einen besseren Weg gibt, als mein eigenes Skript zu schreiben - zumal es eine einfache Möglichkeit gibt, dies in einer Shell zu tun Das Skript ruft so etwas wie cmpfür jedes Dateipaar auf, und das Starten all dieser Prozesse dauert zu lange.)
rsync -avncoder den langen Weg rsync --archive --verbose --dry-run --checksum.
diff -qr dirA dirBum zu sehen , welche Dateien sind einzigartigdirAunddirB, repectively.