如何在 Linux 上实现两个本地目录的同步(或增量拷贝)?

2020 年 3 月 1 日
 yao990

一台安装了 centos7 的电脑,有目录 A 和目录 B,目录 A 中有二三四级目录及文件若干,现需要每天将目录 A 中的所有文件增量同步到目录 B 中,使用 cp -nr 命令无法实现,请问如何解决?

14882 次点击
所在节点    Linux
64 条回复
momocraft
2020 年 3 月 1 日
rsync ?
misaka19000
2020 年 3 月 1 日
rsync
xupefei
2020 年 3 月 1 日
cp -u
Enya
2020 年 3 月 1 日
rsync
楼下请保持阵型
nita22
2020 年 3 月 1 日
rsync
leoleoasd
2020 年 3 月 1 日
rsync
westoy
2020 年 3 月 1 日
DRBD
yao990
2020 年 3 月 1 日
@Enya @leoleoasd @misaka19000 @momocraft @nita22 @xupefei
rsync 不是用于远程-本地或本地-远程的嘛?本地-本地也可以实现?
westoy
2020 年 3 月 1 日
@yao990

rsync 骚操作大全系列之快速删除海量文件就是同步一个本地空目录.......
xupefei
2020 年 3 月 1 日
@yao990 rsync 是为了网络传输设计的,本地-本地是顺带的。cp -u 和 rsync 没有实质区别。都不能保证 data consistency。
硬要说的话,cp 的 CPU 占用低一点儿……
yao990
2020 年 3 月 1 日
@westoy 张见识了,还有这种操作,,,,,,
yao990
2020 年 3 月 1 日
@xupefei 我试了 cp -u ,但是发现,子目录里的文件依然没有被同步,我总觉得,cp 只看了下两个二级目录一样,然后对二级目录下面的三四级目录和文件就忽略过去了
xupefei
2020 年 3 月 1 日
cev2
2020 年 3 月 1 日
@yao990 你这是没有递归,再加上 -r 试试
yao990
2020 年 3 月 1 日
@xupefei
-f 和-u 不会冲突嘛?
-f 是强制复制已存在,-u 是仅当文件更新或不存在时再复制。
yao990
2020 年 3 月 1 日
@cexid 我试了 cp -rn 但是没用
yao990
2020 年 3 月 1 日
@westoy 我刚才尝试执行 rsync -a /A /B ,我发现 rsync 在挨个对比每个在 B 目录中已存在的文件,对于 A 目录中存在 B 目录中不存在的文件视而不见,即使已经将这个目录对比完成了,也没有去将 B 目录不存在的文件从 A 目录复制到 B 目录。
另,是不是每次复制都要进行一次对比过程?因为 A 和 B 目录都很大,大小在 200+GB,如果每次都对比会不会太费资源了?
cev2
2020 年 3 月 1 日
@yao990 #14 #16 你 -rn 干嘛?你试试 cp -au doc/ doc-bak/ 进行单向增量备份,双向同步可以正反执行 2 次实现,我在 Ubuntu 18.04 测试时没问题的。#测试请前备份数据#
encro
2020 年 3 月 1 日
你这需求,象要一个 git
encro
2020 年 3 月 1 日
如果每次都对比会不会太费资源了?

省资源的话,需要做一个服务端,监控目录事件,收到事件后触发同步。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/648863

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX