
一台安装了 centos7 的电脑,有目录 A 和目录 B,目录 A 中有二三四级目录及文件若干,现需要每天将目录 A 中的所有文件增量同步到目录 B 中,使用 cp -nr 命令无法实现,请问如何解决?
1 momocraft Mar 1, 2020 rsync ? |
2 misaka19000 Mar 1, 2020 rsync |
3 xupefei Mar 1, 2020 cp -u |
4 Enya Mar 1, 2020 via iPhone rsync 楼下请保持阵型 |
5 nita22 Mar 1, 2020 rsync |
6 leoleoasd Mar 1, 2020 rsync |
7 westoy Mar 1, 2020 DRBD |
8 yao990 OP |
10 xupefei Mar 1, 2020 @yao990 rsync 是为了网络传输设计的,本地-本地是顺带的。cp -u 和 rsync 没有实质区别。都不能保证 data consistency。 硬要说的话,cp 的 CPU 占用低一点儿…… |
12 yao990 OP @xupefei 我试了 cp -u ,但是发现,子目录里的文件依然没有被同步,我总觉得,cp 只看了下两个二级目录一样,然后对二级目录下面的三四级目录和文件就忽略过去了 |
13 xupefei Mar 1, 2020 |
17 yao990 OP @westoy 我刚才尝试执行 rsync -a /A /B ,我发现 rsync 在挨个对比每个在 B 目录中已存在的文件,对于 A 目录中存在 B 目录中不存在的文件视而不见,即使已经将这个目录对比完成了,也没有去将 B 目录不存在的文件从 A 目录复制到 B 目录。 另,是不是每次复制都要进行一次对比过程?因为 A 和 B 目录都很大,大小在 200+GB,如果每次都对比会不会太费资源了? |
18 cev2 Mar 1, 2020 @yao990 #14 #16 你 -rn 干嘛?你试试 cp -au doc/ doc-bak/ 进行单向增量备份,双向同步可以正反执行 2 次实现,我在 Ubuntu 18.04 测试时没问题的。#测试请前备份数据# |
19 encro Mar 1, 2020 你这需求,象要一个 git |
20 encro Mar 1, 2020 如果每次都对比会不会太费资源了? 省资源的话,需要做一个服务端,监控目录事件,收到事件后触发同步。 |
21 yao990 OP @cexid 刚试过了,没用,几秒钟就结束了,然而该复制的文件一个都没有复制,你的目录结构可能比较简单,我这边可能是因为二级、三级、四级目录太多的原因吧,,,, 严重怀疑 cp 只是对比了一下二级目录的名字,发现一样,就认为两个目录是一样的。。 |
22 encro Mar 1, 2020 如果每次都对比会不会太费资源了? 你需要的是一个不耗资源的实时同步。 Linux 下 rsync+inotify 实现实时文件自动同步 https://www.linuxidc.com/Linux/2017-12/149355.htm lsyncd 多机器实时同步文件神器 https://shockerli.net/post/linux-tool-lsyncd/ |
23 link0502 Mar 1, 2020 只从用了 NextCloud,干啥都用它。 两个机器都安装上客户端,同步吧,还带版本控制。 |
25 encro Mar 1, 2020 还有一个 Syncthing。 https://github.com/syncthing/syncthing |
29 yao990 OP @cexid 当我新建目录专门用来测试时,这个命令能成功完成,但是当我拿到生产环境执行时,就不行了,甚至我加上-v 时,也没有任何提示,就好像没有执行一样 |
31 yao990 OP |
32 yixiang Mar 1, 2020 ln -s 建立符号链接不行么? |
34 xe2vherd Mar 1, 2020 软链接不可以吗 |
36 yao990 OP @cexid /home 是 xfs,/toshiba 是 ntfs,安装了 ntfs-3g,能正常访问和读写,初次向 /toshiba 目录复制时一切正常,从第二次就不行了,但是手动一个一个的复制依然能复制进去,说明硬盘好着呢,就是增量复制就不行了 |
37 cev2 Mar 1, 2020 @yao990 看来可以结案了,还是暂时换掉 NTFS 吧,毕竟 ntfs-3g 兼容不全,cp 在处理 NTFS 文件时间戳时可能出了问题。要么在 NTFS 上 tar 打包试试,要么换 ext4 在 Windows 读取也有办法。rsync 貌似也可以忽略时间戳问题。 |
39 encro Mar 1, 2020 新鲜出炉的 blog:[多平台实时同步方案比较]( https://c4ys.com/archives/2062) |
40 429463267 Mar 1, 2020 rsync -avR this-linux:/path user@that-linux:/ 完全增量 |
41 April5 Mar 1, 2020 用 rsync 吧,写个脚本以后要备份到远程说不定也可以用 |
42 jin7 Mar 1, 2020 linux rsync 非常好 windows 用 beyond compare |
43 longyueshier Mar 1, 2020 看了下你这个需求就是两个文件之间的增量数据同步问题,大家都把问题想复杂了。 其实很简单就可以完成你的要求 写一条 crontab 定时执行 cp 就好了,还是强制覆盖 B 目录文件 10 8 * * * cp -f 文件绝对路径 /A/* 文件绝对路径 /B/ |
44 july1995 Mar 1, 2020 via iPhone 没人推荐 syncthing 嘛,我自己用这个同步我自己电脑的文件到 nas,配置好以后不用管,有文件更改,自动同步。开源,免费,全平台。 |
45 flowercoder Mar 2, 2020 linux 磁盘格式还是很重要的 一般我是 xfs 或是 ext4,其他的一般都不会选。 |
46 1nakaELYBbsXbZxY Mar 2, 2020 rsync |
47 xiaobai555 Mar 2, 2020 via Android 可以考虑 inotify 配合 rsync |
48 littlezzll Mar 2, 2020 via Android initifywait+rsync |
49 fox0001 Mar 2, 2020 via Android 我的家用服务器就是 rsync 进行备份的 |
50 RRRoger Mar 2, 2020 rsync |
51 fitmewell Mar 2, 2020 via Android 换个思路,用 git 或者 svn 本地仓库? |
52 faywong8888 Mar 2, 2020 rsync +1,最好的易用的增量同步方案。 |
53 CasparLi Mar 2, 2020 rsync 啊.... |
54 encro Mar 2, 2020 @july1995 我前面推荐了啊,syncthing 全平台还差了一个 iOS,我的 blog 里面也有推荐 Seafile 和 nextcloud 倒是全平台的。 |
55 yao990 OP @encro 已拜读,我昨天用 rsync 解决了这个问题,问题本质是同一台机器里的两个不同目录之间的增量复制,但是由于两个目录分别位于两个硬盘上,源目录是 xfs 格式,目标目录是 ntfs,而 cp 在 ntfs 上有个时间戳问题,导致复制出错,而 rsync 不存在这个问题。 |
57 yao990 OP @longyueshier cp 在不同文件系统中存在时间戳问题会导致复制出错,最后用 rsync 解决了 |
59 yao990 OP @flowercoder 本地磁盘都是 xfs,而那个 ntfs 是移动硬盘,要在不同的地方读取,为了方便,就用了 ntfs |
61 catcalse Mar 3, 2020 lftp |
64 zooqkl01 Mar 24, 2020 ln -s A B 软连接不就解决了吗 |