興味があったので、cpとtarとrsyncで、どれが一番速いのか比べてみた。

/usr/portageを、/mnt/backupに丸ごとコピーしてタイムを計測した。
結果は、以下の通り

cp:
( cp -av /usr/portage /mnt/backup; ) 3.93s user 22.52s system 14% cpu 3:06.63 total

tar:
( tar cpf - -C /usr/portage . | tar xvpf - -C /mnt/backup; ) 2.29s user 11.99s system 4% cpu 5:23.91 total
( tar cSpf - -C /usr/portage . | tar xvpf - -C /mnt/backup/; ) 2.27s user 12.04s system 7% cpu 3:09.66 total

rsync:
( rsync --bwlimit=8192 --timeout=600 -av /usr/portage/ /mnt/backup/; ) 22.39s user 36.52s system 12% cpu 7:39.72 total
( rsync --bwlimit=8192 --timeout=600 --bwlimit=0 -av /usr/portage/ /mnt/backup; ) 22.33s user 35.90s system 29% cpu 3:18.89 total

というわけで、キチンとオプション指定すれば、どれも同じようなスピードだった。ただ、tarはコマンドが長くて、打ち間違えたりしそう。また、rsyncは、bwlimit=0を指定しないと極端に時間がかかる。

cpが意外と優秀だった。新規コピーならcp、差分コピーならrsyncがいいみたいだ。

cp: GNU coreutils 8.12
tar: GNU tar 1.26
rsync: version 3.0.8 protocol version 30