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コマンド【 rsync 】高速にファイルを同期・転送する(バックアップ)
  4. Linuxコマンド【 du 】ファイルのディスク使用量を表示する
  5. Linuxコマンド【 zip 】ファイルを圧縮する
  6. Linuxコマンド【 ls 】ファイルとディレクトリのリストを表示する
  7. Linuxコマンド【 df 】ファイルシステムのディスク容量を表示する
  8. ファイルの解凍・圧縮 - Linuxコマンド一覧(.zip .gz .Z .bz2 tar.gz .tgz tar.Z .taz .tar.bz2 .tbz2)
  9. cksum - ファイルのCRCチェックサムとサイズを表示 - Linuxコマンド
  10. Linuxコマンド【 diff 】2つのファイルの差分を出力する

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