Ответ 1
rsync
имеет параметр -u
/--update
, который работает так же, как GNU cp
:
$ rsync -u src dest
версия GNU/Linux cp
имеет приятный --update
флаг:
-u, --updateкопировать только тогда, когда файл SOURCE является более новым, чем файл назначения или когда отсутствует файл назначения
версия Mac OS X cp
не имеет этого флага.
Каков наилучший способ получить поведение cp --update
с помощью встроенных системных команд командной строки? Я хочу избежать установки каких-либо дополнительных инструментов (включая версию GNU cp
).
rsync
имеет параметр -u
/--update
, который работает так же, как GNU cp
:
$ rsync -u src dest
Также смотрите rsync другие параметры, которые, вероятно, вы действительно хотите:
-l, --links copy symlinks as symlinks
-H, --hard-links preserve hard links
-p, --perms preserve permissions
--executability preserve executability
-o, --owner preserve owner (super-user only)
-g, --group preserve group
--devices preserve device files (super-user only)
--specials preserve special files
-D same as --devices --specials
-t, --times preserve times
-a, --archive
This is equivalent to -rlptgoD. It is a quick way of saying you want recursion
and want to preserve almost everything (with -H being a notable omission). The
only exception to the above equivalence is when --files-from is specified, in which
case -r is not implied.
Note that -a does not preserve hardlinks, because finding multiply-linked files is
expensive. You must separately specify -H.