Kopieren einer Datei nur, wenn sie neuer als das Ziel ist

36

Wie kopiere ich eine Datei unter Linux nur, wenn die zu kopierende Datei neuer ist als die Version am Ziel?

Wenn die Datei am Zielort neuer ist, soll die Dateikopie nicht fortgesetzt werden.

Eli
quelle

Antworten:

17

Verwenden Sie rsync

rsync --progress -r -u /from/one/* /to/another/directory
Gnod
quelle
3
Nur der Vollständigkeit -rhalber : bedeutet rekursives Ablegen in Unterverzeichnisse und -uAufbewahren neuerer Dateien am Zielort (= Update). --progressZeigt Fortschrittsinformationen während des Betriebs an.
Jörg Gottschlich
6

Sie sagen nicht, welche Shell Sie verwenden, also gehe ich davon aus ksh:

if [[ file1 -nt file2 ]]; then cp file1 file2; fi
Kusalananda
quelle
Ist bash nicht am häufigsten?
Rob
1
@ Rob, ja. Dies funktioniert natürlich auch in Bash. Ich hatte gerade kein Bash (oder keine Standard-Linux-Box) zur Hand, als ich es schrieb.
Kusalananda
4

yes|cp -ruv /from/* /to/.
yes - Beantworten Sie alle Fragen mit yes.
r - Rekursives
u - Update
v - Fortschritt

funktioniert wie xargs .

Ich weiß nicht, wie ich es akademisch erklären soll.

So erzwingen Sie das Überschreiben von cp ohne Bestätigung

Felippe Silvestre
quelle
1
Das ist irgendwie kryptisch. Können Sie Ihre Antwort etwas präziser formulieren, vielleicht ein Beispiel hinzufügen? Vielen Dank. Aus Bewertung
fixer1234
Ja -> Beantworten Sie alle Fragen mit Ja.
Felippe Silvestre