以前、scpを使ってリモートでファイル転送する方法について記事を書きました。

今回は、「scpよりrsyncの方が高性能?」というお話です。
scpよりrsyncの方が高性能?
rsyncコマンドの使い方
先日、サーバー上のファイル転送について調べていると、rsyncコマンドの方がscpコマンドよりも少し高性能というブログ記事を見つけました。
rsyncコマンドは、今までローカルデータの自動バックアップくらいにしか使っていなかったので、リモートでファイル転送できるとは!!
ということで、さっそく試してみました。
コマンドの使い方は、scpとほとんど同じ!!
リモートでローカルデータを別サーバーへ転送する場合には、以下のようにオプションを付けて実行すればOKです。
↓
# rsync -av 転送元のディレクトリ ユーザーID@ホスト名:転送先のディレクトリ
よく使用するオプションは以下のもの。
「-v」は転送中にコピーしているファイル名を表示
「-a」はファイルの属性やタイムスタンプを維持したまま転送
また、「-p」を付けることで、パーミッションをそのまま維持することも出来ます。
例えば、
/var/www/html/の直下にあるhogeディレクトリを、そのまま転送先サーバーの/home/test/www/の直下に移したい場合には、以下の様になります。
# rsync -av /var/www/html user@sample.com:/home/test/www/hoge
あと、コマンド実行時には当然パスワードも聞かれるので、転送先のパスワードを入力してください。
sshのポートを指定する方法
sshのポートを指定する場合には、「-e “ssh -p ポート”」または、「–rsh=”ssh -p ポート”」を指定して下さい。
例えば、ポートが22だとすると、このようになります。
# rsync -av -e “ssh -p 22” /var/www/html user@sample.com:/home/test/www/hoge
または、
# rsync -av –rsh=”ssh -p 22″ /var/www/html user@sample.com:/home/test/www/hoge
rsyncの方がscpよりも少し高性能な理由
rsyncの方がscpよりも少し高性能な理由は、scpが差分ファイルのみを転送できないのに対して、rsyncは差分ファイルのみ転送してくれる!とのことです。
転送データが大量にある場合には、その都度全ファイル転送させるよりも差分ファイルのみを転送させる方が当然便利です。
要は、rsyncを使えばデータの同期を取れるということですね!!
まとめ
今回は、rsyncコマンドについてまとめました。
rsyncコマンドは、差分データのみを転送してくれます。
その為、データの同期をとるのにも使用できて便利です。
データ転送の効率のいい方法をお探しの方は、ぜひ使ってみてください。