我做了“rsync -ap -numeric-id -delete-during / mnt / RAIDVault / / mnt / RAIDVault-BACKUP /”,意图使两个存储单元同步(具有相同的内容),但是以不同数量的空闲磁盘空间上的两个:
/dev/md1 2.0T 2.0T 81G 96% /mnt/RAIDVault /dev/md0 2.0T 2.0T 79G 97% /mnt/RAIDVault-BACKUP /dev/md1 1951405544 1873160540 78245004 96% /mnt/RAIDVault /dev/md0 1951405544 1874906476 76499068 97% /mnt/RAIDVault-BACKUP
我在这里摸不着头脑,因为我不知道为什么会发生这种情况,也不知道从哪里开始排除故障。 没有错误,rsync完成了一次传输就好了,一切看起来都很好,“uptodate”。
然而不知何故/ dev / md0在应该是“A镜像到B镜像”传输之后less了2千兆字节。
df输出是用“df –sync”生成的。 我认为这是一个可靠的数字。 df永远不会说谎,是吗?
/ dev / md0和/ dev / md1之间的一个重要的区别是即使两者都是raid1软件types的raid / dev / md0目前只有1个数组成员。 我想知道这是否是在df的报告中导致不同的数字?
所以,我的问题有两个:
2个数据丢失是重要的。 如果大小增长了2G,那么会有一些简单的解释:硬链接变成了重复文件,带有漏洞的文件变成了完整的文件,等等。 这些是完全合理的解释。
然而,由于新的规模较小,你应该做一个比较,看看有什么变化。 您不希望处于从现在起5个月内意识到有问题并且没有有效备份的情况。
备份并不重要。 恢复很重要。 除非我们validation备份,否则我们不知道还原是否有效。
对于less量的文件,你可以做diff -r /mnt/RAIDVault /mnt/RAIDVault-BACKUP
。 但是,如果中途停止,则不能从停止的地方重新启动。
对于大量的文件,我build议计算所有文件的哈希值并寻找差异。 这样,如果进程停止或中断,你可以继续没有太大的困难。
这是一个程序,它将生成目录中所有文件的md5哈希值:
#!/usr/local/bin/perl # md5tree: Output file data information for comparison use Digest::MD5; use File::Find (); # Default to "." unless things are speced on the cmd line. if ($#ARGV == -1) { @DIRS = ( '.' ); } else { @DIRS = @ARGV; } &File::Find::finddepth(\&wanted, @DIRS); exit; sub wanted { (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) && -f _ && ((-s _) > 0) && &doit($_, $File::Find::dir, -s _, $mode, $uid, $gid); } sub doit { my($fn, $dir, $size, $mode, $uid, $gid) = @_; return 0 if $fn =~ m/[\r\n]+/; open(FILE, "<$fn") or die "Can't open '$dir/$fn': $!"; binmode(FILE); print Digest::MD5->new->addfile(*FILE)->hexdigest, "\t$size\t$uid\t$gid\t$mode\t$dir/$fn\n"; return 0; }
你可以像这样使用它:
# md5tree /mnt/RAIDVault-BACKUP >/var/tmp/list.backup # md5tree /mnt/RAIDVault >/var/tmp/list.orig # NOTE: For these next 2 lines TAB means press the TAB key. # sort -t'TAB' -k6 </var/tmp/list.backup >/var/tmp/list.backup.sorted # sort -t'TAB' -k6 </var/tmp/list.orig >/var/tmp/list.orig.sorted # diff /var/tmp/list.orig.sorted /var/tmp/list.backup.sorted
我有兴趣知道你find了什么区别!
在https://sanitarium.net/rsyncfaq/#differentsizes上的rsync FAQ页面上有一个很好的详细的答案
源和目标可能具有不同大小的原因有很多:
上次看到这种情况时,目标副本位于文件系统,不区分大小写的文件名。 主人有文件叫foo
和FOO
。 目的地认为这些文件名是相同的,所以备份过程将foo
复制到foo
,然后将FOO
复制到foo
。 于是,我们失去了原来的foo
。 我们以这种方式丢失了很多文件。