rsyncは同一マシン上では差分転送をしないらしい。

  • バックアップ元:VMwareの仮想ハードディスクのファイル
  • バックアップ先:USB接続の外付けHDD(FAT32フォーマット)
  • OS:CentOS 5
  • ツール:rsync

という組み合わせでバックアップをしようとしている。

送信側と受信側のファイルの内容が多くの部分で一致する場合、同期のために転送が必要となるデータ量は少なくなる。
wikipedia:rsync

となるはずだが、試したところ、手元のすべてのファイルで転送バイト数がファイルサイズより大きかった。ファイルをまるまる転送しているように思える。

[root@everest ~]# ls -l /var/lib/vmware/Virtual\ Machines/master/master_data-s020.vmdk
-rw------- 1 root root 2146762752 Oct 13 19:19 /var/lib/vmware/Virtual Machines/master/master_data-s020.vmdk
[root@everest ~]# time rsync -rtv --modify-window=1 /var/lib/vmware/Virtual\ Machines/master/master_data-s020.vmdk /mnt/usbhdd/backup/vm/master
master_data-s020.vmdk

sent 2147024906 bytes  received 42 bytes  22962833.67 bytes/sec
total size is 2146762752  speedup is 1.00

real    1m32.380s
user    0m24.292s
sys     0m17.893s

送信側と受信側が同じマシンの場合、rsyncは差分転送をしないのではないだろうか。そこで上記の受信側ディレクトリの前に「localhost:」をつけ、ネットワークを介した別マシンへの転送の形にしてみた。

[root@everest ~]# time rsync -rtv --modify-window=1 /var/lib/vmware/Virtual\ Machines/master/master_data-s020.vmdk localhost:/mnt/usbhdd/backup/vm/master
root@localhost's password:
master_data-s020.vmdk

sent 278118 bytes  received 324415 bytes  1704.48 bytes/sec
total size is 2146762752  speedup is 3562.90

real    5m52.915s
user    0m17.411s
sys     0m7.114s

転送量が大幅に減った! このことから、rsyncは別マシン間では差分転送をするが、同一マシン上では差分転送をしないことがわかった。ちなみに転送量は大幅に減ったが、所要時間は大幅に増えている。