【问题标题】:How can I compare the file sizes match between duplicate directories?如何比较重复目录之间的文件大小匹配?
【发布时间】:2017-10-25 02:52:36
【问题描述】:

我需要比较两个目录来验证备份。

假设我的目录如下所示:

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 的多个线程来批量获取文件。这定期完成

速度是重中之重,因此文件大小应该足够。但我愿意加入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

你有什么推荐的?

【问题讨论】:

  • 如果您有预算,有商业文件传输解决方案,其性能比 SCP 或 SFTP 好得多。
  • 如果您已经有部分副本,如您所见,rsync 应该比scp 快得多。
  • @John1024,谢谢。我刚刚在测试中尝试过:备份 100 个 1GB 文件(充满 urandom)。我先scp他们。确认所有 100 个都在那里并且文件大小正确。然后我运行 rsync -Sa ~/source/ ~/destination 并看到所有 100 个文件再次同步,这次是通过 rsync。正如你所说,这些不是“部分副本”。它们是相同的副本,通过scp 从一台服务器发送到另一台服务器。我错过了什么?第一个 scp 花了 4 分 44 秒。 rsync(在所有文件都被scp'd 结束之后)花费了 16 分 12 秒。我希望scp 需要 ms。
  • @Ryan 默认情况下,rsync 使用 快速检查 方法,该方法仅传输大小或上次修改时间不同的文件。什么是源文件系统和目标文件系统(ext4、ntfs、...)?或者,有什么东西会影响源或目标上的时间戳吗?
  • @John1024,谢谢!这完全是正确的方向。我添加了-p 以保留时间。文件大小相同,但时间不同。不再。 rsyncscp 中保存时间后立即运行。如果您想在回答中提出建议,我很乐意奖励您的意见。

标签: bash shell backup rsync scp


【解决方案1】:

默认情况下,rsync 使用 快速检查 方法,该方法仅传输大小或上次修改时间不同的文件。当您报告大小未更改时,这似乎表明时间戳不同。处理此问题的两个选项是:

  • 在传输文件时使用-p 保留时间戳。

  • 使用--size-only 忽略时间戳并仅传输大小不同的文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-23
    • 1970-01-01
    • 2019-03-31
    • 2011-07-19
    • 1970-01-01
    • 2012-03-10
    • 2014-05-16
    相关资源
    最近更新 更多