rsyncコマンドの使い方〜リモートやローカルを簡単同期〜

rsyncコマンドの使い方〜リモートやローカルを簡単同期〜

 

業務でサーバー管理を行っていて
「rsyncコマンド」を使う機会があったので、rsyncコマンドの使い方をメモする。

 

rsyncコマンドとは

rsync-image

 

rsyncコマンドとは、
ローカル内や、ローカル-リモート間において、ファイルやディレクトリを同期させることが可能なlinuxコマンドだ。

rsyncコマンドでファイルを同期するイメージ画像

 

Linuxサーバーや、MacPCなど、Unix系のPCなら大体最初から入っている

which rsync

#実行結果
/usr/bin/rsync

 

ローカルPC内でrsyncする手順

まずは、ローカルPC内のファイルを、rsyncコマンドで同期する手順を紹介する。

rsyncコマンドでローカル内のファイルを同期する画像

 

まずは、後で同期させるファイル(rsync.txt)を適当に作成する。
場所はどこでも良い。

touch rsync.txt

 

次に、上記ファイルを、デスクトップに同期していく

 

rsyncコマンドの書式

rsyncコマンドの基本的な書式は以下のようになっている。

rsync 同期元パス 同期先パス

 

rsyncコマンドで同期(ローカル内)

上記rsyncコマンドの書式にしたがって、
カレントディレクトリのrsync.txtを、デスクトップにコピーするコマンドは以下のようになる。

# ./rsync.txtを、デスクトップへ同期

rsync ./rsync.txt /Users/[ユーザ]/Desktop/

 

実行すると、デスクトップに「rsync.txt」が同期できる。
rsync-result

 

以上がrsyncコマンドを使用して、ローカル内でファイルを同期する手順だ。

まあこれだけだと、「cpコマンドと変わらなくね?」と思うかもしれないし、筆者も実際そうだと思う。

しかし、rsyncコマンドが本領発揮するのは、次で説明する、
ローカル-リモート間でのファイル同期(またはディレクトリ同期)だ。

 

ローカル -リモート間でrsyncする手順

次に、ローカル – リモート間のファイルを、rsyncコマンドで同期する手順を紹介する。

rsyncコマンドでローカルリモート間のファイルを同期するイメージ画像

実務ではこちらのパターンを使用するケースが多いだろう。
あるサーバAにログインして、ネットワーク内のリモートサーバB内のファイルやディレクトリを、rsyncコマンドでサーバAに同期するといった感じだ。

 

rsyncコマンドの書式(ローカル – リモート間)

ローカル – リモート間でのrsyncコマンドの書式は以下のようになっている。

rsync -av ユーザ名@リモートホスト名:同期元パス 同期先パス
rsyncコマンド書式詳細

■rsyncコマンド引数

  • ユーザ名    :リモートへのログインユーザ名
  • リモートホスト名:リモートホスト名(IPアドレスでも可)
  • 同期元パス   :同期元ファイルパス
  • 同期先パス   :同期先ファイルパス

 

■rsyncオプション(おすすめ)

  • -a :なるべくコピー元のファイルと同一条件でコピーする。
  • -v :で詳細を出力する。

 

rsyncコマンドで同期(ローカル – リモート間)

次のような状況を例にする。

リモートサーバ(192.168.1.1)の/tmpディレクトリを、
ログイン中のサーバ(ローカル)の/var/www/htmlディレクトリに同期したい。

rsyncコマンドでファイルを同期するイメージ画像

 

リモートサーバへのログインユーザを「tarou」とした場合、
rsyncコマンドでローカル – リモート間を同期するコマンドは以下のようになる。

rsync -av tarou@192.168.1.1:/tmp /var/www/html

 

リモート情報を含む上記rsyncコマンド実行後の注意点は、以下。

  • コマンドを実行後、ログインユーザのパスワードの入力を求められるので、パスワードを入力してENTERを押す。
  • 初めてログインするリモートホストの場合、接続する場合「本当に接続していいか?」と聞かれるのでyesと入力し、ENTERを押す。

 

以上で、同期が実行され、完了する。

-avオプションを使用しているため、詳しい実行結果はコンソールに出力されているはずだ。
rsynk-log

 

rsyncコマンドでディレクトリを同期するときの注意点

rsyncコマンドでディレクトリを同期する際の注意点として、
同期元のパスの最後に「/」をつけないと言うこと覚えておいてほしい。

同期元のパスの最後に「/」をつけてしまうと、ディレクトリの中身を同期してしまうからだ。

 

同期元のパスの最後に「/」をつけた場合と付けない場合の違い

同期元のパスの末尾に「/」をつけない場合
「ディレクトリごと同期する」

同期元のパスの末尾に「/」をつけた場合
「ディレクトリの中身を同期する」

 

具体的な実行結果の違いは、以下の図を参考にしてほしい。
rsync-usage-image

中身だけ同期させると言うことは、仮にファイルが100件あったとして、
それらが同期先のディレクトリ内に100件羅列されてしまう事態になる。
だから、同期元パスのディレクトリの最後に「/」つけるかつけないか、とても大事。

反対に同期先パスの最後の「/」はあっても無くても結果は変わらない。

 

rsyncコマンドを使うメリット

最後に、rsyncコマンドを使用することのメリットを、筆者なりにまとめて終わりにする。

rsyncコマンドを使うメリット
  1. サーバ間でcpコマンド的なことができてしまう
  2. 他サーバへのバックアップがコマンドだけでできてしまう

 

①サーバ間でcpコマンド的なことができてしまう

同じPC内であればcpコマンドを使えば良いが、サーバ間ではrsyncが必要。

 

②他サーバへのバックアップがコマンドだけでできてしまう

またサーバのイメージをバックアップとかするほどでもないとき(ディレクトリ単位)とかはrsyncでサクッとバックアップが取れる。

 

その他、rsyncに関連しそうな記事

 

https://www.itmedia.co.jp/enterprise/articles/0804/21/news013.html

 

 

 

記事が気に入った方はシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。