如何比较重复目录之间的文件大小匹配?
How can I compare the file sizes match between duplicate directories?
我需要比较两个目录来验证备份。
假设我的目录如下所示:
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
你有什么建议?
默认情况下,rsync 使用快速检查 方法,它只传输大小或最后修改时间不同的文件。当您报告大小没有变化时,这似乎表明时间戳不同。处理此问题的两个选项是:
传输文件时使用-p
保留时间戳。
使用--size-only
忽略时间戳并仅传输大小不同的文件。
我需要比较两个目录来验证备份。
假设我的目录如下所示:
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
你有什么建议?
默认情况下,rsync 使用快速检查 方法,它只传输大小或最后修改时间不同的文件。当您报告大小没有变化时,这似乎表明时间戳不同。处理此问题的两个选项是:
传输文件时使用
-p
保留时间戳。使用
--size-only
忽略时间戳并仅传输大小不同的文件。