皆さんこんにちわ。
ディーネットの浜田です。
今日は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はバックアップを取得したりサーバ間でのコピーなどでそこそこの頻度で利用するので、オプションについてなどもっと調べていきたいですね。
では、今回はこの辺で。