Answers:
我会尝试,
rsync -a /from/file /dest/file
您可以使用其他选项,如--append
,-P (--partial --progress)
。有关更多信息,请参见man rsync。
或者,如果您正在使用,请cp
使用cp -u
。
来自man cp
:
-u, --update
copy only when the SOURCE file is newer than the destination file or when the destination file is missing.
cp -u
可能并不在意,因为它仅检查时间戳,而不检查大小...因此,touch
如果必须使用它,则需要先获取源文件。(或只是使用rsync
。)
对于部分文件传输,cp
可能不是您所需要的。
我建议rsync
改用。即使传输失败,您也可以稍后稍后重新运行该命令,它只会复制丢失的文件。
例:
$ rsync -aPEmivvz from/ to/
(将复制from/
到to/
目录中)
由于rsync
每次传输后都会进行同步和检查,因此确保正确复制文件非常简单。
该SWICH集-aPEmivvz
是我的标准去到的选择,只要复制文件通过网络或外部驱动器,包括插入式设备,如SD卡,等等。
这些是我几乎总是使用的开关:
-a
:“归档”,包括-rlptgo
(递归,作为符号链接的符号链接,权限,时间,组,所有者)
-P
:“部分进度”显示每个文件的进度条
-E
:“可执行性”保留是否可执行
-m
:“ noempty”修剪空目录
-i
:所有更新的“摘要”打印更改摘要
-vv
:“更详细”
-z
:“压缩”
您不应该cp
为此使用。正如其他人所言,这不是完成这项工作的正确工具。正确的工具将取决于您的目标。
如果您只想直接复制:
rsync /source /destination
带有一些标志。有关其他一些非常好的示例,请参见其他答案。
如果要进行双向更新
unison
是要走的路。Rsync在双向同步的冲突解决方面做得不好。特别删除。所以你想双向复制unison
如果您要备份并且文件是基于文本的,则可以尝试使用git
。Git可以在本地运行,不需要“服务器”。实际上,git服务器只是文件共享方法。您完全可以在备份驱动器上有一个git repo并“推送”到它。同样,这仅在文件基于文本并且您试图获得单向备份的情况下才有效。
同样,如果您要备份(而不仅仅是一次),那么请查看deja-dupe,BackIntime或类似选项。他们在某个时间点拍摄数据快照。它们都在后台运行rsync。