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

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

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

12838 次点击
所在节点    Linux
64 条回复
yao990
2020-03-01 18:59:19 +08:00
@cexid 刚试过了,没用,几秒钟就结束了,然而该复制的文件一个都没有复制,你的目录结构可能比较简单,我这边可能是因为二级、三级、四级目录太多的原因吧,,,,
严重怀疑 cp 只是对比了一下二级目录的名字,发现一样,就认为两个目录是一样的。。
encro
2020-03-01 19:00:49 +08:00
如果每次都对比会不会太费资源了?

你需要的是一个不耗资源的实时同步。


Linux 下 rsync+inotify 实现实时文件自动同步
https://www.linuxidc.com/Linux/2017-12/149355.htm

lsyncd —— 多机器实时同步文件神器
https://shockerli.net/post/linux-tool-lsyncd/
link0502
2020-03-01 19:01:34 +08:00
只从用了 NextCloud,干啥都用它。
两个机器都安装上客户端,同步吧,还带版本控制。
cev2
2020-03-01 19:03:29 +08:00
@yao990 不会呀,我看了你的描述特地多建了几层目录测试,-au 没问题呀,你再测试试试,或者你的文件权限有没有啥问题呀
encro
2020-03-01 19:04:37 +08:00
yao990
2020-03-01 19:10:27 +08:00
@link0502 不是两个机器之间,是同一个机器上的两个目录
yao990
2020-03-01 19:20:57 +08:00
@cexid 我又试了一次,将文件权限改为 775,用 root 复制,依然不行,,不知道问题出在哪
cev2
2020-03-01 19:31:30 +08:00
@yao990 这太奇怪了呀,你不妨贴上终端的信息来看看,还有你输入的命令确定没有问题?比如命令中的路径使用 / 结尾或 /* 。
yao990
2020-03-01 19:38:55 +08:00
@cexid 当我新建目录专门用来测试时,这个命令能成功完成,但是当我拿到生产环境执行时,就不行了,甚至我加上-v 时,也没有任何提示,就好像没有执行一样
yao990
2020-03-01 19:40:40 +08:00
@cexid 命令如下
# cp -auv /home/cx/图片 /run/media/toshiba/bak/图片
yao990
2020-03-01 19:41:57 +08:00
@cexid 终端没有任何提示,直接就到下一个命令提示符了,如下:
# cp -auv /home/cx/图片 /run/media/toshiba/bak/图片
#
yixiang
2020-03-01 19:42:29 +08:00
ln -s 建立符号链接不行么?
yao990
2020-03-01 19:48:04 +08:00
@yixiang 我是用来备份文件的,但是又不想备份成 tar 等压缩格式,,
zmxnv123
2020-03-01 19:48:05 +08:00
软链接不可以吗
cev2
2020-03-01 19:58:47 +08:00
@yao990 看这路径,莫非是 NTFS、exFAT 文件系统的问题,生产环境中是否内核太久或未安装相关文件系统模块?
yao990
2020-03-01 20:08:14 +08:00
@cexid /home 是 xfs,/toshiba 是 ntfs,安装了 ntfs-3g,能正常访问和读写,初次向 /toshiba 目录复制时一切正常,从第二次就不行了,但是手动一个一个的复制依然能复制进去,说明硬盘好着呢,就是增量复制就不行了
cev2
2020-03-01 20:19:22 +08:00
@yao990 看来可以结案了,还是暂时换掉 NTFS 吧,毕竟 ntfs-3g 兼容不全,cp 在处理 NTFS 文件时间戳时可能出了问题。要么在 NTFS 上 tar 打包试试,要么换 ext4 在 Windows 读取也有办法。rsync 貌似也可以忽略时间戳问题。
yao990
2020-03-01 20:24:52 +08:00
@cexid 我试试,谢啦
encro
2020-03-01 20:55:39 +08:00
新鲜出炉的 blog:[多平台实时同步方案比较]( https://c4ys.com/archives/2062)
429463267
2020-03-01 21:11:53 +08:00
rsync -avR this-linux:/path user@that-linux:/

完全增量

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

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

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

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

© 2021 V2EX