Wie kopiere ich eine Datei nur, wenn sich die Dateigrößen zwischen src / dst unterscheiden?

318
fredrik

Ich möchte eine Dateikopie wie:

cp --verbose /srcfile /dstfile 

Ich möchte die Kopie dstfilejedoch nur ausführen, wenn sie nicht existiert oder wenn die dstfileDateigröße von der Dateigröße abweicht srcfile.

Wie kann man dies zB mit einem cpanderen gängigen Werkzeug zum Kopieren von Dateien in bash tun ?

1

1 Antwort auf die Frage

0
Lenniey

Wirklich nicht der eleganteste Weg:

if [ -e /dstfile ] ; then destsize=$(stat -c %s /dstfile) srcsize=$(stat -c %s /srcfile) if [ "$srcsize" -ne "$destsize" ] ; then cp --verbose /srcfile /dstfile fi fi 

Sie können auch versuchen, sich an Rsync zu gewöhnen

Hm, im Idealfall würde ich einen Einliner brauchen, und wie Sie sagen, wirkt das komplex. Über rsync; Denken Sie, dass es eine einzelne Datei kopieren kann, oder braucht es immer ein Verzeichnis als Eingabe? fredrik vor 8 Jahren 0
Nun, ein Einliner würde nicht unbedingt "weniger komplex" erscheinen, sondern wollte Sie nur in die richtige Richtung weisen. Ich weiß nicht was du erreichen willst * genau *. Versuchen Sie also `rsync` mit dem Schalter` --size-only` oder `--checksum` Lenniey vor 8 Jahren 0