我从来没有真正学会使用rsync
——每当我需要复制/同步时,我都会考虑它,然后决定不,我只会用scp
。
但这可能不是一个好主意,尤其rsync
是对于更新备份。要是我知道怎么用就好了……每当我决定真的应该用它rsync
完成某项同步工作时,我就会阅读大量的手册/互联网建议,被大量的选项弄得晕头转向,在真正得到我想要的结果之前,我尝试了其中的几种,然后很快就忘记我是怎么做到的了。
因此,为了获得用过的最后rsync
,我正在寻找简单的经验法则。特别是,似乎“标准”用法通常涉及标志-a
,手册称其表示“存档”,并列出了它的一些功能,但让我困惑的是,我为什么真的想要它们,特别是如果我可能有理由不是想要其中一些。
因此我的问题是:如果我养成了默认使用复制文件的习惯rsync -av
,那么在出现这种情况时我应该注意什么情况?不是一个好主意?
答案1
你什么时候应该不是使用rsync -av
?
总结:当您不想要-a
或提供的行为时-v
,请不要使用这些选项!
此外,戈登·戴维森指出另一个例外:
如果您没有以 root 身份运行它(在目标系统上),或者源系统或目标系统之间的用户和组 ID 不匹配,您可能不想(/无法)保留用户、组、设备和特殊文件。
和异种提出了一个观点添加-av
:
还有一些情况您可以添加到
-av
,-av --delete
将用镜像替换添加的备份(请小心使用(即先尝试使用-n|--dry-run
),否则如果您匹配错误的目录,您的备份可能会被删除。
-v
(增加详细程度)
先说简单的:-v
从rsync 手册页:
-v, --verbose increase verbosity
这个效果非常直观。如果您不关心传输信息,请忽略它。
-a
(存档模式)
好的,archive
模式。为此,值得一读rsync 中的归档模式是什么?关于服务器故障。
Andrew 的回答很好列出了其包含的模式:
-r, --recursive 递归进入目录
-l, --links 将符号链接复制为符号链接
-p, --perms 保留权限
-t, --times 保留修改时间
-g, --group 保留组
-o, --owner 保留所有者(仅限超级用户)
-D 与 --devices --specials 相同
--devices 保留设备文件(仅限超级用户)
--specials 保留特殊文件
和排除:
-H, --hard-links 保留硬链接
-A, --acls 保留 ACL(隐含 -p)
-X, --xattrs 保留扩展属性
正如他指出的那样,非常适合备份;因为如果您正在备份,您会想要制作一份您正在备份的数据的精确副本,以及有关文件的信息。
那么为什么你不想使用-a
呢?
一般来说,如果你处在不想要的境地-a
,你就会知道。也许:
- 您想从目录复制文件,但不复制其子目录(因此不行
-r
) - 您要复制的符号链接是实际文件 =,因为您的目标文件系统不支持符号链接(否
-l
) - 你不关心权限(否
-p
) - 您想更新修改时间(否
-t
)
最后一个可能是最明显的用例。