Linuxコマンド【 rsync 】高速にファイルを同期・転送する(バックアップ)
当ページのリンクには広告が含まれています。
rsyncコマンドは、高速なファイル同期(バックアップ)を行うコマンドです。
rsyncコマンド
書式
rsync [オプション] コピー元 コピー先
rsyncコマンドは、リモート、ローカルにかかわらずディレクトリやファイルを高速にコピーするコマンドです。ローカルとリモート間のディレクトリ同期やバックアップによく使われます。
cf. » scpコマンド
オプション
-a | コピー元のディレクトリを再帰的にオーナー・グループ・パーミッション・タイムスタンプをそのままコピーします。オプション -rlptgoD と同じです。 |
-g | グループをそのままコピーします。 |
-l | シンボリックリンクをそのまま(ターゲットの指定を変えずに)コピーします。 |
-o | オーナーをそのままコピーします。 |
-p | パーミッションをそのままコピーします。 |
-r | ディレクトリ内を再帰的にコピーします。 |
-t | タイムスタンプをそのままコピーします。 |
-u | コピー元とコピー先を比較し、追加・更新されたファイル・ディレクトリのみをコピーします。 |
-v | コピーしているファイル名やバイト数などの情報を表示します。 |
-z | 通信を圧縮します。 |
-4 | IPv4を使用します。 |
-6 | IPv6を使用します。 |
--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コマンドの他のオプションもこの方法で指定します。
ファイル/ディレクトリ の人気記事
- Linuxコマンド【 chown 】ファイルの所有者やグループを変更する
- Linuxコマンド【 gzip 】ファイルを圧縮・展開する
- Linuxコマンド【 rsync 】高速にファイルを同期・転送する(バックアップ)
- Linuxコマンド【 du 】ファイルのディスク使用量を表示する
- Linuxコマンド【 zip 】ファイルを圧縮する
- Linuxコマンド【 ls 】ファイルとディレクトリのリストを表示する
- Linuxコマンド【 df 】ファイルシステムのディスク容量を表示する
- ファイルの解凍・圧縮 - Linuxコマンド一覧(.zip .gz .Z .bz2 tar.gz .tgz tar.Z .taz .tar.bz2 .tbz2)
- cksum - ファイルのCRCチェックサムとサイズを表示 - Linuxコマンド
- Linuxコマンド【 diff 】2つのファイルの差分を出力する