ものづくりのブログ

うちのネコを題材にしたものづくりができたらいいなと思っていろいろ奮闘してます。

【rsync】オプションについて調べてみました

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/