Как скопировать файл, только если размеры файлов между src / dst отличаются?

261
fredrik

Я хочу выполнить копию файла, как:

cp --verbose /srcfile /dstfile 

Но я хочу выполнить копию только в том случае, если dstfileона не существует или dstfileразмер файла отличается от размера файла srcfile.

Как это можно сделать с помощью, например, cpили другого распространенного инструмента копирования файлов в bash?

1

1 ответ на вопрос

0
Lenniey

Really not the most elegant way:

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 

You could also try to get used to rsync

Хм, в идеале мне понадобится одна строка, и, как вы говорите, это кажется сложным. О rsync; Как вы думаете, он может скопировать один файл или он всегда принимает каталог в качестве входных данных? fredrik 8 лет назад 0
Ну, однострочник не обязательно «кажется» менее сложным, просто хотел бы указать вам правильное направление. Я не знаю, чего вы хотите достичь * точно *. Так что попробуйте `rsync` с ключом` --size-only` или `--checksum` Lenniey 8 лет назад 0

Похожие вопросы