我需要比较两个目录来验证备份。
说我的目录如下所示:
Filename Filesize Filename Filesize
user@main_server:~/mydir/ user@backup_server:~/mydir/
file1000.txt 4182410737 file1000.txt 4182410737
file1001.txt 8241410737 - <-- missing on backup_server!
... ...
file9999.txt 2410418737 file9999.txt 1111111111 <-- size != main_server
是否有快速的衬垫可以让我接近输出,如:
Invalid Backup Files:
file1001.txt
file9999.txt
(目的是指示备份脚本重新获取这些文件)
我试图获得以下内容的变化无济于事。
[main_server] $ rsync -n ~/mydir/ user@backup_server:~/mydir
我不能rsync
来备份目录本身,因为它需要太长时间(8-24小时)。相反,我运行scp
的多个线程来批量获取文件。这定期完成<1小时。但是,我偶尔会发现一些错过的文件(可能是连接丢失)。
速度是优先考虑因素,因此文件大小应该足够。但我愿意加入checksum
,前提是它不会像我在rsync
找到的那样减慢过程。
这是我的测试过程:
# Generate Large Files (1GB)
for i in {1..100}; do head -c 1073741824 </dev/urandom >foo-$i ; done
# SCP them from src to dest
for i in {1..100}; do ( scp ~/mydir/foo-$i user@backup_server:~/mydir/ & ) ; sleep 0.1 ; done
# Confirm destination has everything from source
# This is the point of the question. I've tried:
rsync -Sa ~/mydir/ user@backup_server:~/mydir
# Way too slow
你推荐什么?
答案 0 :(得分:1)
默认情况下,rsync使用快速检查方法,该方法仅传输大小不同或上次修改时间不同的文件。当您报告大小不变时,这似乎表明时间戳不同。处理此问题的两个选项是:
使用-p
在传输文件时保留时间戳。
使用--size-only
忽略时间戳,只传输大小不同的文件。