rsyncのパスとzオプションについて

皆さんこんにちわ。
ディーネットの浜田です。

今日はrsyncについてお話したいと思います。
rsyncとはファイルやディレクトリを同期するコマンドです。
書式は以下の通りです。
rsync [オプション] [コピー元] [コピー先]
また、2つのサーバをコピーさせることが可能です。
例えば、サーバAのファイルをサーバBに送りたい場合は、サーバAにて以下のコマンド打ちます。
rsync [コピー元のパス] [サーバBのIP]:[コピー先パス]
オプションについてはとても種類が多いので今回は紹介を割愛します。
さて、軽くご紹介したrsyncについてですが、使用している中で少し気になったことを紹介します。

コピー元のパスについて

コピー元のパスですが末尾に/がついているかついていないかでコピー対象が変わってしまいますので注意が必要です。
例えば、以下の2種類のコマンドが有ります。

① rsync -auvh ./test_dir xxx.xxx.xxx.xxx:/home/user01/dir01
② rsync -auvh ./test_dir/ xxx.xxx.xxx.xxx:/home/user01/dir01

①の場合だと、test_dirとその配下にあるファイルをコピーしますが、②の場合はその配下にあるファイルのみコピーを行います。

zオプション有無による速度、転送量の違い

rsyncではzオプションを使用することでファイルを圧縮してから転送することが出来ますが、圧縮して転送した場合は普通に送る場合と比べてどのような違いがあるか調査してみました。
今回は40MBのファイルを50個、合計2GBのファイルが入ったディレクトリをコピーしています。
① zオプションなしの場合


# time rsync -avu ./2GB_RSYNC/ root@xxx.xxx.xxx.xxx:/home/user01/rsync_test01
sending incremental file list
created directory /home/user01/rsync_test01
 ~ 中略 ~
sent 2,097,666,810 bytes  received 1,017 bytes  33,034,139.01 bytes/sec
total size is 2,097,152,000  speedup is 1.00
real    1m2.685s
user    0m13.761s
sys     0m5.566s

② zオプションありの場合


# time rsync -avuz ./2GB_RSYNC/ root@xxx.xxx.xxx.xxx:/home/user01/rsync_test02
sending incremental file list
created directory /home/user01/rsync_test02
 ~ 中略 ~
sent 1,595,636,225 bytes  received 1,017 bytes  4,994,169.77 bytes/sec
total size is 2,097,152,000  speedup is 1.31
real    5m19.066s
user    4m13.572s
sys     0m52.410s

上がzオプション有りと無しの場合の実行結果です。
なお、処理時間を確認するためにtimeコマンドを使っています。
大きな違いとしては、①(zオプションなし) はすばやく転送が行えますが、ネットワーク転送量が多くなっています。
②(zオプションあり) はネットワーク転送量は少なくなりますが、転送時に圧縮・解凍の動作が加わるので処理時間が長くなってしまいます
次に、実行処理中のCPU使用率を見てみます。

① zオプションなしの場合
・受信側


14時23分01秒   CPU     %user     %nice   %system   %iowait    %steal     %idle
14時24分01秒     all     51.63      0.00     25.66      0.00      0.00     22.72
14時25分01秒     all      0.55      0.00      0.43      0.00      0.00     99.02
平均値:      all     16.16      0.00      8.14      0.00      0.00     75.69

・送信側


14時23分01秒   CPU     %user     %nice   %system   %iowait    %steal     %idle
14時24分01秒     all     22.11      0.00      9.37      0.12      0.00     68.41
14時25分01秒     all      0.65      0.00      0.38      0.00      0.00     98.97
平均値:      all     11.38      0.00      4.87      0.06      0.00     83.69

② zオプションありの場合
・受信側


14時28分01秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
14時29分01秒     all      7.03      0.00      2.58      0.00      0.00     90.39
14時30分01秒     all      6.40      0.00      2.41      0.03      0.00     91.16
14時31分01秒     all      6.49      0.00      2.46      0.00      0.00     91.05
14時32分01秒     all      6.83      0.00      2.83      0.02      0.00     90.32
14時33分01秒     all      6.44      0.00      2.38      0.02      0.00     91.17
平均値:      all      6.64      0.00      2.53      0.01      0.00     90.82

・送信側


14時28分01秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
14時29分02秒     all     85.88      0.00      5.85      8.28      0.00      0.00
14時30分01秒     all     87.03      0.72      5.98      6.27      0.00      0.00
14時31分02秒     all     84.83      0.49      5.53      9.14      0.00      0.00
14時32分01秒     all     87.30      0.00      5.97      4.83      0.00      1.89
14時33分02秒     all     84.19      0.00      5.30     10.51      0.00      0.00
平均値:      all     85.82      0.24      5.72      7.86      0.00      0.36

①の時は送信側よりも受信側のほうが負荷が大きくなっていることが分かります。
対して②の場合は受信側のほうは負荷が少なく、送信側のほうが高くなっています。
zオプションについては送信側・受信側それぞれの平時の負荷状況や、ネットワーク転送速度の上限に応じて使い分けるとよさそうですね。
今回はrsyncのパスについてとzオプションについて書かせていただきました。
rsyncはバックアップを取得したりサーバ間でのコピーなどでそこそこの頻度で利用するので、オプションについてなどもっと調べていきたいですね。
では、今回はこの辺で。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA