我正在使用它cp -ruv sourcedir/ /mnt/destinationdir
来轻松维护文件树的备份。
有时,此命令会告诉我:
remove '/mnt/destinationdir/path/file'
我很惊讶,因为man cp
说:
--update[=UPDATE]
control which existing files are updated;
UPDATE={all,none,none-fail,older(default)}.
-u equivalent to --update[=older]. See below
UPDATE controls which existing files in the destination are
replaced. 'all' is the default operation when an --update option
is not specified, and results in all existing files in the
destination being replaced. 'none' is like the --no-clobber
option, in that no files in the destination are replaced, and
skipped files do not induce a failure. 'none-fail' also ensures
no files are replaced in the destination, but any skipped files
are diagnosed and induce a failure. 'older' is the default
operation when --update is specified, and results in files being
replaced if they're older than the corresponding source file.
何时会cp --update=older
删除目标目录中的所有文件?
编辑:上面的摘录针对的man cp
是 coreutils 9.5,我实际上使用的是 9.1,它具有较少的更新控制,但从该手册页来看,我猜它的行为不应该有所不同。
是的,
--update
保持目的地与源同步,它不是一个备份选项。older
表示进程检查对象是否已更改的主要标志是日期。如果源对象的创建/修改日期较新(目标对象的创建/修改日期较旧),则替换目标对象。保持目标与源同步意味着在源中已删除或更改的对象将在目标中被删除或更改。备份会保留在源中已删除的对象,并保留在源中已更改的对象的先前版本。
同步的目的是保留两个(或更多)可用的文件副本。它更多的是冗余或弹性,而不是备份。