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