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

2020-03-01 17:06:27 +08:00
 yao990

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

13269 次点击
所在节点    Linux
64 条回复
momocraft
2020-03-01 17:08:38 +08:00
rsync ?
misaka19000
2020-03-01 17:08:58 +08:00
rsync
xupefei
2020-03-01 17:10:27 +08:00
cp -u
Enya
2020-03-01 17:10:28 +08:00
rsync
楼下请保持阵型
nita22
2020-03-01 17:11:10 +08:00
rsync
leoleoasd
2020-03-01 17:14:58 +08:00
rsync
westoy
2020-03-01 17:16:54 +08:00
DRBD
yao990
2020-03-01 17:20:03 +08:00
@Enya @leoleoasd @misaka19000 @momocraft @nita22 @xupefei
rsync 不是用于远程-本地或本地-远程的嘛?本地-本地也可以实现?
westoy
2020-03-01 17:24:15 +08:00
@yao990

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

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

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

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

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

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

© 2021 V2EX