rsync のオプション情報をここにメモします。
rsync
「rsync」は、リモート環境のファイルやディレクトリを「同期(sync)する」コマンドです。
「変更があった分だけ更新する」という機能があるので、ディレクトリ単位のバックアップとしてローカル環境のみでも利用できます。
オプション
自身が使いそうで、忘れがちなオプションをまとめました。
通常オプション
option | option(長め) | 内容 |
-v | --verbose | 動作内容の詳細表示 |
-q | --quiet | 動作中のメッセージを抑制 |
-n | --dry-run | 試験モード(動作内容のみ表示) |
-a | --archive | アーカイブモード |
-l | --ignore-times | サイズとタイムスタンプが同じファイルも処理対象 |
-c | --checksum | チェックサムで変更の有無をチェック |
「-a」で有効になるオプション
「-a」オプションは元のパーミッションやグループなどを保持したまま同期できます。
基本的に付加しておくと都合がよさそうです。
option | option(長め) | 内容 |
-r | --recursive | ディレクトリを再帰的に処理 |
-l | --links | シンボリックリンクをシンボリックリンクのままコピー |
-p | --perms | パーミッションを保持 |
-t | --times | タイムスタンプを保持 |
-g | --group | 所有グループをそのまま保持 |
-o | --owner | 所有者をそのまま保持(自分以外の所有者を保持するにはroot権限が必要) |
その他オプション
option | option(長め) | 内容 | |
-b | --backup | バップアップファイルを作成 | |
--backup-dir=ディレクトリ | バックアップファイルを配置するディレクトリを指定 | ||
--delete | 同期元にないファイルを同期先から削除 | ||
-d | --dirs | ディレクトリを再帰しない | |
--exclude=パターン | 指定したパターンにマッチしたファイルは処理しない | ||
--existing | 同期先に新規ファイルを作成しない | ||
--ignore-existing | 同期先にファイルがあったらスキップ | ||
--include=パターン | 指定したパターンにマッチしたファイルを処理 | ||
--inplace | ファイルを上書き | ||
--max-size=サイズ | 指定したサイズより大きなファイルは削除しない | ||
--max-size=サイズ | 指定したサイズより小さなファイルは削除しない | ||
--progress | 転送の進行状況を表示 | ||
-R | --relative | 相対パス名を使用 | |
--remove-source-files | 同期後にファイルを削除す | ||
-u | --update | 同期先のファイルの方が新しい場合はスキップ | |
--version | rsync のバージョン確認 | ||
-z | --compress | 転送中のデータを圧縮 |
SSH経由での同期
同期元と同期先が別サーバーの場合は、SSH経由での同期を行う事ができます。
コマンド書式は以下のとおりです。
rsync -av -e ssh 同期元ディレクトリ ユーザー名@同期先ホスト名:同期先ディレクトリ
サンプル
データ転送の進捗を確認しながら
$ rsync -ahv --progress [user]@[host]:/tmp/* /tmp/dst
特定のファイル(*.py)以外を同期(ssh経由)
$ rsync -av -e ssh --exclude '*.py' ./src/ [user]@[host]:dst
ディレクトリのバックアップ&圧縮しながら転送
$ rsync -avz --delete /tmp/source/ /tmp/backup/
dry-run モード
rsync -av --dry-run /path/to/src/ /path/to/dst/