rsync
Rsync は高速かつ高機能なファイルコピーツールです。ローカルでファイルをコピーできるほか、任意のリモートシェル経由で別のホストからファイルをコピーしたり、リモートの rsync デーモンとファイルをコピーしたりできます。動作のあらゆる面を制御できる多数のオプションを備え、コピーするファイルの集合を非常に柔軟に指定できます。Rsync は差分転送アルゴリズムで知られており、送信元ファイルと転送先の既存ファイルとの差分のみを送ることで、ネットワーク上の送信データ量を削減します。Rsync はバックアップやミラーリングに広く使われているほか、日常的に使う改良版のコピーコマンドとしても利用されています。
Rsync はデフォルトの「クイックチェック」アルゴリズムで転送が必要なファイルを探します。このアルゴリズムはサイズまたは最終更新日時が変更されたファイルを検出します。クイックチェックによりファイルのデータを更新する必要がないと判断された場合、転送先ファイルのその他の保持属性(オプションで指定したもの)の変更は、転送先ファイルに直接適用されます。
構文
Usage: rsync [OPTION]... SRC [SRC]... DEST
or rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
or rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
or rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST
or rsync [OPTION]... [USER@]HOST:SRC [DEST]
or rsync [OPTION]... [USER@]HOST::SRC [DEST]
or rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
The ':' usages connect via remote shell, while '::' & 'rsync://' usages connect
to an rsync daemon, and require SRC or DEST to start with a module name.
簡易的な書き方:
rsync [OPTION...] SRC... [DEST]
オプション
- -v, –verbose:詳細情報の出力を増やします
- --info=FLAGS:詳細情報出力のフラグを指定します
- --debug=FLAGS:デバッグ詳細出力のフラグを指定します
- --msgs2stderr:デバッグ出力向けの特別な処理
- -q, –quiet:エラー以外のメッセージ出力を抑制します
- --no-motd:デーモンモードの MOTD を抑制します(man ページの注意事項を参照)
- -c, –checksum:更新日時とファイルサイズではなく、チェックサムに基づいてスキップします
- -a, –archive:アーカイブモード。-rlptgoD と同等です(-H、-A、-X は含みません)
- --no-OPTION:暗黙の OPTION を無効にします(例:–no-D)
- -r, –recursive:ディレクトリを再帰的に処理します
- -R, –relative:相対パス名を使用します
- --no-implied-dirs:–relative とともに暗黙のディレクトリを送信しません
- -b, –backup:バックアップファイルを作成します(–suffix と –backup-dir を参照)
- --backup-dir=DIR:バックアップファイルを DIR ベースの階層に配置します
- --suffix=SUFFIX:バックアップファイルの接尾辞を設定します(–backup-dir がない場合のデフォルトは ~)
- -u, –update:受信側でより新しいファイルをスキップします
- --inplace:転送先ファイルをその場で更新します(man ページを参照)
- --append:短いファイルにデータを追記します
- --append-verify:–append と同様ですが、追記したファイルについて旧データを含めたチェックサムを検証します
- -d, –dirs:再帰せずにディレクトリを転送します
- -l, –links:シンボリックリンクをシンボリックリンクとしてコピーします
- -L, –copy-links:シンボリックリンクを参照先のファイル/ディレクトリに変換します
- --copy-unsafe-links:「安全でない」シンボリックリンクのみを変換します
- --safe-links:ソースツリー外を指すシンボリックリンクを無視します
- --munge-links:シンボリックリンクを変換してより安全にします(ただし使用不可になります)
- -k, –copy-dirlinks:ディレクトリへのシンボリックリンクを参照先のディレクトリに変換します
- -K, –keep-dirlinks:受信側のシンボリックリンクのディレクトリをディレクトリとして扱います
- -H, –hard-links:ハードリンクを保持します
- -p, –perms:権限を保持します
- -E, –executability:ファイルの実行可能属性を保持します
- --chmod=CHMOD:ファイルやディレクトリの権限を変更します
- -A, –acls:ACL を保持します(–perms を含みます)
- -X, –xattrs:拡張属性を保持します
- -o, –owner:所有者を保持します(スーパーユーザーのみ)
- -g, –group:グループを保持します
- --devices:デバイスファイルを保持します(スーパーユーザーのみ)
- --copy-devices:デバイスの内容を通常ファイルとしてコピーします
- --specials:特殊ファイルを保持します
- -D:–devices –specials と同等です
- -t, –times:更新日時を保持します
- -O, –omit-dir-times:–times からディレクトリを除外します
- -J, –omit-link-times:–times からシンボリックリンクを除外します
- --super:受信側でスーパーユーザーの操作を試みます
- --fake-super:xattrs を使って特権属性を保存・復元します
- -S, –sparse:連続した空ブロックをスパースブロックに変換します
- --preallocate:ファイルを書き込む前に転送先ファイルの領域を確保します
- -n, –dry-run:実際の変更を行わずに試行します
- -W, –whole-file:ファイル全体を転送します(差分転送アルゴリズムを使用しません)
- --checksum-choice=STR:チェックサムアルゴリズムを選択します
- -x, –one-file-system:ファイルシステムの境界を越えません
- -B, –block-size=SIZE:固定のチェックブロックサイズを強制します
- -e, –rsh=COMMAND:使用するリモートシェルを指定します
- --rsync-path=PROGRAM:リモートマシンで実行する rsync を指定します
- --existing:受信側での新規ファイル作成をスキップします
- --ignore-existing:受信側に既に存在するファイルの更新をスキップします
- --remove-source-files:送信側で同期済みのファイル(ディレクトリ以外)を削除します
- --del:–delete-during の別名
- --delete:転送先ディレクトリから余分なファイルを削除します
- --delete-before:転送前に受信側で削除します
- --delete-during:転送中に受信側で削除します
- --delete-delay:削除対象を見つけた後、転送完了まで削除を遅らせます
- --delete-after:転送後に受信側で削除します
- --delete-excluded:除外されたファイルも転送先ディレクトリから削除します
- --ignore-missing-args:存在しないソース引数をエラーにせず無視します
- --delete-missing-args:存在しないソース引数を転送先から削除します
- --ignore-errors:I/O エラーが発生しても削除を行います
- --force:空でなくてもディレクトリを強制的に削除します
- --max-delete=NUM:削除するファイルを最大 NUM 個までにします
- --max-size=SIZE:SIZE より大きいファイルを転送しません
- --min-size=SIZE:SIZE より小さいファイルを転送しません
- --partial:部分的に転送されたファイルを保持します
- --partial-dir=DIR:部分的に転送されたファイルを DIR に置きます
- --delay-updates:転送終了時に更新されたファイルをまとめて所定の位置に配置します
- -m, –prune-empty-dirs:ファイルリストから空のディレクトリチェーンを除外します
- --numeric-ids:ユーザー名/グループ名で uid/gid の値をマッピングしません
- --usermap=STRING:ユーザー名のマッピングをカスタマイズします
- --groupmap=STRING:グループ名のマッピングをカスタマイズします
- --chown=USER:GROUP:簡易的なユーザー名/グループ名のマッピング
- --timeout=SECONDS:I/O タイムアウト時間を設定します(秒単位)
- --contimeout=SECONDS:デーモン接続のタイムアウト時間を設定します(秒単位)
- -I, –ignore-times:サイズと更新日時が一致するファイルもスキップしません
- -M, –remote-option=OPTION:オプションをリモート側にのみ送信します
- --size-only:サイズが一致するファイルをスキップします
- @, –modify-window=NUM:更新日時の比較精度を設定します
- -T, –temp-dir=DIR:ディレクトリ DIR に一時ファイルを作成します
- -y, –fuzzy:転送先ファイルがない場合に類似ファイルを基準として探します
- --compare-dest=DIR:DIR を基準に転送先ファイルも比較します
- --copy-dest=DIR:上記に加え、変更されていないファイルのコピーも含めます
- --link-dest=DIR:変更がない場合、ファイルを DIR 内へハードリンクします
- -z, –compress:転送中にファイルデータを圧縮します
- --compress-level=NUM:圧縮レベルを明示的に設定します
- --skip-compress=LIST:LIST に含まれる拡張子のファイルは圧縮しません
- -C, –cvs-exclude:CVS と同様にファイルを自動的に無視します
- -f, –filter=RULE:ファイルフィルタルールを追加します
- -F:–filter=’dir-merge /.rsync-filter’ と同じです
- --exclude=PATTERN:PATTERN に一致するファイルを除外します
- --exclude-from=FILE:FILE から除外パターンを読み込みます
- --include=PATTERN:PATTERN に一致するファイルを除外しません
- --include-from=FILE:FILE から包含パターンを読み込みます
- --files-from=FILE:FILE からソースファイル名のリストを読み込みます
- -0, –from0:すべての *-from/filter ファイルを 0 区切りとします
- -s, –protect-args:スペースで分割せず、ワイルドカードの特殊文字のみ分割します
- --trust-sender:リモート送信側のファイルリストを信頼します
- --address=ADDRESS:送信ソケットをデーモンのアドレスにバインドします
- --port=PORT:ダブルコロン用の代替ポート番号を指定します
- --sockopts=OPTIONS:カスタム TCP オプションを指定します
- --blocking-io:リモートシェル操作にブロッキング I/O を使用します
- --stats:ファイル転送の統計情報を表示します
- -8, –8-bit-output:出力で上位ビットの文字を保持します
- -h, –human-readable:数値を人が読みやすい形式で出力します
- --progress:転送中に進行状況を表示します
- -P:–partial –progress と同じです
- -i, –itemize-changes:すべての更新の変更概要を出力します
- --out-format=FORMAT:指定した形式で更新を出力します
- --log-file=FILE:操作を指定したファイルに記録します
- --log-file-format=FMT:指定した FMT で更新を記録します
- --password-file=FILE:ファイルからデーモンへのアクセスパスワードを読み込みます
- --list-only:ファイルを一覧表示するだけで、コピーしません
- --bwlimit=RATE:ソケット I/O の帯域を制限します
- --stop-at=y-m-dTh:m:年-月-日T時:分 に rsync を停止します
- --time-limit=MINS:MINS 分後に rsync を停止します
-
--outbuf=N L B:出力バッファをなし、行、ブロックのいずれかに設定します - --write-batch=FILE:バッチ更新をファイルに書き込みます
- --only-write-batch=FILE:–write-batch と同様ですが、転送先は更新しません
- --read-batch=FILE:ファイルからバッチ更新を読み込みます
- --protocol=NUM:古いプロトコルバージョンの使用を強制します
- --iconv=CONVERT_SPEC:ファイル名の文字コード変換を要求します
- --checksum-seed=NUM:ブロック/ファイルのチェックサムシードを設定します(高度なオプション)
- --noatime:ソースファイルを開く際に atime を変更しません
- -4, –ipv4:IPv4 を優先して使用します
- -6, –ipv6:IPv6 を優先して使用します
- --version:バージョン番号を表示します
- (-h) –help:ヘルプ情報を表示します(-h を単独で使用した場合のみ –help になります)
よく使うコマンド
- ローカルファイルのコピー:/app ディレクトリ内のファイルを /userdata ディレクトリにコピー
rsync -avSH /app/ /userdata/
- ローカルマシンの内容をリモートマシンにコピー
rsync -av /app 192.168.1.12:/app
- リモートマシンの内容をローカルマシンにコピー
rsync -av 192.168.1.12:/app /app
- リモートの rsync サーバー(デーモンとして動作する rsync)のファイルをローカルマシンにコピー。
rsync -av root@192.168.1.12::www /userdata
- ローカルマシンのファイルをリモートの rsync サーバー(デーモンとして動作する rsync)にコピー。DST パスに "::" 区切りが含まれる場合にこのモードが起動します。
rsync -av /userdata root@192.168.1.12::www
- リモートマシンのファイル一覧を表示。rsync 転送と似ていますが、コマンドからローカルマシンの情報を省略するだけです。
rsync -v rsync://192.168.1.12/app
- パスワード保存ファイルを指定し、パスワードを入力せずに直接 rsync 転送を実行
rsync -rvzP --password-file=/etc/rsync.password rsync@$192.168.1.12::app/ /app
ドキュメント