我们每晚都会对 Windows 文件服务器进行备份,首先每晚在服务器上创建一个增量备份文件(并在周四晚上创建一个完整备份),然后将其复制到运行 Linux/Ubuntu 的备份服务器。为了保持异地冗余,我们将备份目录 rsync 到外部驱动器,该驱动器在每晚运行后都会轮换。
随着时间的推移,增量备份文件的数量一直稳步增加(尽管这些文件的大小有所不同)。
我们还注意到,尽管 rsync 过程仅将最新的两个文件复制到外部驱动器,但它所花的时间却越来越长。
这是命令:
rsync -vr --delete-before --log-file=/rsync_log.csv /backup/archive/ /mnt/usbdisk/ 2>&1
当我们测试该命令并调查日志文件时,我们看到了以下内容:
...
2011/02/14 23:59:35 [14054] >f..T...... IncrementalBackup_2011_02_06_20.bkf
2011/02/15 00:00:45 [14054] >f..T...... IncrementalBackup_2011_02_08_20.bkf
2011/02/15 00:03:22 [14054] >f..T...... IncrementalBackup_2011_02_09_20.bkf
2011/02/15 00:04:36 [14054] >f..T...... IncrementalBackup_2011_02_11_20.bkf
2011/02/15 00:04:51 [14054] >f..T...... IncrementalBackup_2011_02_12_20.bkf
2011/02/15 00:05:06 [14054] >f..T...... IncrementalBackup_2011_02_13_20.bkf
2011/02/15 00:06:13 [14054] >f+++++++++ IncrementalBackup_2011_02_14_20.bkf
2011/02/15 00:54:32 [14054] >f..T...... Thursday_Full_Backup_2011_01_20.bkf
2011/02/15 03:24:41 [14054] >f..T...... Thursday_Full_Backup_2011_01_27.bkf
...
我们发现,每个文件所花费的时间与文件的大小有关 - 即使跳过它(例如 - 完整备份大约需要 2.5 小时来处理,而增量备份大约需要 2-3 分钟或更短)。
实际复制的唯一文件是最新的增量文件。
我们能想到的唯一解释是 rysnc 正在对文件执行校验和 - 尽管文档说默认情况下它不会执行此操作,并且我们未在命令上指定 --checksum 开关。确定时间戳和文件大小肯定不会花 2.5 小时吧?
看完文档后,除了计算校验和之外,我找不到任何其他解释。那么,有没有办法确保校验和被禁用?
答案1
也许问题出在文件的时间戳上。如果使用 Windows 程序创建备份,则可能会弄乱时间戳。如果我用一堆图片复制您的样本,我会获得此日志
2011/02/15 03:46:46 [61820] delta-transmission disabled for local transfer or --whole-file
2011/02/15 03:46:46 [61820] .d..t....... ./
2011/02/15 03:46:46 [61820] IMG_0055.JPG is uptodate
2011/02/15 03:46:46 [61820] IMG_0056.JPG is uptodate
2011/02/15 03:46:46 [61820] IMG_0057.JPG is uptodate
2011/02/15 03:46:46 [61820] IMG_0058.JPG is uptodate
2011/02/15 03:46:46 [61820] IMG_0059.JPG is uptodate
2011/02/15 03:46:46 [61820] IMG_0060.JPG is uptodate
2011/02/15 03:46:46 [61820] IMG_0061.JPG is uptodate
2011/02/15 03:46:46 [61820] >f..t....... IMG_0062.JPG
2011/02/15 03:46:46 [61820] IMG_0063.JPG is uptodate
2011/02/15 03:46:46 [61820] IMG_0064.JPG is uptodate
2011/02/15 03:46:46 [61820] IMG_0065.JPG is uptodate
2011/02/15 03:46:46 [61820] IMG_0066.JPG is uptodate
2011/02/15 03:46:46 [61820] total: matches=0 hash_hits=0 false_alarms=0 data=5911343
2011/02/15 03:46:46 [61820] sent 5912367 bytes received 67 bytes 11824868.00 bytes/sec
2011/02/15 03:46:46 [61820] total size is 75450221 speedup is 12.76
因此每次都会传输文件,否则您应该有日志消息file xxx is uptodate
。尝试使用多个 v 标志增加 rsync 详细程度以找出正在发生的事情。
答案2
USB 驱动器是什么文件系统?
FAT 和时间戳存在已知问题。请参阅 rsync 手册页:
--modify-window
When comparing two timestamps, rsync treats the timestamps as being equal if they differ by no more
than the modify-window value. This is normally 0 (for an exact match), but you may find it useful to
set this to a larger value in some situations. In particular, when transferring to or from an MS Win‐
dows FAT filesystem (which represents times with a 2-second resolution), --modify-window=1 is useful
(allowing times to differ by up to 1 second).