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/