我运行了一个rsync来备份我们的一台生产服务器。 我将生产服务器设置为只读模式,以便不能添加或修改其他数据。 然后,我使用归档(-a)将recursionrsync备份到生产服务器数据目录,以便将其configuration为与生产服务器相同的远程备份。
过了一段时间,我发现备份(目标)服务器最终获得了大约100MB的数据。 这怎么可能 – 这是正常的? 任何想法如何跟踪这个? 现在我正在对生产服务器和备份服务器上的文件执行ls -laR。 然后我会尝试区分这些文件,看看是否有任何差异。 任何其他提示?
我不会过于担心。 毕竟,可能会有稀疏分配的文件。 当这些通过rsync使用的逻辑文件访问进行复制时,未分配的空间将被扩展为零填充区域,因此可以获得更多的空间。 源和目标上的文件大小仍然相同。
顺便说一句,而不是一个差异我可以通过md5sum或sha1sum比较文件校验和。
有一些可能的原因让副本占用与原来不同的空间:
rsync情况下有两个可能的选项(用--sparse选项控制),目标文件将是稀疏的,否则它们不会。 一个正常的cp命令有三个选项:使所有的副本稀疏,使任何副本稀疏,使副本稀疏,如果源。 另外一种可能是某些文件已经从生产服务器上删除,并且rsync还没有被告知从备份中删除文件( --delete -option)。
默认情况下,当rsync发现文件已经从源文件中删除时,它不会从目的文件中删除文件,所以这可能是大小差异的根源。 您可以使用--delete标志定义此行为,还可以指定如何使用--backup和--backup-dir标志来备份目标上已删除/已更改的文件。
这里是一个旧的夜间备份脚本的摘录,使用这个:
rootdir='/usr/local/backup/' cmd_frame='rsync -ave ssh --delete --backup --backup-dir=%s %s %s' logfile=${rootdir}logs/`date +%s.log` backup_root=${rootdir}copy/ diff_root=${rootdir}diffs/`date '+%Y/%m/%d/'` sources='' for domain in `cat ${rootdir}backup_list.txt`; do sources=`printf '%s user@host:/home/user/%s ' "$sources" "$domain"` done `printf "$cmd_frame\n" "$diff_root" "$sources" "$backup_root"` > $logfile
最近的备份生存在copy/删除/修改的文件备份在各自的diffs/year/month/day/文件夹,加上文件的完整path。
如果您在备份/目标机器上使用不同的操作系统,则可能是有区别的。 在Linux上,由于行结束,在Linux上相同的文件是较大的,如果你有很多的文本文件,这将是很有意义的。
另一种情况可能是某些操作系统在列表文件大小时可能使用10的幂而不是2的幂,例如2 ^ 10 = 1024这绝对不是10 ^ 3 = 1000
这个是不太可能的,但是这里呢…确保你没有看到磁盘上的大小,如果你有不同的操作系统,例如,FAT,NTFS,exFAT使用簇作为一个块单位是完全不同的分机(2,3, 4)