我已尝试rsync --compare-dest
按预期开始工作,但我需要一些帮助。我的目标是为 CentOS 创建离线存储库增量。我有一台连接到 Internet 的服务器,用于存储 CentOS 镜像。我的离线系统有一个基线,我想创建增量文件,因为我需要在光盘上携带更新。
我知道围绕同一问题有很多主题,但我无法使其发挥作用。
这是我如何尝试让一个简单的示例起作用的解释:
[xttomfal@protectera-CentOS-Internet ~]$ ls testdiff1
testfil1 testfil2 testfil3
[xttomfal@protectera-CentOS-Internet ~]$ ls testdiff2
testfil1 testfil2
复制同名文件,意味着内容完全相同。现在我创建了一个名为的目录diffresult/
,我希望将 testfil3 复制到其中。
如果我比较目录
[xttomfal@protectera-CentOS-Internet ~]$ diff testdiff1 testdiff2
Only in testdiff1: testfil3
[xttomfal@protectera-CentOS-Internet ~]$
然后我尝试了很多不同的 rsync Compare-dest 命令,例如:
[xttomfal@protectera-CentOS-Internet ~]$ rsync -av --progress --stats --compare-dest=testdiff1 testdiff2/ diffresult/
sending incremental file list
--compare-dest arg does not exist: testdiff1
./
testfil1
9 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=1/3)
testfil2
9 100% 8.79kB/s 0:00:00 (xfr#2, to-chk=0/3)
Number of files: 3 (reg: 2, dir: 1)
Number of created files: 2 (reg: 2)
Number of deleted files: 0
Number of regular files transferred: 2
Total file size: 18 bytes
Total transferred file size: 18 bytes
Literal data: 18 bytes
Matched data: 0 bytes
File list size: 0
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 215
Total bytes received: 106
sent 215 bytes received 106 bytes 642.00 bytes/sec
total size is 18 speedup is 0.06
[xttomfal@protectera-CentOS-Internet ~]$ ls diffresult/
testfil1 testfil2
[xttomfal@protectera-CentOS-Internet ~]$
所以问题似乎是复制的文件是显示在两个目录中的文件,而不是 Delta 目录中的文件。
有没有办法只复制目录之间的差异文件?
答案1
有没有办法只复制目录之间的差异文件?
是的。在您的情况下,所缺少的是比较目录是相对于目标的。同样的问题也适用于链接目录。这里的解决方案是使用绝对路径
设想
mkdir /tmp/608927
cd /tmp/608927
mkdir testdiff{1,2} changed
touch testdiff1/testfil{1,2,3}
cp -p testdiff1/testfil{1,2} testdiff2/
测试运行,将文件从testdiff1
复制到changed
,但仅复制那些既不是最新的testdiff2
也不是最新的文件changed
rsync -av --compare-dest "$PWD"/testdiff2/ testdiff1/ changed/
输出
sending incremental file list
./
testfil3
sent 165 bytes received 38 bytes 406.00 bytes/sec
total size is 0 speedup is 0.00
证据
ls changed/
testfil3
请注意,如果您在看起来像本地系统上的目录之间进行复制,rsync
则会有效地降级为制作完整副本(或无副本)。如果您rsync
通过网络连接运行,它可以在每一端运行一个自身的实例,并且您将获得仅传输更改的好处。