Linuxコマンド【 rsync 】高速にファイルを同期・転送する(バックアップ)

当ページのリンクには広告が含まれています。

スポンサーリンク

rsyncコマンドは、高速なファイル同期(バックアップ)を行うコマンドです。

rsyncコマンド

書式

rsync [オプション] コピー元 コピー先

rsyncコマンドは、リモート、ローカルにかかわらずディレクトリやファイルを高速にコピーするコマンドです。ローカルとリモート間のディレクトリ同期やバックアップによく使われます。
cf. » scpコマンド

オプション

-aコピー元のディレクトリを再帰的にオーナー・グループ・パーミッション・タイムスタンプをそのままコピーします。オプション -rlptgoD と同じです。
-gグループをそのままコピーします。
-lシンボリックリンクをそのまま(ターゲットの指定を変えずに)コピーします。
-oオーナーをそのままコピーします。
-pパーミッションをそのままコピーします。
-rディレクトリ内を再帰的にコピーします。
-tタイムスタンプをそのままコピーします。
-uコピー元とコピー先を比較し、追加・更新されたファイル・ディレクトリのみをコピーします。
-vコピーしているファイル名やバイト数などの情報を表示します。
-z通信を圧縮します。
-4IPv4を使用します。
-6IPv6を使用します。
--deleteコピー元にない(削除された)ファイルをコピー先で削除します。コピー元とコピー先を同期します。

以下ではこれらの使用方法を例示しながら、rsyncコマンドについて解説します。

ローカルのディレクトリを高速にバックアップ

ディレクトリ(dir1)をバックアップディレクトリ(backup)にコピーします。

$ rsync -av dir1/ backup/
sending incremental file list
./
debian-6.0.6-amd64-netinst.iso
debian-7.0.0-amd64-netinst.iso
debian-testing-amd64-netinst.iso
…
sent 640896052 bytes  received 247 bytes  28484279.96 bytes/sec
total size is 640680152  speedup is 1.00

追加分のみコピーする場合

上の使用例に続き、追加したファイル(dir1/add-file.txt)のみをコピーします。-u オプションを利用します。

$ touch dir1/add-file.txt
$ rsync -auv dir1/ backup/
sending incremental file list
./
add-file.txt

sent 385 bytes  received 35 bytes  840.00 bytes/sec
total size is 640680152  speedup is 1525428.93
$ ls -l backup/add-file.txt 
-rw-rw-r-- 1 karuma karuma 0  6月 20 12:11 backup/add-file.txt

適切に追加されていますね。

ローカルのディレクトリをリモートマシンにコピー

ローカル環境のディレクトリをリモートマシン先(IPアドレス:aaa.bbb.ccc.ddd)にコピーします。最もよく使う例ですね。-z オプションを利用して通信を圧縮しています。

$ rsync -auvz dir1/ karuma@aaa.bbb.ccc.ddd:/home/karuma/
karuma@aaa.bbb.ccc.ddd's password: ← 指定したユーザー名(karuma)に対するSSHのパスワード認証です。
sending incremental file list
…

sent 617454230 bytes  received 266 bytes  11329440.29 bytes/sec
total size is 640680152  speedup is 1.04

通信には暗号化されたSSHプロトコルが利用されます。

ローカルのディレクトリとリモートマシンと同期

ローカルのディレクトリとリモートマシンのディレクトリを同期する場合は、--delete オプションを利用します。こうすることでローカルとリモートマシンのディレクトリを全く同じものにしてくれます(同期してくれます)。

$ rsync -avz --delete dir1/ karuma@aaa.bbb.ccc.ddd:/home/karuma/
sending incremental file list
deleting tmp.txt
…
sent 290 bytes  received 13 bytes  121.20 bytes/sec
total size is 640680044  speedup is 2114455.59

※ただし、ローカルに存在しないファイルがリモートマシン上にある場合は、そのファイルは削除されるので注意が必要です。ディスク容量に余裕がある場合、--delete オプションは利用しないほうがいいでしょう。

SSHのオプションを指定して、ローカルのディレクトリをリモートマシンにコピー

sshのオプションを指定する場合は、-e オプションを利用します。

SSHのセキュリティ強化のため通信のポート番号を変更している場合、ポート番号を明示してrsyncコマンドを実行します。以下は、ポート番号を56789に設定している例です。

$ rsync -auvz -e 'ssh -p 56789' dir1/ karuma@aaa.bbb.ccc.ddd:/home/karuma/
sending incremental file list
…
sent 639 bytes  received 213578 bytes  10449.61 bytes/sec
total size is 1105199212  speedup is 5159.25

これでOKです。「sshコマンド」の部分はシングルクォーテーションではさみましょう。sshコマンドの他のオプションもこの方法で指定します。

ファイル/ディレクトリ の人気記事

  1. Linuxコマンド【 chown 】ファイルの所有者やグループを変更する
  2. Linuxコマンド【 gzip 】ファイルを圧縮・展開する
  3. ファイルの解凍・圧縮 - Linuxコマンド一覧(.zip .gz .Z .bz2 tar.gz .tgz tar.Z .taz .tar.bz2 .tbz2)
  4. Linuxコマンド【 rsync 】高速にファイルを同期・転送する(バックアップ)
  5. Linuxコマンド【 zip 】ファイルを圧縮する
  6. cksum - ファイルのCRCチェックサムとサイズを表示 - Linuxコマンド
  7. Linuxコマンド【 diff 】2つのファイルの差分を出力する
  8. Linuxコマンド【 ls 】ファイルとディレクトリのリストを表示する
  9. Linuxコマンド【 du 】ファイルのディスク使用量を表示する
  10. unzip - アーカイブを展開 - Linuxコマンド

関連記事(一部広告含む)