Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

rsyncでページキャッシュを汚さない方法

rsyncは大量のファイルを走査するため、普通に実行するとページキャッシュに乗ったファイルが追い出されてしまう。 Linuxの場合、nocacheコマンド*1を利用することでページキャッシュを汚さずにrsyncを実行できる。リモートでもrsyncが実行されるので、以下のように実行する必要がある。

nocache rsync -aiv --rsync-patch='nocache rsync' some-host:/src/ /dest/

参考: https://stackoverflow.com/questions/10105203/how-can-i-limit-the-cache-used-by-copying-so-there-is-still-memory-available-for

ただし、nocacheコマンドはDebianUbuntuであればaptで取ってこれるが、CentOSRHELリポジトリにはないみたい*2。 そのため、RHELrsyncでページキャッシュを汚さないためには、nocacheをソースで取ってきてmake installするしかない模様。

なお、rsync本体に対してページキャッシュを汚さないためのオプション --drop-cache が提案されたことがあるが、Linux-specificすぎるとのことでWONTFIXになっている*3。それに伴い、RHELリポジトリでもWONTFIXになっている(RHELrsyncのみパッチが当たっているとかいうことはない)*4