rsyncコマンドで大量データをコピーする

リモートとローカル間で、ディレクトリやファイルをコピーする際、rsyncコマンドを用います。

因みに、コピーには、cpコマンドがありますが、リモートとローカルでのコピーは出来ません。

本記事では、ディレクトリやファイルのバックアップ、同期するコマンドであるrsyncコマンドについて紹介します。

手法

rsync user@162.198.1.1:コピー元のPATH コピー先のPATH

ここで、userは、リモート先のユーザー名で、@マークの後にIPアドレスやホスト名を入れます。

その後、:に続いて、コピー元のPATH、スペースを入れて、コピー先のPATHを入れます。

rsyncコマンドには、オプションがあります。

ここでは、おススメのオプションを紹介します。

  • a・・・なるべくコピー元のファイルと同一条件でコピーする(アーカイブ)
  • v・・・進行状況を出力する

具体例

ローカルの/var/www/html下にリモートの/mnt/dataを同期したいと思います。

ここで、リモートのユーザー名は、tanaka、IPアドレスは、192.168.1.1とします。

この場合、

rsync -av tanaka@192.168.1.1:/mnt/data /var/www/html

となります。

ポート番号が異なる場合の手法

通常、リモートサーバーにアクセスする場合、ポート番号が22ですが、

リモートサーバーのセキュリティ強化のため、ポート番号が変更されている場合があります。

この場合、ポート番号を明示してrsyncコマンドを実行します。

明示するには、sshコマンドをオプションに追加します。

追加するには、-eとして、sshコマンドをシングルクォーテーションで囲みましょう。

以下は、ポート番号を5555に設定している例です。

rsync -av -e 'ssh -p 5555' tanaka@192.168.1.1:/mnt/data /var/www/html

こうすることでローカル、リモート間で同期することが可能になりました。