rsync
Section: ユーザコマンド (1)
Updated: 21 Sep 2026
Index
JM Home Page
roff page
名前
rsync - 高速で汎用性の高い、ローカル/リモート ファイルコピーツール
書式
ローカル:
rsync [OPTION...] SRC... [DEST]
リモートシェル経由:
受信:
rsync [OPTION...] [USER@]HOST:SRC... [DEST]
送信:
rsync [OPTION...] SRC... [USER@]HOST:DEST
rsync デーモン経由のアクセス
受信:
rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
送信:
rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
SRC 引数を 1 つだけ指定し、DEST 引数を指定しない場合は、ソースファイルがコピーされずに一覧表示されます。
このマニュアルページのオンライン版 (トピックの相互リンクを含む) は、
https://download.samba.org/pub/rsync/rsync.1
です。
説明
Rsync
は、高速で非常に汎用性の高いファイルコピーツールです。ローカルにコピーすることも、リモートシェルを介して別のホストとの間でコピーすることも、リモートの
rsync デーモンとの間でコピーすることもできます。Rsync
は、その動作のあらゆる側面を制御し、コピーされるファイルセットの、非常に柔軟な指定を可能にする、多数のオプションを提供します。また、デルタ転送アルゴリズムを使っていることも有名です。このアルゴリズムでは、ソースファイルと宛先の既存ファイルの差分のみを送信することで、ネットワーク経由で送信されるデータの量を削減します。Rsync
は、バックアップとミラーリング、および日常的に使用する、改良されたコピーコマンドとして広く使用されています。
Rsync は、(既定では) サイズが変更されたファイルや最終更新日時が更新されたファイルを検索する "クイック・チェック"
アルゴリズムを使用して、転送が必要なファイルを検出します。クイックチェックでファイルのデータを更新する必要がないことが示された場合、保存されている他の属性の変更
(オプションによる要求) は、保存先ファイルに対して直接行われます。
Rsync の追加機能の一部を次に示します。
- o
-
ハードおよびソフトリンク、デバイス、所有者、グループ、およびアクセス許可のコピーのサポート
- o
-
exclude および exclude-from オプション (GNU tar に類似)
- o
-
CVS が無視するのと同じファイルを無視するための CVS 除外モード
- o
-
ssh や rsh などの透過的なリモートシェルが使用可能
- o
-
スーパーユーザ特権が不必要
- o
-
待ち時間コストを最小化するためのファイル転送のパイプライン化
- o
-
匿名または認証された rsync デーモンのサポート (ミラーリングに最適)
概要
Rsync
は、リモートホストとの間でファイルをコピーするか、現在のホスト上でローカルにファイルをコピーします。2つの異なるリモートホスト間でのファイルのコピーはサポートされていません。
Rsync がリモートシステムに接続するには、2つの異なる方法があります。転送にリモートシェルプログラム (ssh や rsh など)
を使用する方法と、rsync デーモンに TCP
経由で直接接続する方法です。リモートシェルによる転送は、移動元または移動先のパスでホストを指定した後にコロン (:) 区切り文字が
1つだけ含まれている場合に使用されます。この場合、ローカルの rsync プロセスは、リモートシェルプログラムを使用して、リモートシステム上で
rsync プロセスを開始します。次に、2つの rsync
プロセスがリモートシェルプログラムを介して通信し、必要な転送を実行します。この場合、リモートシステム上でアクセス可能なファイルは、リモートシェルがリモート
rsync プロセスを開始するためのユーザ ID がアクセス可能なファイルです。
rsync デーモンへの直接の接続は、ソースまたは宛先のパスにホスト指定の後に二重コロン (::) セパレータが含まれている場合、または
rsync://URL が指定されている場合に行われます。この場合、リモート rsync
デーモンプロセスは、その設定に応じて、モジュールと呼ばれる特定のファイルセットのみへのアクセスを提供します。リモートシェルを使う転送方法で rsync
デーモンに接続することも可能です。詳細は、"リモートシェル接続での RSYNC デーモン機能の使用" 節を参照してください。
特殊なケースとして、宛先を指定せずに単一のソース引数を指定した場合、ファイルは "ls -l" のような出力形式で一覧表示されます。
コピー元またはコピー先のパスでリモートホストが指定されていない場合、コピーはローカルで行われます (--list-only オプションも参照)。
Rsync は、ローカル側をクライアント、リモート側をサーバと呼びます。サーバを rsync
デーモンと混同しないでください。デーモンは常にサーバですが、サーバはデーモンまたはリモートシェルによって生成されたプロセスのいずれかになります。ローカル転送の場合、転送中のファイルの内容を受信する
rsync サブプロセスはサーバです。
セットアップ
ほとんどの Linux ディストリビューションには、パッケージマネージャーを使用してインストールできるパッケージとして rsync
が含まれています。何らかの理由で、ソースから rsync をビルドしてインストールする必要がある場合は、インストール手順について README.md
ファイルを参照してください。
一度インストールすると、リモートシェル経由でアクセスできるマシンや、rsync デーモンが利用できるマシンであれば、rsync
を使うことができます。リモート転送の場合、rsync は通常、通信に ssh を使用します。または、-e
コマンド行オプションを使用するか、RSYNC_RSH 環境変数を設定して、任意のリモート・シェルを指定することもできます。
Rsync は、ソースマシンとデスティネーションマシンの両方にインストールする必要があります。
使用方法
Rsyncは、cp や rcp
などの他のファイルコピーコマンドと同様の方法で使用します。送信元と宛先を指定する必要があります。どちらかをリモートにすることができます。
おそらく、構文を説明する最良の方法は、いくつかの例を使用することです。
-
rsync -t *.c foo:src/
これにより、パターン *.c に一致するすべてのファイルが現在のディレクトリからマシン foo 上のディレクトリ src
に転送されます。いずれかのファイルがリモートシステムにすでに存在している場合は、 "rsync remote-update"
プロトコルを使用して、データの差分のみを送信することでファイルを更新します。コマンドライン上のワイルドカードのファイルリストへの展開 (*.c)
は、rsync 自体ではなく (他の Posix スタイルのプログラムのように)、rsync
を実行する前にシェルによって処理されることに注意してください。
-
rsync -avz foo:src/bar /data/tmp
これによって、すべてのファイルが、マシン foo 上のディレクトリ src/bar からローカルマシン上の /data/tmp/bar
ディレクトリに再帰的に転送されます。ファイルはアーカイブモードで転送されます。これにより、シンボリックリンク、デバイス、属性、アクセス権、所有権などが転送時に確実に保持されます。さらに、圧縮を使用して、転送のデータ部分のサイズを縮小します。
-
rsync -avz foo:src/bar/ /data/tmp
ソースの末尾にスラッシュを付けると、この動作が変更され、宛先に追加のディレクトリレベルが作成されなくなります。ソースの最後の "/" は、
"名前を指定してディレクトリをコピーする" のではなく、 "このディレクトリの内容をコピーする"
ことを意味すると考えることができますが、どちらの場合も、格納ディレクトリの属性は、宛先の格納ディレクトリに転送されます。つまり、次の各コマンドは、/dest/foo
の属性の設定も含めて、同じ方法でファイルをコピーします。
-
rsync -av /src/foo /dest
rsync -av /src/foo/ /dest/foo
また、ホスト参照とモジュール参照では、既定値のディレクトリの内容をコピーするため、末尾のスラッシュは必要ありません。たとえば、次のどちらもリモートディレクトリの内容を
"/dest" にコピーします。
-
rsync -av host: /dest
rsync -av host::module /dest
また、rsync をローカルのみモードで使用することもできます。この場合、ソースとターゲットの両方の名前に ":"
が含まれません。この場合、改良されたコピーコマンドのように動作します。
最後に、モジュール名を省略することで、特定の rsync デーモンから利用可能なすべての (リスト可能な) モジュールをリストすることができます。
-
rsync somehost.mydomain.com::
別の名前へのコピー
ディレクトリを別の名前にコピーする場合は、コピー元のディレクトリの末尾にスラッシュを付けて、そのディレクトリの内容を任意のコピー先ディレクトリにコピーします。
-
rsync -ai foo/ bar/
Rsyncには、単一のファイルを別の名前の宛先ファイルにコピーする機能もあります。このルールは次のとおりです:
- o
-
転送リストは、単一の項目 (ファイルまたは空のディレクトリ) で構成されている必要があります。
- o
-
宛先パスの最後の要素は、ディレクトリとして存在してはなりません。
- o
-
保存先のパスは、末尾にスラッシュを付けて指定することはできません。
このような場合、rsync は、(ソースパスの最後の要素を使用してファイル名を構築するのではなく)
指定されたデスティネーションパスをデスティネーションのファイル名として使用します。この方式はファイルをコピーする場合にのみ使用し、ディレクトリをコピーする場合には上記の末尾にスラッシュを付ける方式を使用することをお勧めします。
次の例では、foo.c ファイルを bar.c として save
ディレクトリにコピーします。ここでは、bar.cはディレクトリではないと仮定します。
-
rsync -ai src/foo.c save/bar.c
単一項目のコピー規則では、コピー元のワイルドカードパターンで単一項目が生成され、コピー先がディレクトリになるように指定されているが、そのディレクトリが存在しない場合、予期しない結果が生じる可能性があります。たとえば、src/*.c
が1つのファイルに一致し、save/dir が存在しない場合は、おそらく目的のファイルに
save/dirという紛らわしい名前が付けられます:
-
rsync -ai src/*.c save/dir
このような事故を防ぐには、保存先ディレクトリが存在することを確認するか、または保存先パスの最後にスラッシュを付けて指定します。
-
rsync -ai src/*.c save/dir/
整列された転送順序
Rsync は常に指定されたファイル名を内部の転送リストに並べ替えます。これにより、同じ名前のディレクトリの内容がマージされ、重複するファイル名を簡単に削除できるようになります。ただし、コマンドラインで指定した順序とは異なる順序でファイルが転送される可能性があります。
特定のファイルを別のファイルより先に転送する必要がある場合、それを保証する唯一の方法は、ファイルを異なる rsync
呼び出しに分けることです。転送先のファイルをほぼ同時に表示できれば十分な場合は、--delay-updates
を使用することを検討してください。これは、整列された転送順序には影響しませんが、最終的なファイル更新フェーズをはるかに迅速に実行します。
セキュリティ
Rsync
はネットワーク越しに昇格した権限で実行されることが多いので、誰を何で信頼しているのかを考える価値があります。この節は、安全に使用するための実用的なガイドです。プロジェクトの
SECURITY.md は、完全な脅威モデルとプラットフォームごとの残差を記述しています。
認証および暗号化された転送方法の使用
ピアを認証し、コネクションを暗号化する単純な host:path 転送は、リモートシェル (既定では ssh 上で実行されます --
これが安全な既定値です。デーモンによる直接接続 (host::module または rsync://
は暗号化されていないですし、また、この接続の認証は比較的弱いので、機密データを信頼できないネットワークに送信しないでください。その代わりに、ssh
上でトンネルします (リモートシェル接続によるRSYNC-DAEMON 機能の使用を参照)。あるいは、それを rsync-ssl(1) で TLS
にラップし、RSYNC_SSL_CA_CERT
を設定することで、サーバ証明書のチェーンとホスト名は検証されます。デーモンパスワードを非対話的に指定する必要がある場合は、コマンドラインではなく、利用者のみが読み取り可能
(モード 600) な --password-file に入力します。
信頼できない送信ホストからのコピー
リモートホストからの受信時、rsync は、破損または損傷したリモート rsync プロセスによって、ローカル rsync
プロセスが、要求された範囲を超えてファイルにアクセスすることがないようにするための措置を講じます。Rsync
は、転送されているファイルのリストが、要求されたツリー内に留まることを保証し、ファイルリストが転送の範囲外に逸脱しようとする絶対パスまたは相対パスを含む場合には、処理を中断します。また、転送に追加のソース引数が追加されていないこと、および送信側に送信された除外ルールにファイルリストが従っていることを確認します。
特に注意したい人にとっては、信頼できないリモートファイルを専用の宛先ディレクトリにコピーするのが最も安全です。たとえば、ホームディレクトリにコピーする代わりに、次のようにします:
-
rsync -aiv host1:dir1 ~
"host1-files" ディレクトリをリモートコンテンツ専用にします:
-
rsync -aiv host1:dir1 ~/host1-files
詳細については、--trust-sender オプションを参照してください。
大文字小文字を保持するファイルシステムと区別しないファイルシステム間でのコピー
大文字小文字を保持するファイルシステムから大文字小文字を区別しないファイルシステムへのコピーには注意が必要です。なぜなら、大文字小文字の区別がなくなると、シンボリックリンクの名前がファイルやディレクトリの名前と重複する可能性があり、ファイルが宛先ディレクトリ階層の外に書き込まれるなど、潜在的に危険な結果を引き起こす可能性があるからです。このようなコピーを実行する必要がある場合は、--no-links
を介してシンボリックリンクを無効にするか、--munge-links を介してシンボリックリンクの変更を有効にします
(そして、正しいローカルまたはリモートオプションを使用していることを確認します)。ただし、この方法では、すべてのファイルの完全なコピーを確実に取得することはできません
(名前が重複している場合は不可能なため)。より良い解決策として、ファイル名の安全なリストを作成し、それを --files-from
に渡すことが考えられます。
シンボリックリンク
悪意のある送信者は、宛先ツリーの外 (例えば/etc/passwd)
を指すシンボリックリンクを含めることができます。--safe-links
を使用して、転送されるファイルセット外を指すシンボリックリンクを無視します。または --munge-links
を使用して、ディスク上では使用できないが後で回復可能な形式ですべてのシンボリックリンクを保存します。--no-links
はシンボリックリンクを完全に削除します。これらがどのように相互作用するかについては、 "シンボリックリンク" の節を参照してください。
これとは別に、コマンドラインで指定したディレクトリとファイルパス -- --backup-dir 、--temp-dir
、--partial-dir 、--link-dest/--compare-dest/--copy-dest
基本ディレクトリ、--log-file 、--password-file
、--files-from/--include-from/--exclude-from 、--filter
マージファイル、--write-batch/--read-batch 、およびデスティネーション自体 --
が解決されるため、シンボリックリンクコンポーネントは、ユーザまたは root によって所有されている場合にのみ追跡されます。攻撃者がこれらのパスの
1つにシンボリックリンクを埋め込むと、拒否されます。--insecure-links はこの保護を無効にします (歴史的な
follow-any-symlink
の動作が復元されます)。このオプションは、これらのパスに沿ったすべてのディレクトリが信頼できる場合にのみ使用し、権限のないユーザが書き込むことができるパスでは使用しないでください。
強力なチェックサムの使用
Rsyncは、双方がサポートする最も強いチェックサムを自動的にネゴシエートするので、ローカル rsync とリモート rsync
の両方のバージョンを適度に最新に保つことが、通常必要なことの全てです。--checksum-choice (--cc、例えば
--cc=sha1 や xxHash の亜種の 1つ) で選択を固定するか、RSYNC_CHECKSUM_LIST
環境変数でネゴシエーションを制限できます。非常に古いピアだけが MD4/MD5 にフォールバックします。この
"このファイルは更新する必要がありますか?" チェックサムは、ファイル全体のチェックサムとは別のものです。rsync
は通常、転送された各ファイルを後で検証するために計算します (--checksum-choice=none 強制の場合、検証はオフになります)。
プロトコルのバージョン
クライアントとサーバは、両方がサポートしている最新のプロトコルを自動的にネゴシエートするため、現在のペアはすでに最新バージョンを使用しています。--protocol
は、互換性のために古いバージョンを強制するだけであり、接続をダウングレードするために使用されるべきではありません。したがって、古いプロトコルを避けるには、両端で最新の
rsync を実行すればよいことになります (30 以下のプロトコルは、デーモン接続において弱い MD4
認証ダイジェストも強制します。rsyncd.conf(5) の "認証強度" の節を参照してください)。
高度な使用方法
リモートホストから複数のファイルを要求する構文は、最初の引数と同じスタイルで追加の remote-host
引数を指定するか、ホスト名を省略することによって行われます。例えば、これらはすべて動作します:
-
rsync -aiv host:file1 :file2 host:file{3,4} /dest/
rsync -aiv host::modname/file{1,2} host::modname/extra /dest/
rsync -aiv host::modname/first ::extra-file{1,2} /dest/
デーモン接続では、copy コマンドごとに
1つのモジュールへのアクセスしかサポートされないことに注意してください。したがって、後続パスの先頭が最初のパスの modname
で始まらない場合は、モジュール内のパスであると見なされます (上記で取得した extra-file1 と extra-file2 など)。
非常に古いバージョンの rsync (2008 年 3月にリリースされた 3.0.0 より前のバージョン) では、リモートソース引数を
1つしか指定できなかったため、一部のユーザは、スペース分割を実行して単一の引数を複数のパスに分割するリモートシェルに依存するようになりました。このような直感的でない動作は、既定値ではサポートされなくなりましたが、次のパラグラフで説明するように、要求することはできます。現在
(3.2.4 以降) の rsync
は、指定した文字を保持するような方法で、リモートシェルにファイル名を渡します。したがって、名前にスペースを含むファイルを要求すると、それがリモート
rsync が検索するものになります。
-
rsync -aiv host:'a simple file.pdf' /dest/
リモートの rsync
引数に手動で余分なクォートを適用するように、あるいはリモートの引数の分割に依存するように書かれたスクリプトを使用する場合、スクリプトに余分なエスケープを処理させるよう
rsync に要求することができます。これを行うには、スクリプトで実行される rsync に --old-args オプションを追加するか
(新しい rsync が必要)、RSYNC_OLD_ARGS=1 と RSYNC_PROTECT_ARGS=0 をエクスポートします (これは新旧の
rsync バージョンで動作します)。
RSYNCデーモンへの接続
Rsync デーモンは、システムへのシェルアクセスを提供することなく、制御された方法でシステム上の
1つまたは複数のディレクトリ階層へのアクセスを提供する方法を提供します。各ディレクトリ階層は "モジュール"
と呼ばれます。各モジュールの名前、ディレクトリ、アクセス権などは、rsyncd.conf(5) で説明されている rsync
デーモン設定ファイルで定義されます。Rsync デーモンへの接続は通常、TCP ポート 873 を使用します。通常、システムの管理者は、rsync
デーモンが実行されるように手配します。その方法については、後述の "接続を受け入れるための RSYNC デーモンの起動" の節を参照してください。
クライアントの観点から、rsync を使用して rsync
デーモンにアクセスすることは、リモートシェルでそれを使用することと似ていますが、以下の点が異なります。
- o
-
シングルコロン (リモートシェル) 構文の代わりに、ダブルコロン構文または rsync://URL 構文を使用します。
- o
-
"パス" の最初の要素は、実際にはモジュール名です。
- o
-
追加のリモートソース引数では、高度な使用法で説明されているように、ホスト名やモジュール名を省略した省略構文を使用できます。
- o
-
リモートデーモンは、接続時に "今日のメッセージ" を出力する場合があります。
- o
-
(モジュールやパスを指定せずに) ホストだけを指定すると、デーモン上のアクセス可能なモジュールのリストが出力されます。
- o
-
リモートのソースパスを指定し、宛先を指定しない場合、リモートのデーモン上で一致するファイルのリストが出力されます。
- o
-
Rsync デーモンに直接接続するには、--rsh (-e) オプションを省略する必要があります。これを使用すると、rsync
は指定されたリモートシェルプログラムを使用して、リモートシステム上で rsync デーモンを起動します。この操作モードの詳細は、
"リモートシェル接続でのRSYNCデーモン機能の使用" 節を参照してください。
"src" という名前のリモートモジュール内のすべてのファイルをコピーする例:
-
rsync -av host::src /dest
リモートデーモンのモジュールの中には、認証を必要とするものがあります。その場合、接続時にパスワードのプロンプトが表示されます。パスワードプロンプトを回避するには、環境変数RSYNC_PASSWORD
に使用するパスワードを設定するか、--password-file オプションを使用します。これは、rsyncの
スクリプトを作成するときに役立つ場合があります。
警告:一部のシステムでは、環境変数はすべてのユーザで見えます。そのようなシステムでは --password-fileを使用することをお勧めします。
Rsync が IDN サポート付きで構築された場合 (rsync --version 内で "IDN" を探す)、デーモンホストは非
ASCII 文字を含む可能性があります。これらの文字は、名前が検索される前に、IDNA A-ラベル形式 ("Punycode")
に変換されます。この名前はロケールの文字エンコーディングを使用して読み取られるため、ロケールが正しく設定されていることを確認してください。結合文字で入力された名前は途中で正規化されるため、事前に構成されたスペルと同じように検索されます。非
ASCII ラベルのみが変更されるため、アドレスリテラル、自分で入力した名前、および有効な IDN ではない名前はすべて、入力したとおりに検索されます。
これは、デーモン接続のホストにのみ適用されます。通常のリモートシェル転送 (コロン 1 つの構文)
のホストは、リモートシェルプログラムにそのまま渡されます。なぜなら、その名前は DNS 名ではなく、ssh_config の "Host"
エイリアスである可能性が高いからです。
Web プロキシ経由で接続を確立するには、環境変数 RSYNC_PROXY を Web
プロキシを指すホスト名:ポートのペアに設定します。Webプロキシの設定では、ポート 873 へのプロキシ接続をサポートする必要があります。
また、プログラムをプロキシとして使用してデーモン接続を確立することもできます。その場合は、直接ソケット接続を行う代わりに、実行するコマンドを環境変数
RSYNC_CONNECT_PROG に設定します。文字列には、rsync コマンドで指定されたホスト名を表すエスケープ "%H"
を含めることができます (文字列に単一の "%" が必要な場合は、 "%%" を使用します)。例:
-
export RSYNC_CONNECT_PROG='ssh proxyhost nc %H 873'
rsync -av targethost1::module/src/ /dest/
rsync -av rsync://targethost2/module/src/ /dest/
上記で指定されたコマンドは、ssh を使用してプロキシホストで nc(netcat) を実行します。これにより、すべてのデータがターゲットホスト
(%H) のポート 873 (rsync デーモン) に転送されます。
また、RSYNC_SHELL 環境変数が設定されている場合、RSYNC_CONNECT_PROG コマンドの実行には、system()
コールの既定値シェルではなく、そのプログラムが使用されることにも注意してください。
リモートシェル接続での RSYNC デーモン機能の使用
リモートシェルアクセスを許可するためにすでに必要とされているものを除き、実際にはシステムへの新しいソケット接続を許可せずに、rsync
デーモンのさまざまな機能 (名前付きモジュールなど) を使用すると便利な場合があります。Rsync
はリモートシェルを使ってホストに接続することをサポートしており、その後、リモートユーザのホームディレクトリにある設定ファイルを読み取ることを想定した、シングルユースの
"デーモン"
サーバを生成します。これは、デーモン形式の転送データを暗号化する場合に便利です。ただし、デーモンはリモートユーザによって起動されるため、chroot
やデーモンが使用するユーザ ID の設定など、root
権限を必要とする機能を使用できない場合があります。(デーモン転送を暗号化する別の方法として、ssh
を使用してローカルポートをリモートマシンにトンネリングし、そのリモートホスト上で通常の rsync デーモンを設定して、 "localhost"
からの接続のみを許可することを検討してください。)
ユーザの観点から見ると、リモートシェル接続を介したデーモン転送は、通常の rsync
デーモン転送とほぼ同じコマンドライン構文を使用します。唯一の違いは、コマンドラインで --rsh=COMMAND
オプションを使用してリモートシェルプログラムを明示的に設定する必要があることです。(環境変数で RSYNC_RSHを
設定しても、この機能は有効になりません)。次に例を示します:
-
rsync -av --rsh=ssh host::module /dest
このモードでは、ホストの前の "user@" プレフィックスは、同時に 2 つの目的を果たします。それは rsync-user 値です
(ユーザベースの認証を必要とするモジュールにログインするために使用されます)。また、既定値によっては、ログインユーザとしてリモートシェルに渡されます。シンプルな形は
-
rsync -av --rsh=ssh user@host::module /dest
となり、これは ssh -l user host を実行し、そして、モジュールに対して rsync-user として "user"
を提示します;この 2 つは強制的に同じ名前にされます。
リモートシェル (ssh) ログインで rsync-user とは異なる名前を使用する必要がある場合は、リモートシェルコマンドで ssh に明示的な
'-l' オプションを指定します。ssh がどのユーザとしてログインするかをすでに知らされている場合、rsync はそれ自身の '-l'
を追加しないので、"user@" プレフィックスは rsync-user としてのみ使用されます。たとえば、--rsh
オプションの短縮バージョンを使用すると:
-
rsync -av -e "ssh -l ssh-user" rsync-user@host::module /dest
ここで "ssh-user" は ssh レベルで使用され、"rsync-user" は "module" へのログインに使用されます。
このセットアップでは、システムにアクセスしている ssh コマンドによってデーモンが起動されます (必要に応じて、
~/.ssh/authorized_keys
ファイルを使用して強制できます)。ただし、デーモンに直接アクセスする場合は、事前に起動しておく必要があります。
接続を受け付けるための RSYNC デーモンの起動
rsync
デーモンに接続するために、リモートシステムはすでに動作しているデーモンを持っている必要があります(あるいは、特定のポートに入ってくる接続に対して
rsync デーモンを生成するために、inetd
のようなものを設定しておく必要があります)。入ってくるソケット接続を処理するデーモンを起動する方法の完全な情報については、マニュアルページの
rsyncd.conf(5) デーモンの設定ファイルを参照してください。マニュアルページには、スタンドアローンや inetd
の設定など、デーモンを実行する方法の完全な詳細が含まれています。
転送にリモートシェルトランスポートのいずれかを使用している場合は、rsync デーモンを手動で起動する必要はありません。
例
rsync の使用方法の例をいくつか示します。
ホームディレクトリ (大きな MS Word ファイルとメールフォルダで構成される) をバックアップするには、ユーザごとの cron
ジョブを使用して、次の処理を毎日実行します:
-
rsync -aiz . bkhost:backup/joe/
リモートホストからローカルホストに一部のファイルを移動するには、次のように実行します:
-
rsync -aiv --remove-source-files rhost:/tmp/{file1,file2}.c ~/src/
オプションの概要
ここでは、rsync で使用できるオプションの簡単な概要を示します。各オプションには、このマニュアルページで後述する独自の詳細な説明もあります。
--verbose, -v 詳細情報を表示
--info=FLAGS より詳細な情報
--debug=FLAGS より詳細なデバッグ情報
--stderr=e|a|c 標準エラー出力モードの変更(既定値: errors)
--quiet, -q 非エラーメッセージの抑制
--no-motd デーモンモード MOTD の抑制
--checksum, -c チェックサムベースをスキップ、時間変更とサイズではない
--archive, -a アーカイブモードを -rlptgoD (no -A,-X,-U,-N,-H)
--no-OPTION 暗黙のオプションをオフに (例えば --no-D)
--recursive, -r ディレクトリを再帰的に
--inc-recursive, --i-r 増分再帰を有効に
--no-inc-recursive 増分再帰を無効に
--no-i-r --no-inc-recursive と同じ
--relative, -R 相対パス名を使用
--no-implied-dirs --relative では暗黙のディレクトリを送らない
--backup, -b バックアップの作成 (--suffix & --backup-dir 参照)
--backup-dir=DIR DIR に基づいてバックアップを階層化
--suffix=SUFFIX バックアップの接尾辞 (既定値 ~ w/o --backup-dir)
--update, -u 受信側で新しいファイルをスキップ
--inplace コピー先ファイルをインプレイスで更新
--append 短いファイルにデータを追加
--append-verify --append w/old data in file checksum
--dirs, -d 再帰無しでディレクトリを転送
--old-dirs 古い rsync と通信する時、--dirs のように動作
--old-d --old-dirs と同じ
--mkpath コピー先の不明なパスコンポーネントを作成
--links, -l シンボリックリンクをシンボリックリンクとしてコピー
--copy-links, -L シンボリックリンクを参照ファイル/ディレクトリに変換
--copy-unsafe-links "unsafe" なシンボリックリンクのみ転送
--safe-links 木構造外部を示すシンボリックリンクを無視
--insecure-links オペレータパス内の攻撃者が所有するシンボリックリンクを追跡
--confine-root=DIR DIR 外で解決するオペレータパスの拒否
--munge-links シンボリックリンクを安全で使用不可に
--copy-dirlinks, -k ディレクトリへのシンボリックリンクを参照ディレクトリに変換
--keep-dirlinks, -K 受信側でシンボリックリンクされたディレクトリをディレクトリとして取り扱い
--hard-links, -H ハードリンクを保持
--perms, -p パーミッションを保持
--executability, -E 実行可能性を保持
--chmod=CHMOD ファイルとディレクトリパーミッションに影響
--acls, -A ACL を保持(--perms を仮定)
--xattrs, -X 拡張属性を保持
--owner, -o 所有者を保持 (スーパーユーザのみ)
--group, -g グループを保持
--devices デバイスファイルを保持 (スーパーユーザのみ)
--copy-devices デバイスの内容を通常のファイルとしてコピー
--write-devices ファイルとしてデバイスに書き込み (--inprace を仮定)
--specials スペシャルファイルを保持
--drop-D 受信者がデバイス/スペシャルの作成を拒否
-D --devices --specials と同じ
--times, -t 変更時刻を保持
--atimes, -U アクセス (使用) 時刻を保持
--open-noatime オープンしたファイルで atime 変更を防止
--crtimes, -N 作成時刻を保持 (newness)
--omit-dir-times, -O --times からディレクトリを省略
--omit-link-times, -J --times からシンボリックリンクを省略
--super 受信側がスーパーユーザ・アクティビティーを試行
--fake-super xattrs を使用した特権 attrs の格納/回復
--sparse, -S NULL 列を疎なブロックに変換
--preallocate 書き込み前にdestファイルを割り当て
--dry-run, -n 変更を一切行わないお試し実行
--whole-file, -W ファイル全体をコピー (delta-xfer アルゴリズムなし)
--no-whole-file, --no-W delta-xfer アルゴリズムを使用
--checksum-choice=STR チェックサムアルゴリズムを選択 (aka --cc)
--one-file-system, -x ファイルシステムの境界を越えない
--block-size=SIZE, -B 固定のチェックサムブロックサイズを強制
--rsh=COMMAND, -e 使用するリモートシェルを指定
--rsync-path=PROGRAM リモートマシンで実行する rsync を指定
--existing 受信側で新規ファイルの作成をスキップ
--ignore-non-existing 受信側で新規ファイルの作成をスキップ
--ignore-existing 受信側に存在するファイルの更新をスキップ
--remove-source-files 送信者は同期されたファイルを削除 (非ディレクトリ)
--del --delete-during のエイリアス
--delete dest ディレクトリから不要なファイルを削除
--delete-before 受信側は転送の前に削除する (転送中ではない)
--delete-during 受信者が転送中に削除
--delete-delay 削除箇所を処理中に検索、後で削除
--delete-after 受信者は転送中ではなく転送後に削除
--delete-excluded dest ディレクトリから除外されたファイルも削除
--ignore-missing-args 見つからないソース引数をエラーなしで無視
--delete-missing-args 宛先から欠落しているソース引数を削除
--ignore-errors 入出力エラーがあっても削除
--force 空でなくてもディレクトリを強制的に削除
--max-delete=NUM NUM 個を超えるファイルを削除しない
--max-size=SIZE SIZE より大きなファイルを転送しない
--min-size=SIZE SIZE より小さいファイルは転送しない
--max-alloc=SIZE メモリ割り当てに関する制限を変更
--partial 部分的に転送されたファイルを保持
--partial-dir=DIR 部分的に転送されたファイルを DIR に配置
--delay-updates 最後にすべての更新されたファイルを配置
--prune-empty-dirs, -m 空のディレクトリチェーンを file-list から削除
--numeric-ids uid/gid 値をユーザ/グループ名でマップしない
--usermap=STRING カスタムユーザ名マッピング
--groupmap=STRING カスタムグループ名マッピング
--chown=USER:GROUP 単純なユーザ名とグループ名のマッピング
--timeout=SECONDS I/Oタイムアウトを秒単位で設定
--contimeout=SECONDS デーモン接続タイムアウトを秒単位で設定
--ignore-times, -I サイズと時間が一致するファイルをスキップしない
--size-only サイズが一致するファイルをスキップ
--modify-window=NUM, -@ mod-time 比較の精度を設定
--temp-dir=DIR, -T ディレクトリ DIR に一時ファイルを作成
--fuzzy, -y dest ファイルがない場合、basis の類似ファイルを検索
--compare-dest=DIR また、DIR に対するデスティネーションファイルも比較
--copy-dest=DIR ... 変更されていないファイルのコピーを含める
--link-dest=DIR 変更されていない場合の DIR のファイルへのハードリンク
--compress, -z 転送中にファイルデータを圧縮
--compress-choice=STR 圧縮アルゴリズムを選択 (aka --zc)
--compress-level=NUM 圧縮レベルを明示的に設定 (aka --zl)
--compress-threads=NUM 圧縮スレッドを明示的に設定 (aka --zt)
--skip-compress=LIST LIST 中に接尾辞を持つファイルの圧縮をスキップ
--cvs-exclude, -C CVS と同じ方法でファイルを自動的に無視
--filter=RULE, -f ファイルフィルタリングルールを追加
-F --filter='dir-merge /.rsync-filter と同じ'
repeated:--フィルタ='-.rsync-フィルタ'
--exclude=PATTERN PATTERN に一致するファイルを除外
--exclude-from=FILE FILE から除外パターンを読み込む
--include=PATTERN PATTERN に一致するファイルを除外しない
--include-from=FILE FILE からインクルードパターンを読み込む
--files-from=FILE FILE からソースファイル名のリストを読み込む
--from0, -0 すべての *-from/filter ファイルは 0 で分離
--old-args 現代の引数保護のイディオムを無効に
--secluded-args, -s 引数を安全に送信するためにプロトコルを使用
--trust-sender リモート送信者のファイルリストを信頼
--copy-as=USER[:GROUP] コピーのユーザとオプショングループを指定
--address=ADDRESS 発信ソケットのアドレスをデーモンにバインド
--port=PORT 二重コロンの代替ポート番号を指定
--sockopts=OPTIONS カスタム TCP オプションを指定
--blocking-io リモートシェルのブロッキング I/O の使用
--outbuf=N|L|B バッファリングを None、Line、または Block に設定
--stats ファイル転送状況を表示
--8-bit-output, -8 出力時に高位ビット文字をエスケープしない
--human-readable, -h 人間が読める形式で数値を出力
--progress 転送中に進行状況を表示
-P --partial --progress と同じ
--itemize-changes, -i すべての更新の変更サマリーを出力
--remote-option=OPT, -M リモート側にのみ OPTION を送信
--out-format=FORMAT 指定された FORMAT を使用して更新を出力
--log-file=FILE 指定された FILE に対して行っていることをログに記録
--log-file-format=FMT 指定された FMT を使用してログを更新
--password-file=FILE FILE からデーモンアクセスパスワードを読み込み
--early-input=FILE デーモンの初期 exec 入力に FILE を使用
--list-only ファイルをコピーせずに一覧表示
--bwlimit=RATE ソケットの入出力帯域幅を制限
--stop-after=MINS MINS 分経過後に rsync を停止
--stop-at=y-m-dTh:m 指定した時点で rsync を停止
--fsync 書き込まれたすべてのファイルを fsync
--write-batch=FILE FILE にバッチ更新を書き込み
--only-write-batch=FILE --write-batch と似ているが dest を更新しない
--read-batch=FILE FILEからバッチ更新を読み込み
--protocol=NUM 強制的に古いバージョンのプロトコルを使用
--iconv=CONVERT_SPEC ファイル名の文字セット変換を要求
--checksum-seed=NUM ブロック/ファイル チェックサム seed を設定 (高度)
--ipv4, -4 IPv4 を優先
--ipv6, -6 IPv6 を優先
--version, -V バージョンの表示 + 他の情報表示と終了
--help, -h (*) このヘルプを表示 (* -h はヘルプ単独でのみ使用可能)
Rsync はデーモンとして実行することもできます。その場合、次のオプションが受け入れられます。
--daemon rsync デーモンとして実行
--address=ADDRESS 指定されたアドレスにバインド
--bwlimit=RATE ソケット I/O 帯域幅を制限
--config=FILE 別の rsyncd.conf ファイルを指定
--dparam=OVERRIDE, -M グローバルデーモン config パラメータを上書き
--no-detach 親からデタッチしない
--port=PORT 代替ポート番号で待ち受けする
--log-file=FILE "ログ・ファイル" の設定を上書き
--log-file-format=FMT "ログ形式" の設定を上書き
--sockopts=OPTIONS カスタム TCP オプションを指定
--verbose, -v 冗長表示
--ipv4, -4 IPv4 を優先
--ipv6, -6 IPv6 を優先
--help, -h このヘルプを表示 (--daemon と共に使うとき)
オプション
Rsync は長いオプション (二重ダッシュ+単語) と短いオプション (一重ダッシュ+文字)
の両方を受け付けます。使用可能なオプションの完全なリストを以下に示します。オプションを複数の方法で指定できる場合、選択肢はコンマで区切られます。一部のオプションには、ショートではなくロング版のみがあります。
オプションがパラメータを取る場合、ショート版にも指定する必要がありますが、パラメータはロング版の後にのみリストされます。パラメータを指定するときは、--option=param
、--option param 、-o=param 、-o param 、または -oparam
のいずれかの形式を使用できます (後者の選択肢は、オプションにショート版があることを前提としています)。
パラメータは、シェルのコマンドライン解析に耐えられるように、何らかの方法で引用符で囲む必要があるかもしれません。また、パス名の先頭のチルダ (~)
はシェルによって置き換えられることに注意してください。そのため、ローカルシェルで展開したい場合は、(等号ではなく)
スペースを使用してオプション名とパス名を区切るようにしてください。
- --help
-
Rsync で利用可能なオプションを説明した短いヘルプページを印刷し終了します。他のオプションや引数なしで使用された場合、 --help
の代わりに -h を使用することもできます (そうでない場合は --human-readableを意味します)。
- --version, -V
-
Rsync のバージョンとその他の情報を出力して終了します。繰り返し指定すると、情報はかなり読みやすい JSON 形式で出力されます
(クライアント側のみ)。
-
出力には、コンパイル済み機能のリスト、最適化のリスト、チェックサムアルゴリズムの既定値リスト、圧縮アルゴリズムの既定値リスト、デーモン認証ダイジェストの既定値リスト、rsync
ウェブサイトへのリンク、その他いくつかの項目が含まれています。
- --verbose, -v
-
このオプションを使用すると、転送中に提供される情報量が増加します。既定値では、rsync は静かに動作します。1つだけ -v
を指定すると、転送されているファイルに関する情報と、最後に簡単な要約を提供します。2つ -v
オプションを指定すると、どのファイルがスキップされているかについての情報を提供し、最後にもう少し詳しい情報を提供します。2つ以上の -v
オプションは、rsync をデバッグする場合にのみ使用してください。
-
実行終了のサマリーからは、リモート rsync (ローカルコピーの受信側) に送信されたバイト数、リモートホストから受信したバイト数、rsync
の実行全体にわたって計算された転送データの 1秒あたりの平均バイト数がわかります。2行目は合計サイズ (バイト単位) を示します。これは、rsync
が転送を考慮したすべてのファイルサイズの合計です。また、 "高速化"
値も示されています。これは、ファイルの合計サイズを送受信バイトの合計で割った比率です
(これは実際には、大きいほど良いという気分になるだけの数字です)。これらのバイト値は、--human-readable (または
--no-human-readable オプションを使用して、人間が読みやすく (または読みにくく) することができます。
-
-v オプションは、--info および --debug オプションのグループを設定することと同じです。--verbose
を使用する代わりに、またはそれに加えて、これらの新しいオプションを使用することを選択できます。これは、-v
の暗黙の設定を上書きする細かい設定のためです。 --info と --debug
のどちらにもヘルプテキストが用意されており、冗長性が高くなるたびに、どのフラグが設定されているかを正確に知ることができます (
--info=help または --debug=help を使用して確認してください)。
-
ただし、デーモンの "max verbosity"
設定により、デーモン側で設定できる個々のフラグの上限が制限されることに注意してください。たとえば、最大値が 2の場合、info フラグや debug
フラグが -vv で設定される値よりも大きい値に設定されていると、デーモンのロギングで -vv レベルにダウングレードされます。
- --info=FLAGS
-
このオプションを使用すると、表示する情報出力を詳細に制御できます。個々のフラグ名の後にはレベル番号を続けることができます。0はその出力をなくすことを意味し、1は既定値の出力レベルを表し、より高い番号はそのフラグの出力を増加させます
(より高いレベルをサポートするもののため)。--info=help
を使用すると、使用可能なすべてのフラグ名、出力内容、および詳細レベルを上げるたびに追加されるフラグ名が表示されますを使用します。次に例を示します:
-
-
rsync -a --info=progress2 src/ dest/
rsync -avv --info=stats2,misc1,flist0 src/ dest/
-
--info=name の出力は、--out-format および --itemize-changes (-i)
オプションの影響を受けます。何がいつ出力されるかについての詳細は、これらのオプションを参照してください。
-
このオプションは 3.1.0 (2013年 9月リリース) で追加されたため、サーバ・サイドの古い rsync
では、きめ細かな制御を行おうとしても拒否される可能性があります。デーモンを扱う場合は、上記の "max verbosity"
に関する注意も参照してください。
- --debug=FLAGS
-
このオプションを使用すると、表示するデバッグ出力をきめ細かく制御できます。個々のフラグ名の後にはレベル番号を続けることができます。0はその出力をなくすことを意味し、1は既定値の出力レベルを表し、より高い番号はそのフラグの出力を増加させます
(より高いレベルをサポートするもののため)。--debug=help
を使用すると、使用可能なすべてのフラグ名、出力内容、および詳細レベルを上げるたびに追加されるフラグ名が表示されますを使用します。次に例を示します:
-
-
rsync -avvv --debug=none src/ dest/
rsync -avA --del --debug=del2,acl src/ dest/
-
一部のデバッグメッセージ、特に I/O およびバッファのデバッグに関するメッセージは、--stderr=all
オプションが指定されている場合にのみ出力されることに注意してください。
-
このオプションはクライアントからサーバ側に転送されないため、転送の側ごとに異なるデバッグ値を指定できます。これにより、rsync
のいずれかのバージョンにのみ存在するデバッグオプションを指定することもできます。両側で同じオプションを複製したい場合は、ブレース展開を使用すると、簡単に入力の手間を省けます。これは
zsh と bash で動作します:
-
-
rsync -aiv {-M,}--debug=del2 src/ dest/
- --stderr=errors|all|client
-
このオプションは、どのプロセスが stderr に出力するか、info メッセージを stdout ではなく stderr
に出力するかどうかを制御します。モード文字列は、1文字まで省略できます。次の 3つの選択肢があります。
-
-
- o
-
errors - (既定値) を指定すると、すべての rsync プロセスでエラーが stderr
に直接送信されます。プロセスが転送のリモート側にある場合でも同様です。Info
メッセージは、プロトコルストリームを介してクライアント側に送信されます。stderr が使用できない場合
(つまり、ソケット経由でデーモンに直接接続している場合)、エラーはプロトコルストリーム経由で送信されるようになります。
- o
-
all - すべての rsync メッセージ (情報とエラー) が、すべての (可能な) プロセスから stderr
に直接書き込まれます。これにより、stderr は (unbuffered ではなく) line-buffered
になり、ファイルハンドルによって情報メッセージとエラーメッセージを分割する機能がなくなります。デバッグを行ったり、いくつかの冗長レベルを使用したりする場合は、このオプションを使用すると、転送ストリームが停滞するのを防ぐことができます
(これにより、デッドロックのバグによって問題が発生する可能性がなくなります)。また、--debug は、いくつかの特別な I/O
関連メッセージを使用可能にすることを許可します。
- o
-
client - すべての rsync
メッセージを、プロトコルストリームを介してクライアント側に送信します。1つのクライアントプロセスがすべてのメッセージを出力し、stderr
にはエラー、stdout には情報メッセージが出力されます。これは古い rsync
バージョンの既定値でしたが、大量の送信データがメッセージの前にあると、エラー遅延が発生することがあります。ファイルを古い rsync
にプッシュしている場合は、--stderr=all を使用することをお勧めします。この方式はいくつかのリリースで使用されているためです。
-
また、Rsync は、 --msgs2stderr と --no-msgs2stderr オプションを受け入れ、これらは
それぞれ相当する古い all と client 設定に等しく、リモート側 rsync
が古いバージョンの場合に、既定値以外の設定をリモート側に転送するときにこれらのオプションを使用します。
- --quiet, -q
-
このオプションを使用すると、転送中に提供される情報の量が減り、特にリモートサーバからの情報メッセージが抑制されます。このオプションは、cron から
rsync を起動するときに便利です。
- --no-motd
-
このオプションは、デーモン転送の開始時にクライアントが出力する情報に影響を与えます。これにより、Message-of-The-Day(MOTD)
テキストが抑制されますが、 "rsync host::" 要求に応答してデーモンが送信するモジュールのリストにも影響します
(rsyncプロトコルの制限による)。したがって、デーモンからモジュールのリストを要求する場合は、このオプションを省略してください。
- --ignore-times, -I
-
通常、rsync は、すでに同じサイズで同じ変更タイムスタンプを持つファイルをスキップします。このオプションは、この "クイックチェック"
動作をオフにし、すべてのファイルが更新されるようにします。
-
このオプションは、--ignore-existing および --ignore-non-existing
と比較して混乱を招く可能性があります。これらのオプションでは、 rsync が転送するファイルの数が少なくなりますが、このオプションでは、rsync
が転送するファイルの数が多くなります。
- --size-only
-
これは、転送が必要なファイルを見つけるための rsync の "クイックチェック"
アルゴリズムを修正し、変更されたサイズまたは変更された最終変更時刻を持つファイルを転送する既定値から、サイズが変更されたファイルを探すだけに変更します。これは、タイムスタンプを正確に保存しない可能性がある別のミラーリングシステムを使用した後に、rsync
の使用を開始する場合に便利です。
- --modify-window=NUM, -@
-
2つのタイムスタンプを比較するとき、rsync は、modify-window 値以上の差がなければ、タイムスタンプを等しいものとして扱います。既定値は
0で、整数の秒と一致します。負の値を指定すると (受信側が 2018年 1月にリリースされたバージョン 3.1.3
以上である場合)、ナノ秒も考慮されます。MS Windows FAT ファイルシステムとの間でコピーを行う場合は、1を指定すると便利です。これは、FAT
が 2秒の精度で時刻を表すためです (元の時刻との差は最大 1秒まで許容されます)。
-
既定値への転送をすべてナノ秒で比較したい場合は、~/.popt ファイルを作成し、その中に次の行を入れます。
-
-
rsync alias -a -a@-1
rsync alias -t -t@-1
-
これを既定値とした場合、 --modify-window=0 (別名 -@0)
から上書きまでを指定し、ナノ秒を無視する必要があります。たとえば、 ext3 と ext4 の間でコピーを行う場合や、受信する rsync が
3.1.3 よりも古い場合などです。
- --checksum, -c
-
これにより、ファイルが変更され、転送が必要かどうかを rsync がチェックする方法が変更されます。このオプションなしの場合、rsync は
"クイックチェック" を使います。これは (既定値では)
それぞれのファイルのサイズと最終更新時間が送信者と受信者の間で一致しているかどうかをチェックします。このオプションは、サイズが一致する各ファイルのチェックサムを比較するように変更します。チェックサムを生成すると、転送の両側でファイル内のすべてのデータを読み取るために大量のディスク
I/O が発生するため、処理速度が大幅に低下する可能性があります (また、これは、変更されたファイルを転送するために行われる読み取りの前に行われます)。
-
送信側は、利用可能なファイルのリストを構築するファイルシステムスキャンを実行している間に、チェックサムを生成します。受信側は、変更されたファイルをスキャンするときにチェックサムを生成し、対応する送信側のファイルと同じサイズを持つファイルのチェックサムを計算します。サイズまたはチェックサムが変更されたファイルが転送用に選択されます。
-
rsync
は通常、ファイル転送時に生成されるファイル全体のチェックサムをチェックすることによって、各転送されたファイルが受信側で正しく再構築されたことを検証しますが、転送後の自動検証は、このオプションの転送前の
"このファイルを更新する必要がありますか?" チェックとは何の関係もありません。
-
使用されるチェックサムは、クライアントとサーバ間で自動ネゴシエートされますが、--checksum-choice (--cc)
オプション、またはこのオプションのセクションで説明されている環境変数を使用して上書きできます。
- --archive, -a
-
これは、-rlptgoD と同じです。これは、再帰が必要で、ほぼすべてを保持したいことを簡単に伝える方法です。ACL (-A)
、xattrs(-X) 、atimes (-U) 、crtimes (-N)
の保持は含まれないことに注意してください。また、ハードリンク (-H) の検索と保持も含まれません。
-
上記の等価性に対する唯一の例外は、--files-from が指定された場合です。この場合、-r は暗黙指定されません。
- --no-OPTION
-
オプション名の前に "no-"
を付けると、1つまたは複数の暗黙のオプションをオフにできます。すべての肯定的なオプションが否定された反対のものを持っているわけではありませんが、暗黙のオプションを無効にするために使用できるもの
(例: --no-D、 --no-perms) や、さまざまな状況で異なる既定値を持つもの (例: --no-whole-file、
--no-blocking-io、 --no-dirs) を含め、多くのものに否定のものがあります。全ての有効な否定オプションは、"no-"
プレフィックスの後に短いオプション名と長いオプション名の両方を受け付けます(例えば、--no-Rは --no-relative
と同じです)。
-
たとえば、 --archive (-a) を使用したいが --owner (-o) は使用したくない場合、-a を
-rlptgD に変換する代わりに、 -a --no-o (aka --archive --no-owner) を指定できます。
-
オプションの順序は重要です。 " --no-r -a" を指定すると、 " -r " オプションは "-a --no-r"
とは逆にオンになります。また、 --files-from
オプションの副作用は位置的なものではないことにも注意してください。これは、いくつかのオプションの既定値状態に影響し、 -a
の意味をわずかに変更するためです (詳細については、 --files-from オプションを参照してください)。
- --recursive, -r
-
これは rsync にディレクトリを再帰的にコピーするように伝えます。単一ディレクトリのスキャンを許可するオプションについては、--dirs
(-d) も参照してください。
-
転送するファイルのリストを作成するための増分再帰の説明については、--inc-recursive オプションを参照してください。
- --inc-recursive, --i-r
-
このオプションは、ファイルのスキャン時に増分再帰を明示的に有効にします。これは、--recursive オプションを使用し、転送の両側で
rsync 3.0.0 ( 2008年 3月リリース) 以降を実行している場合に、既定で有効にされます。
-
増分再帰では、非増分再帰に比べて使用するメモリ量がはるかに少なくなります。また、転送をより迅速に開始できます
(ファイル転送を開始する前に転送階層全体をスキャンする必要がないため)。ソースファイルで再帰が有効になっていない場合、このオプションは効果がありません。
-
いくつかのオプションは、完全なファイルリストを知るために rsync
を必要とするので、これらのオプションは増分再帰モードを無効にします。次のようなものが含まれています:
-
-
- o
-
--delete-before (--delete の旧既定値)
- o
-
--delete-after
- o
-
--prune-empty-dirs
- o
-
--delay-updates
-
増分再帰と互換性を持たせるために、--delete-during は --delete の既定削除モードです。
-
増分再帰の副作用の 1 つは、再帰的にスキャンされたディレクトリ内の欠落したサブディレクトリが、サブディレクトリに再帰する前に (既定値で)
作成されることです。この (非増分再帰と比較して) より早い作成ポイントにより、rsync
は終了したディレクトリの修正時間をすぐに設定することができます
(一連の再帰的なコピーが終了するまで遅延させる必要はありません)。ただし、これらの初期ディレクトリには、まだ完全なモード、mtime、または所有権が設定されていません。これらのディレクトリは、サブディレクトリのコピーが実際に開始されるまで、より制限的な権限を持っています。この早期作成方式は、--omit-dir-times
オプションを使用することで回避できます。
-
増分再帰を無効にするには、--no-inc-recursive(--no-i-r オプションを使用します。
- --no-inc-recursive, --no-i-r
-
--recursive オプションの増分再帰アルゴリズムを使用不可にします。これにより、rsync
はファイル転送を開始する前に、ファイルリスト全体をスキャンします。詳細は --inc-recursive を参照してください。
- --relative, -R
-
相対パスを使用します。これは、コマンドラインで指定されたフルパス名が、ファイル名の最後の部分だけでなく、サーバに送信されることを意味します。これは、複数の異なるディレクトリを同時に送信する場合に特に便利です。たとえば、次のコマンド:
-
-
rsync -av /foo/bar/baz.c remote:/tmp/
-
は、リモートマシンの /tmp/ に baz.c という名前のファイルを作成します。代わりに
-
-
rsync -avR /foo/bar/baz.c remote:/tmp/
-
を実行すると、/tmp/foo/bar/baz.c
という名前のファイルがリモートマシン上に作成され、そのフルパスが保持されます。これらの追加のパス要素は、 "暗黙のディレクトリ" と呼ばれます
(つまり、上記の例では "foo" と "foo/bar" ディレクトリ)。
-
Rsync
は、たとえパス要素が実際には送信側のシンボリックリンクであっても、これらの暗黙のディレクトリを常にファイルリスト内の実際のディレクトリとして送信します。これにより、パスにシンボリックリンクが含まれるファイルのフルパスをコピーするときに、実際に予期しない動作が発生するのを防ぎます。サーバ側のシンボリックリンクを複製したい場合は、シンボリックリンクのパスと、対象となるディレクトリの実際のパスの両方を含めてください。送信側が古い
rsync を扱っているなら、--no-implied-dirs オプションを使う必要があるかもしれません。
-
また、指定したパスごとに暗黙のディレクトリとして送信されるパス情報の量を制限することもできます。送信側の最新の rsync (2006年
3月にリリースされた 2.6.7 以降) では、次のようにドットとスラッシュをソースパスに挿入できます。
-
-
rsync -avR /foo/./bar/baz.c remote:/tmp/
-
これにより、受信側マシンに /tmp/bar/baz.c が作成されます。(ドットの後にはスラッシュが必要なので、"/foo/."
は省略されません)。古い rsync
バージョンでは、ソースパスを制限するためにディレクトリを変更する必要があります。。たとえば、ファイルをプッシュする場合は次のようになります:
-
-
(cd /foo; rsync -avR bar/baz.c remote:/tmp/)
-
(小括弧は2つのコマンドをサブシェルに入れて、 "cd" コマンドが将来のコマンドに対して有効にならないようにしていることに注意してください。) 古い
rsync からファイルをプルしている場合は、次の方式を使用します (ただし、デーモン以外の転送に対してのみ)。
-
-
rsync -avR --rsync-path="cd /foo; rsync" \
remote:bar/baz.c /tmp/
- --no-implied-dirs
-
このオプションは、--relative
オプションの既定値の動作に影響します。これが指定されている場合、ソース名からの暗黙のディレクトリの属性は転送に含まれません。つまり、出力先システムの対応するパス要素は、存在する場合でも変更されず、不足している暗黙のディレクトリは既定値の属性付きで作成されます。これにより、これらの暗黙のパス要素に大きな違いが生じることもあります。たとえば、受信側のディレクトリへのシンボリックリンクである場合などです。
-
例えば、コマンドライン引数や files-from エントリが rsync に対してファイル "path/foo/file"
を転送するように指示した場合、--relative が使用されていれば、ディレクトリ "path" と "path/foo"
は暗黙的に示されます。 "path/foo" が宛先システム上の "bar" へのシンボリックリンクである場合、受信側 rsync は通常、
"path/foo"
を削除し、それをディレクトリとして再作成し、新しいディレクトリにファイルを受信します。--no-implied-dirsでは、受信側 rsync
は既存の "path/foo" シンボリックリンクをそのまま残し、それに従います。したがって、ファイルはシンボリックリンクを介して書き込まれ、
"path/bar" に置かれます。セキュリティ上の意味に注意してください。受信側にすでに存在するツリー内の symlink-to-directory
は、ファイルが書き込まれる場所をリダイレクトするので、宛先の既存のパス要素を信頼する場合は --no-implied-dirs
のみを使用してください。(シンボリックリンクのターゲットが絶対パスであったり、宛先ツリーをエスケープしている場合でも、安全なパスリゾルバはシンボリックリンクをたどるのではなく、拒否します。)
このリンクを維持するもう 1つの方法は、--keep-dirlinks オプションを使用することです
(このオプションは、転送の残りの部分におけるディレクトリへのシンボリックリンクにも影響します)。
-
3.0.0 (2008年 3月) より前の rsync
からファイルをプルする時、要求するパスに送信側がシンボリックリンクを持っていて、暗黙のディレクトリを通常のディレクトリとして転送したい場合、このオプションを使う必要があるかもしれません。
- --backup, -b
-
このオプションを使用すると、ファイルが転送または削除されるたびに、既存の転送先ファイルの名前が変更されます
(つまり、削除または上書きされる各ファイルの名前が変更されます)。--backup-dir および --suffix
オプションを使用して、バックアップファイルの保存場所と、サフィックスが追加される場合はそのサフィックスを制御できます。
-
--backup-dir を指定しない場合:
-
-
- 1.
-
--omit-dir-times オプションは強制的にオンになります。
-
-
--delete (--delete-excluded なし) を使用すると、rsync はバックアップ接尾辞に対する "保護"
フィルタルールを、-f "P *~" のような既存のすべてのフィルタの末尾に追加します。.
このルールは、以前にバックアップしたファイルが削除されないようにします。
-
独自のフィルタルールを指定している場合は、独自の除外/保護ルールをリストの上位のどこかに手動で挿入して、そのルールの優先度が十分に高くなるようにする必要があることに注意してください
(たとえば、ルールの末尾に * の包含/除外が指定されている場合、自動追加ルールには到達しません。
- --backup-dir=DIR
-
これは --backup オプションを意味し、受信側の指定されたディレクトリにすべてのバックアップを保存するように rsync
に指示します。これは増分バックアップに使用できます。--suffix オプションを使用してバックアップ接尾辞を追加指定することもできます
(指定しない場合、指定したディレクトリにバックアップされたファイルは、元のファイル名を保持します)。
-
相対パスを指定すると、バックアップディレクトリは保存先ディレクトリからの相対パスになり、絶対パス、または "./"
で始まるパスのいずれかを指定する必要があることに注意してください。Rsync
デーモンが受信側の場合、バックアップディレクトリはモジュールのパス階層の外に出ることができないため、誤ってバックアップディレクトリを削除したり、バックアップディレクトリにコピーしたりしないように特に注意してください。
- --suffix=SUFFIX
-
このオプションを使用すると、--backup (-b)
オプションで使用される既定値バックアップサフィックスを上書きすることができます。--backup-dir が指定されていない場合、既定値の接尾辞は
~ です。それ以外の場合は空の文字列です。
- --update, -u
-
これにより、rsync
は、デスティネーション上に存在し、修正時刻がソースファイルよりも新しいファイルをスキップします。(既存のデスティネーションファイルの修正時間がソースファイルと同じ場合、サイズが異なると更新されます。)
-
これは、ディレクトリ、シンボリックリンク、その他の特殊ファイルのコピーには影響しないことに注意してください。また、送信者と受信者の間のオブジェクトタイプの違いは、オブジェクトの日付に関係なく、更新するのに十分重要であると常に考えられています。たとえば、転送元にディレクトリがあり、転送先にファイルがある場合は、タイムスタンプに関係なく転送が行われます。
-
このオプションはTRANSFER RULE であるため、副作用の除外を期待しないでください。
-
--inplace と
--updateを組み合わせることを選択した場合の注意:転送が中断されると、受信側には変更時刻が非常に新しい部分的なファイルが残るため、転送を再実行しても、中断されたファイルは継続されない可能性があります。したがって、中断された進行中のファイルを処理するための手動手順を実装していない限り、通常はこれと
--inplace を組み合わせることを避けるのが最善です。
- --inplace
-
このオプションは、そのデータが更新される必要があるとき、rsync
がファイルを転送する方法を変更します。ファイルの新しいコピーを作成し、それが完了したときにそれを所定の場所に移動する既定値の方法の代わりに、rsync
は代わりに更新されたデータを宛先ファイルに直接書き込みます。
-
これには次のような効果があります:
-
-
- o
-
ハードリンクは解除されません。これは、新しいデータが、宛先ファイルへの他のハードリンクを通じて表示されることを意味します。さらに、異なるソースファイルを複数リンクされた宛先ファイルにコピーしようとすると、宛先データが前後に変化する
"綱引き" が発生します。
- o
-
使用中のバイナリは更新できません (OS がこれを防止するか、データをスワップインしようとするバイナリが誤動作またはクラッシュします)。
- o
-
転送中、ファイルのデータは矛盾した状態になり、転送が中断されたり、更新が失敗したりすると、そのままの状態になります。
- o
-
rsync
が書き込めないファイルは更新できません。スーパーユーザは任意のファイルを更新できますが、通常のユーザがファイルを開いて書き込みを成功させるには、書き込み権限を付与する必要があります。
- o
-
コピー先ファイルの一部のデータが、ファイル内の後の位置にコピーできるようになる前に上書きされる場合、rsync
の差分転送アルゴリズムの効率が低下する可能性があります。--backup を使用している場合、rsync
は転送の基本ファイルとしてバックアップファイルを使用するのに十分な機能を備えているため、これは適用されません。
-
警告:
他のユーザがアクセスしているファイルを更新する場合は、このオプションを使用しないでください。コピーにこのオプションを使用する場合は注意してください。
-
このオプションは、ブロックベースの変更や追加データを含む大きなファイルを転送する場合や、ネットワークではなくディスクにバインドされているシステムで使用すると便利です。また、Copy-On-Write
ファイルシステムのスナップショットが、わずかな変更しかないファイルの内容全体を分岐させないようにするのにも役立ちます。
-
このオプションは、--partial (転送が中断されてもファイルは削除されない) を仮定しますが、--partial-dir および
--delay-updates と競合します。
- --append
-
この特殊なコピーモードは、サイズが大きくなることがわかっている更新ファイル、つまり、受信側の既存のコンテンツが送信側のコンテンツと同じであることがわかっている更新ファイルにのみ適用できます。転送されるすべてのファイルが共有されていることを
--append が確認していない場合、 100%
の使用は危険であり、ファイルが増加します。したがって、フィルタルールを使用して、この基準に適合しないファイルを確実に除外する必要があります。
-
Rsync は、ファイル内の既存のコンテンツを検証せずに、これらの成長するファイルをインプレースで更新します
(追加するコンテンツのみを検証します)。Rsync
は、受信側に存在するファイルで、送信側の関連ファイルよりも短くないものをスキップします。また、送信ネゴシエーション中に送信側のサイズが小さくなったファイルもスキップします
(これが発生すると、rsync は "縮小された" ファイルについて警告します)。
-
これは、ファイルを転送する必要がない場合に、ファイルの非内容属性 (例えば、許可、所有権など)
の更新を妨げるものではなく、ディレクトリや非正規ファイルの更新にも影響しません。
- --append-verify
-
この特殊なコピーモードは、--append
と同様に機能します。ただし、ファイル内のすべてのデータがチェックサム検証に含まれるため、効率は低下しますが、安全性が向上する可能性があります。このオプションは、転送されるすべてのファイルが共有されていることを
100% 確認していない場合、ファイルが増加する可能性がある危険性があります。詳細については、--append オプションを参照してください。
-
注意: rsync 3.0.0 (2008年 3月) より前は、--append オプションは--append-verify
のように動作しました。したがって、もしあなたが古い rsync と通信している (あるいは転送が 30より前のプロトコルを使用している)
なら、どちらかの append オプションを指定することで、--append-verify 転送を開始します。
- --dirs, -d
-
検出されたすべてのディレクトリを含めるように送信側に指示します。--recursive とは異なり、指定されたディレクトリ名が "."
であるか、末尾にスラッシュが付いていない限り、ディレクトリの内容はコピーされません ( "." 、 "dir/." 、 "dir/"
など)。このオプションまたは --recursive オプションが指定されていない場合、rsync は遭遇したすべてのディレクトリをスキップします
(それぞれについてその旨のメッセージを出力します)。--dirs と --recursive
の両方を指定すると、--recursive が優先されます。
-
--dirs オプションは、 --files-from オプションによって、または --list-only が指定されていない場合は
(ディレクトリがリストに表示されるように) --list-only オプション (--recursive の暗黙的な使用を含む)
によって暗黙的に指定されます。この機能をオフにする場合は、--no-dirs (または --no-d) を指定します。
-
また、下位互換性ヘルパーオプション --old-dirs も参照してください。
- --old-dirs, --old-d
-
この後方互換性ヘルパーは、-r --exclude='/*/*' のハックを使用して古いリモート rsync
を取得し、再帰なしで単一のディレクトリをリストするように rsync に指示します。
- --mkpath
-
保存先パスの欠落しているパスコンポーネントをすべて作成します。
-
既定では、宛先パスが存在しない場合、rsync
は宛先パスの最後のコンポーネントのみを作成します。ほかのコンポーネントが存在しない場合はエラーです。これは、保存先のパス指定の誤りを検出するのに役立ちます。このオプションを使用すると、rsync
は、受信側で mkdir -p $DEST_PATH が実行された場合と同様に、欠落しているすべての宛先パスコンポーネントを作成します。
-
保存先のパスを指定する場合、末尾にスラッシュが含まれていれば、ファイルリストの項目が 1
つであっても、パス全体が作成されるディレクトリ名として扱われます。最終的なコピー先パスの構成要素をディレクトリとして作成すべきかどうかをrsyncが判断する方法の詳細については、
"COPYING TO A DIFFERENT NAME" 節を参照してください。
-
新しく作成された宛先ディレクトリを送信側のディレクトリと一致させたい場合は、--mkpath の代わりに --relative(-R)
を使用する必要があります。たとえば、次の 2つのコマンドは同じ宛先ツリーになりますが、 "some/extra/path"
コンポーネントが送信側のディレクトリに一致することを保証するのは、2番目のコマンドだけです。
-
-
rsync -ai --mkpath host:some/extra/path/*.c some/extra/path/
rsync -aiR host:some/extra/path/*.c ./
- --links, -l
-
転送されたファイルに symlink を追加します。symlink に遭遇するたびに "non-regular file"
警告を出して騒々しく無視するのではありません。別の方法として、 --info=nonreg0 を指定して警告を消すこともできます。
-
シンボリックリンクの既定値処理は、受信側で各シンボリックリンクの変更されていない値を再作成することです。
-
複数オプションの情報については、SYMBOLIC LINKS 節を参照してください。
- --copy-links, -L
-
送信側は、転送で検出された各シンボリックリンクを、参照するファイルまたはディレクトリへのシンボリックリンクチェーンに従って、参照項目に変換します。シンボリックリンクチェーンが壊れている場合は、エラーが出力され、そのファイルは転送から除外されます。
-
転送にはシンボリックリンクが残っていないため、このオプションは、転送のシンボリックリンクに影響する他のオプションよりも優先されます。
-
このオプションは受信側の既存のシンボリックリンクの扱いを変更しません。
-
ディレクトリへのシンボリックリンクを受信側で実際のディレクトリとして扱う必要がある場合は、--keep-dirlinks(-K)
を参照してください。
-
複数オプションの情報については、SYMBOLIC LINKS 節を参照してください。
- --copy-unsafe-links
-
これは rsync に、コピーされたツリーの外を指すシンボリックリンクの referent
をコピーするように伝えます。絶対シンボリックリンクも通常のファイルと同様に扱われ、--relative
が使用されている場合は、ソースパス自体にあるシンボリックリンクも同様に扱われます。
-
シンボリックリンクは、ディスク上で解決することなく、その値の字句テストによって安全でないと判断されます。絶対または空のターゲットは、常に安全ではありません。相対ターゲットは、その
".." コンポーネントが移動の最上部よりも上に上昇する場合、安全ではありません。先行するプレフィックス以外の場所に表示される ".."
(埋め込みまたは後続の "/..")
も、安全ではないものとして扱われます。トップは、ソースの指定方法によって設定されます。ソースの末尾にスラッシュがある場合 (例:
"/src/subdir/" が
"/dest/subdir"にコピーされた)、そのディレクトリ自体がトップになるため、シンボリックリンクはその上を指していない可能性があります。末尾にスラッシュがない場合
(例: "/src/subdir" が "/dest/"にコピーされた)、ソースの親 ("/src") が先頭になるため、 "subdir"
は転送内の名前であり、相対シンボリックリンクはその中の他の名前を指している可能性があります。
-
安全なシンボリックリンクは --links
が同時に指定された場合、または暗黙的に指定された場合にのみコピーされることに注意してください。--copy-unsafe-links
オプションは、--copy-links と組み合わせても特に効果はありません。
-
複数オプションの情報については、SYMBOLIC LINKS 節を参照してください。
- --safe-links
-
これは受信側の rsync
に、コピーされたツリーの外を指しているシンボリックリンクを無視するように伝えます。すべての絶対シンボリックリンクも無視されます。
-
この無視は受信側で行われるため、送信側がシンボリックリンクを破棄した場合 (--munge-links を使用している場合)
でも、この無視は有効です。また、シンボリックリンクが安全でないと見なされてスキップされた場合、転送時にファイルが存在すると、受信側で一致するファイルが削除されなくなるため、削除にも影響します。
-
このオプションは --links (あるいは --archiveのように --links
を意味するオプション)と組み合わされなければ効果がありません。なぜなら --links
がなければシンボリックリンクの転送は行われないからです。その効果は --copy-unsafe-links に取って代わられます。
-
このオプションを--relative と組み合わせて使用すると、予期しない結果になることがあります。
-
複数オプションの情報については、SYMBOLIC LINKS 節を参照してください。
- --insecure-links
-
Rsync の既定では、 operator
がコマンドラインで提供するディレクトリとファイルのパスを、防御的なディレクトリツリーウォークで解決します。このウォークでは、シンボリックリンクコンポーネントが
uid 0
または実行中のユーザによって所有されている場合にのみシンボリックリンクコンポーネントに従い、他のユーザによって所有されているシンボリックリンクは拒否します。これにより、これらのディレクトリの
1つに書き込むことができる攻撃者が、オペレータ自身のシンボリックリンクを尊重しながら、特権付き rsync
を目的のツリーの外のターゲットにリダイレクトするシンボリックリンクを仕掛けることを防ぎます。この規則は、絶対パスと相対パスで同じです。これは、宛先ディレクトリと、次のオプションのパラメータに適用されます:
--backup-dir 、--temp-dir/-T 、--partial-dir 、--link-dest
、--compare-dest 、--copy-dest 、--log-file 、--password-file
、--files-from 、--include-from 、--exclude-from 、--filter
マージファイル、--write-batch および --read-batch。
-
--insecure-links
は、その防御をオフにし、それらのパス内のシンボリックリンクをたどるという歴史的な動作を復元します。これは、オペレータが指定した各パスに沿ったすべてのディレクトリを完全に信頼する場合にのみ使用してください。これは、ウォークが防止するシンボリックリンクリダイレクト攻撃を再公開するためです。
-
このオプションは ローカルのみ です。つまり、転送のリモート側には送信されません。opt-out を必要とするリモートシェルのピアは、例えば
--rsync-path を使ってそのアドレスを設定しなければならず、デーモンは決してこれを尊重しません -- クライアントから
--insecure-links
を受け取ったデーモンは要求を拒否します。単一の信頼されたモジュールに対して従来の動作を望むデーモン管理者は、代わりにそのモジュールの
rsyncd.conf(5) セクションに "insecure links = yes"
を設定します。クライアントは決してそれを有効にすることはできません。
-
複数オプションの情報については、SYMBOLIC LINKS 節を参照してください。
- --confine-root=DIR
-
既定のシンボリックリンクモードでは、演算子オプションのパスと --files-from
リストから選択されたパスの解決が許可される範囲が制限されます。DIR
外で終了するものは、たとえすべてのシンボリックリンクが信頼できるユーザによって所有されていたとしても、拒否されます。明示的なソースルートは、オペレータが選択した転送ルートのままです。所有権ウォークでは、誰がリンクを設置したかを尋ねます。これは、その道がどこから出てきたのかを尋ねます。
-
DIR は絶対パスで指定してください。既定値によって制限されるものは何もなく、--confine-root=/ はノーオペレーションです。
-
これは、リモートシェル上で制限されたディレクトリを提供するラッパー用に存在します。rrsync
はこのために提供されているもので、制限されたディレクトリが "/" でない場合は常に自動的にそれを渡します。このようなラッパーは、渡された
argv を検査することができますが、フィルタルールは代わりにプロトコルを通過します。クライアントは、 dir-merge ルール内の制限された dir
の外にあるマージファイルに名前を付け、サーバにフィルタルールとして読み込ませることができます。--delete
も冗長性も必要としないプルでは、除外のみのマージ ("-" 修飾子)
によりすべての行がパターン化され、クライアントは、それ自体の名前のどれが失われたかを知るファイルの内容を読み取ります。オープンを制限することとは、それを閉じることです。DIR
内のマージファイルは、以前と同じように動作し続けます。
-
デーモンはこのオプションを無視します -- そのモジュールディレクトリはすでに境界であり、オプションはクライアントが提供する argv
で到達するので、これを尊重することはモジュールの幅を広げることにしかなりません。
-
--insecure-links は同時に拒否されます。このオプトアウトは、 root
を強制するウォークをスキップする歴史的なオープンを復元するため、この 2 つを一緒にすると、静かに束縛がまったくないことを意味します。
-
--drop-D のように、これはリモート側に転送されません。これは、接続の一方の端に適用されることを意図しています。
- --munge-links
-
このオプションは転送の片側だけに影響し、rsync に対して、ファイル受信時には symlink 値を更新し、ファイル送信時には symlink
値を更新しないように通知します。 "Unmunging" はこのプロセスを逆にして、シンボリックリンクが元のターゲットを指すようにします。
-
このオプションは、rsync デーモンの設定ファイルや、rrsync (制限された rsync)
スクリプトに与えられたオプションなど、クライアントに知られることなくサーバ側で有効にすることができます。クライアント側で指定する場合、クライアント側でシンボリックリンクの変更が必要な場合は通常通りに指定し、サーバ側でシンボリックリンクの変更が必要な場合は
-M--munge-links
を使用して指定してください。ローカル転送では、クライアントが送信者であることに注意してください。したがって、このオプションを直接指定するとシンボリックリンクを削除し、リモートオプションとして指定するとシンボリックリンクを削除します。
-
このオプションは、--remote-option 経由でデーモンに送信された場合には無効です。なぜなら、デーモンは "munge symlinks" パラメータでシンボリックリンクを破棄するかどうかを設定するからです。
-
シンボリックリンクの値は、一度変換されると munge されるか munge
されないかします。したがって、シンボリックリンクを非シンボリックリンクに変換するオプションは、mungeing/unmunging
の前に発生します。ただし、 --safe-linksは例外で、受信者が選択するので、munged/unmunged
された値に基づいて決定されます。これは、受信者が munging を有効にしている場合、--safe-links
を使用すると、すべてのシンボリックリンクが無視されることを意味します(munging によってすべてのシンボリックリンクが絶対リンクになります)。
-
rsync がシンボリックリンクを削除するために使う方法は、その値の前に文字列 "/rsyncd-munged/"
を付けることです。これにより、/rsyncd-munged
ディレクトリが存在しない限り、リンクが使用されなくなります。このオプションを有効にすると、そのパスがディレクトリかディレクトリへのシンボリックリンクの場合、rsync
は実行を拒否します
(ただし、起動時にのみチェックします)。1つ以上のシンボリックリンクをその場で削除/削除する方法については、ソースコードのサポートディレクトリにある
python スクリプト "munge-symlinks" も参照してください。
- --copy-dirlinks, -k
-
このオプションを指定すると、送信側はディレクトリへのシンボリックリンクを、あたかも実際のディレクトリであるかのように扱います。これは、
--copy-linksを使用することになるため、ディレクトリ以外へのシンボリックリンクに影響を与えたくない場合に便利です。
-
このオプションがないと、送信側がディレクトリをディレクトリへのシンボリックリンクで置き換えた場合、受信側は新しいシンボリックリンクの行く手にあるものを、ディレクトリ階層を含めてすべて削除します(--force
または --delete が有効である限り)。
-
受信側の類似のオプションについては、--keep-dirlinks も参照してください。
-
--copy-dirlinks
はソース内のディレクトリへのすべてのシンボリックリンクに適用されます。指定したいくつかのシンボリックリンクだけを追いたい場合は、それらを追加のソース引数として末尾にスラッシュを付けて渡し、
--relative を使用してパスを正しく一致させるという方法を使用できます。例:
-
-
rsync -r --relative src/./ src/./follow-me/ dest/
-
複数オプションの情報については、SYMBOLIC LINKS 節を参照してください。
- --keep-dirlinks, -K
-
このオプションを指定すると、受信側はディレクトリへのシンボリックリンクを、それが実際のディレクトリであるかのように扱います。ただし、これは送信側からの実際のディレクトリと一致する場合に限られます。このオプションを指定しないと、受信者のシンボリックリンクが削除され、実際のディレクトリに置き換えられます。
-
たとえば、ファイル "file" を含むディレクトリ "foo" を転送するが、受信側では "foo" がディレクトリ "bar"
へのシンボリックリンクであるとします。--keep-dirlinks がない場合、受信者はシンボリックリンク "foo"
を削除し、それをディレクトリとして再作成し、新しいディレクトリにファイルを受信します。--keep-dirlinks
があると、受信者はシンボリックリンクを保持し、 "file" は "bar" になります。
-
注意: --keep-dirlinks を使用する場合は、コピー内のすべてのシンボリックリンクを信頼するか、受信側で
--munge-links
オプションを有効にする必要があります!信頼できないユーザが実際のディレクトリへのシンボリックリンクを作成することが可能な場合、そのユーザは
(その後のコピーで)
シンボリックリンクを実際のディレクトリに置き換え、シンボリックリンクが参照するディレクトリの内容に影響を与えることができます。バックアップコピーの場合、受信階層を変更するには、シンボリックリンクではなく、バインドマウントのようなものを使用する方がよいでしょう。
-
送信側の類似のオプションについては、--copy-dirlinks も参照してください。
-
複数オプションの情報については、SYMBOLIC LINKS 節を参照してください。
- --hard-links, -H
-
これにより、rsync
はソース内でハードリンクされたファイルを検索し、宛先上の対応するファイルをリンクするように指示されます。このオプションを指定しない場合、ソース内のハードリンクされたファイルは、個別のファイルであるかのように扱われます。
-
このオプションは、必ずしも宛先上のハードリンクのパターンがソース上のパターンと正確に一致することを保証しません。宛先に余分なハードリンクが作成されるケースには、次のようなものがあります。
-
-
- o
-
コピー先に余分なハードリンク (ソースファイルリストに存在する以上のリンク)
が含まれている場合、コピーアルゴリズムは明示的にそれらを解除しません。ただし、1つまたは複数のパスに内容の違いがある場合は、通常のファイル更新処理によって余分なリンクが切断されます
(--inplace オプションを使用している場合を除く)。
- o
-
--link-dest ハードリンクを含むディレクトリを指定した場合、--link-dest
ファイルに対してデスティネーションファイルをリンクすると、--link-dest
による関連付けにより、デスティネーション内の一部のパスがリンクされる可能性があります。
-
rsync は転送セット内にあるファイル間のハードリンクのみを検出できることに注意してください。rsync
が、転送外のファイルへの余分なハードリンク接続を持つファイルを更新する場合、そのリンクは切断されます。この問題を回避するために --inplace
オプションを使用したい場合は、ファイルがどのように更新されているかを把握していることに十分注意してください。そうすれば、ハードリンクが残ることによって意図しない変更が発生することはありません
(詳細については、--inplace オプションを参照してください)。
-
増分再帰がアクティブな場合 (--inc-recursiveを参照)、rsync
は、その内容に対する別のリンクが階層内の他の場所に存在することを検出する前に、失われたハードリンクファイルを転送する場合があります。これは、転送の正確さ
(つまり、どのファイルが一緒にハードリンクされるか) には影響せず、効率
(つまり、後で転送される際に、ハードリンクされたファイルセットの別のメンバーで見つかる可能性のある、ハードリンクされたファイルの新しい初期コピーのためにデータをコピーすること)
にのみ影響します。この非効率性を回避する 1つの方法は、--no-inc-recursive オプションを使用して増分再帰を無効にすることです。
- --perms, -p
-
このオプションを指定すると、受信側の rsync は、コピー先のパーミッションをコピー元のパーミッションと同じに設定します。(rsync
がソースパーミッションとみなすものを変更する方法については、--chmod オプションも参照してください。)
-
このオプションが off の場合、アクセス権は次のように設定されます。
-
-
- o
-
既存のファイル (更新されたファイルを含む) は、既存のアクセス権を保持します。ただし、--executability
オプションは、ファイルの実行アクセス権のみを変更する場合があります。
- o
-
新しいファイルの "通常の" パーミッションビットは、受信ディレクトリの既定値パーミッション (受信プロセスの umask
か、行き先ディレクトリの既定値 ACL 経由で指定されたパーミッション)
でマスクされたソースファイルのパーミッションに設定され、特別なパーミッションビットは無効になります。ただし、新しいディレクトリが親ディレクトリから
setgid ビットを継承している場合を除きます。
-
したがって、--perms と --executability が両方とも無効な場合、rsync の動作は、cp(1) や
tar(1) などの他のファイルコピーユーティリティの動作と同じです。
-
要約すると、コピー先のファイル (新旧両方) にコピー元のパーミッションを与えるには、--perms を使います。(既存のファイルを変更せずに)
新しいファイルに宛先における既定値のアクセス権を与えるには、--perms
オプションがオフになっていることを確認し、--chmod=ugo=rwX
を使用してください。これにより、マスクされていないすべてのビットが有効になります。この後者の動作を入力しやすくしたい場合は、この動作に対する popt
エイリアスを定義することができます。たとえば、次の行をファイル~/.popt に入れます (次の例は、-Z
オプションを定義し、--no-g 宛先ディレクトリの既定値グループを使用するためを含みます):
-
-
rsync alias -Z --no-p --no-g --chmod=ugo=rwX
-
この新しいオプションは、次のようなコマンドで使用できます:
-
-
rsync -avZ src/ dest/
-
(注意: -a が -Z に続いていないことを確認してください。そうしないと、上記 2 つの --no-*
オプションが再度有効になります。
-
リモート rsync が 2.6.7 (2006年 3月) よりも古く、それが受信側である場合、--perms
がオフの場合の動作は、上記の動作と異なる可能性があることに注意してください。
- --executability, -E
-
このオプションを指定すると、--perms が有効になっていない場合、rsync
は通常のファイルの実行可能性または実行不可能性を保持します。通常のファイルは、そのパーミッションで少なくとも1つの "x"
がオンになっている場合、実行可能と見なされます。既存のデスティネーション・ファイルの実行可能性が、対応するソース・ファイルのそれと異なる場合、rsync
はデスティネーションファイルのパーミッションを次のように変更します。
-
-
- o
-
ファイルを実行不可にするために、rsync はすべての 'x' パーミッションをオフにします。
- o
-
ファイルを実行可能にするために、rsync は、対応する "r" 許可が有効になっている各 "x" 許可をオンにします。
-
--perms が有効な場合、このオプションは無視されます。
- --acls, -A
-
このオプションを使用すると、rsync によって宛先 ACL が更新され、送信元の ACL と同じになります。このオプションは、--perms
を仮定します。
-
このオプションが正しく機能するには、ソースのシステムとデスティネーションのシステムで、互換性がある ACL エントリが必要です。互換性のない ACL
をバックアップおよび復元する方法については、--fake-super オプションを参照してください。
- --xattrs, -X
-
このオプションを指定すると、rsync はデスティネーションの拡張属性を更新して、ソースの拡張属性と同じにします。
-
拡張属性の名前空間をサポートするシステムでは、スーパーユーザがコピーを実行すると、system.*
を除くすべての名前空間がコピーされます。通常ユーザは、user.*
名前空間のみをコピーします。ユーザ以外のネームスペースを通常ユーザとしてバックアップおよびリストアできるようにするには、--fake-super
オプションを参照してください。
-
上記の名前フィルタリングは、x 修飾子を使用して 1 つ以上のフィルタオプションを使用することで上書きできます。xattr
に影響を与えるフィルタルールを指定する場合、rsync は、どの xattr
名がコピーされ、どの名前が削除を許可されるかについての追加のフィルタリングと同様に、固有のシステム/ユーザフィルタリングを行うことを要求します。たとえば、system
名前空間を省略するには、次のように指定します。
-
-
--filter='-x system.*'
-
ユーザ名前空間以外のすべての名前空間をスキップするには、 ユーザを否定するマッチを指定します。
-
-
--filter='-x! user.*'
-
属性が削除されないようにするには、すべての名前を除外する受信者のみのルールを指定します。
-
-
--filter='-xr *'
-
-X オプションは、rsync の特別な xattr 値 (例えば、--fake-super で使用される値)
は、このオプションを繰り返さない限り (例えば、-XX)、コピーされないことに注意してください。この "すべての xattrs をコピー"
モードは、--fake-super では使用できません。
- --chmod=CHMOD
-
このオプションは rsync に、1つ以上のカンマで区切られた "chmod"
モードを、転送中のファイルのパーミッションに適用するように伝えます。結果の値は、送信側がファイルに提供したアクセス権であるかのように扱われます。つまり、--perms
が有効になっていない場合、このオプションは既存のファイルに影響を与えないように見えます。
-
chmod(1) のマニュアルページで指定された通常の構文解析規則に加えて、 "D"
を前に付けることによってディレクトリにのみ適用される項目を指定するか、または "F"
を前に付けることによってファイルにのみ適用される項目を指定することができます。たとえば、次のように指定すると、すべてのディレクトリが set-gid
とマークされ、どのファイルも他のユーザから書き込みができず、両方ともユーザの書き込みとグループの書き込みが可能で、両方ともすべてのビットにわたって一貫した実行可能性を持つことが保証されます。
-
-
--chmod=Dg+s,ug+w,Fo-w,+X
-
8 進数のモード番号を使用することもできます。
-
-
--chmod=D2775,F664
-
シンボリックなアクセス権コピーモードも使用できます。たとえば、g=u 、o=g 、g-o などです。許可コピー項目は、1つのクラス
(u 、g または o) からのみコピーすることができ、同じ項目内の rwxXst
許可文字と組み合わせることはできません。両方の動作が必要な場合は、カンマ区切りの項目を使用します。たとえば、g=o,o= です。
-
パーミッションコピー = 項目はまた、それが更新する各宛先クラスの特別なビットをクリアし (u はsetuid をクリアし、g
はsetgid をクリアし、o はsticky をクリアします)、GNU chmod の動作に一致します。
-
また、複数の --chmod オプションを指定することもできます。追加の各オプションは、行う変更のリストに追加されるだけだからです。
-
結果として得られる権限値を転送内のファイルに適用する方法については、--perms および --executability
オプションを参照してください。
- --owner, -o
-
このオプションを使用すると、rsync は各デスティネーションファイルシステムオブジェクト (ファイル、ディレクトリなど)
の所有者をソースオブジェクトと同じに設定します。ただし、受信する rsync がスーパーユーザとして実行されている場合に限ります (--super
および --fake-super オプションも参照)。このオプションがない場合、新規ファイルまたは転送ファイル (あるいはその両方)
の所有者は、受信側で起動したユーザに設定されます。
-
所有者を維持するために、一致する名前は既定値別に関連付けられますが、状況によっては ID 番号を使用することになる場合があります
(詳細については、--numeric-ids オプションを参照してください)。
- --group, -g
-
このオプションを指定すると、rsync は各デスティネーションファイルシステムオブジェクト (ファイル、ディレクトリなど)
のグループを、ソースオブジェクトと同じになるように設定します。受信プログラムがスーパーユーザとして実行されていない場合 (または
--no-super
が指定された場合)、受信側の起動ユーザがメンバーであるグループのみが保持されます。このオプションを指定しないと、グループは受信側の起動ユーザの既定値グループに設定されます。
-
グループ情報を保持すると、一致する名前が既定値別に関連付けられますが、状況によっては ID 番号を使用することになる場合があります
(詳細については、--numeric-ids オプションを参照してください)。
- --devices
-
このオプションを指定すると、rsync
は文字デバイスファイルとブロックデバイスファイルをリモートシステムに転送し、これらのデバイスを再作成します。受信側 rsync
がスーパーユーザとして実行されておらず、--super も--fake-super も有効でない場合、このオプションは効果がありません。
-
デバイスファイルが作成されない場合、rsync は通常の "非通常ファイル" 警告を生成します。--info=nonreg0
と指定すると、警告を表示しないようにすることができます。
- --specials
-
このオプションは rsync にソケットや FIFO
のような特別なファイルを転送させます。これらのファイルを作成するには、通常、スーパーユーザ権限は必要ありません。--drop-D
を使用すると、転送が要求した内容に関係なく、受信側の rsync がそれらの作成を拒否するようになります。
-
既定値として、このオプションが設定されていない場合、rsync は各特殊ファイルに対して "非通常ファイル"
警告を生成します。--info=nonreg0 と指定すると、警告を表示しないようにすることができます。
- -D
-
-D オプションは "--devices --specials" と同じです。
- --drop-D
-
これは受信側の rsync に、どのような転送が要求されても、デバイスファイルと特別なファイルの作成を拒否するように伝えます。これらのエントリは、
-D が使用されなかったかのように正確にスキップされ、通常の "非正規ファイル" 警告が表示されます。
-
これは --no-D とは異なり、ファイルリストのエンコード方法ではなく、作成された内容のみが変更されます。--no-D
はまた、デバイスとスペシャルファイルが通信中に運ぶ
rdevフィールドをオフにします。したがって、これを接続の一方の端だけに適用すると、両端は符号化に関して一致しないままとなり、転送は失敗します。したがって、--drop-D
はそれ自体で受信側に追加でき、これが存在する理由です -- rrsync
ラッパーはこれを使用して、制限されたディレクトリのクライアントがデバイスや特殊ファイルを作成するのを停止します。すでに存在するノードはそのままになります。
-
これは作成を保留するだけなので、rsync の送信には影響しません。
-
このオプションはリモート側には転送されません。なぜなら、このオプションの目的は、接続の一方の端にそれ自体を適用することだからです。したがって、これは指定した
rsync に影響しますが、それ以外には影響をしません。すなわち、ローカルコピー上、またはある rrsync プロセスが構築するような
--server 呼び出しの受信側でです。コマンドラインからリモートの受信者に設定するには、明示的に
--remote-option(-M) を送信します:
-
-
rsync -av -M--drop-D src/ host:dest/
-
単純な --drop-D をプッシュに渡すことは、ローカルな送信者にのみ影響し、そこでは何もしません。。
- --copy-devices
-
これにより、 rsync は送信側のデバイスを通常のファイルとして扱い、通常のコピー先ファイル(または、 --write-devices
も指定されている場合は別のデバイス)にコピーできるようになります。
-
このオプションは、rsync デーモンによって既定では拒否されます。
- --write-devices
-
これは rsync に、受信側のデバイスを通常のファイルとして扱うように指示し、ファイルデータのデバイスへの書き込みを許可します。
-
このオプションは、--inplace オプションを仮定しています。
-
特に root で rsync
を実行している場合は、転送の受信側にどのようなデバイスがあるかを知っておく必要があるため、これを使用する場合は注意してください。
-
このオプションは、rsync デーモンによって既定では拒否されます。
- --times, -t
-
これは rsync に対して、コピー先ファイル (ディレクトリ、シンボリックリンク、デバイスなどを含む)
の修正時刻を、コピー元ファイルと同じ時刻に設定するように指示します。このオプションを使用しない場合、変更されていないファイルを除外する最適化は有効にならないことに注意してください。つまり、-t
または -a がないと、次の転送は --ignore-times(-I)
を使用したかのように動作し、すべてのファイルが更新されます。(rsync
の差分転送アルゴリズムは、ファイルが実際に変更されていない場合、更新をかなり効率的にしますが、-t を使用する方がはるかに優れています。)
-
ネゴシエートされたプロトコルが 30 よりも古い場合 -- 通常はリモート rsync が 3.0.0 (2008年 3月)
よりも古いためですが、--protocol が強制することもあります -- 通信可能な変更時刻の範囲は制限されます。1970
年より前の日付のファイルがある場合は、日付の全範囲が伝達されるように、rsync 実行可能ファイルがアップグレードされていることを確認してください。
- --atimes, -U
-
これにより、宛先ファイルのアクセス (使用) 時間をソースファイルと同じ値に設定するように rsync に指示します。
-
これを繰り返すと、--open-noatime オプションも設定されます。これは、ファイル転送後に rsync
を余分に実行しなくても、送信側システムと受信側システムが転送されたファイルに同じアクセス時間を持つようにするのに役立ちます。
- --open-noatime
-
これは rsyn cに O_NOATIME フラグ (これをサポートするシステム上で)
を付けてファイルを開き、転送されているファイルのアクセス時間が変更されるのを避けるように伝えます。使用している OS が O_NOATIME
フラグをサポートしていない場合、 rsync は黙ってこのオプションを無視します。また、ファイルシステムの中には、O_NOATIME
フラグが設定されていなくても、読み取りアクセス時に atime が更新されないようにマウントされるものがあることにも注意してください。
- --crtimes, -N,
-
これは、宛先ファイルの作成時間 (=新規) をソースファイルと同じ値に設定するように rsync
に指示します。このオプションをサポートするには、お使いの OS とファイルシステムが任意の作成 (誕生) 時間の設定をサポートしている必要があります。
- --omit-dir-times, -O
-
これは、rsync が変更、アクセス、作成時間を保持しているときに、ディレクトリを省略するように指示します。NFS
が受信側のディレクトリを共有している場合は、-O を使用するとよいでしょう。このオプションは、--backup-dir なしの
--backup を使用した場合に仮定されます。
-
このオプションには、--inc-recursive
節で説明されているように、増分再帰が有効になっている場合に、欠落しているサブディレクトリが早期に作成されるのを避けるという副作用もあります。
- --omit-link-times, -J
-
これは、rsync が変更、アクセス、作成時間を保持しているときにシンボリックリンクを省略するように指示します。
- --super
-
これは、たとえ受信側 rsync
がスーパーユーザによって実行されなかったとしても、受信側にスーパーユーザの処理を試みるように伝えます。これらのアクティビティには、--owner
オプションによるユーザの保持、--group オプションによるすべてのグループ (現在のユーザのグループだけでなく) の保持、および
--devices
オプションによるデバイスのコピーが含まれます。これは、スーパーユーザでなくてもこのような動作が可能なシステムの場合や、受信側がスーパーユーザで実行されていない場合に確実にエラーが発生するようにする場合に便利です。スーパーユーザの処理をオフにするには、スーパーユーザは
--no-super を使用できます。
- --fake-super
-
このオプションを有効にすると、rsync は、(必要に応じて)
各ファイルに追加された特別な拡張属性を介して特権属性を保存/復元することにより、スーパーユーザ処理をシミュレートします。これには、ファイルのオーナーとグループ
(既定値でない場合)、ファイルのデバイス情報
(デバイスファイルと特殊ファイルは空のテキストファイルとして作成されます)、実際のファイルに設定することを許可しないパーミッションビット
(例えば、実際のファイルは安全のために u-s、g-s、o-t を取得します)、またはオーナーのアクセスを制限するようなパーミッションビット
(実際のスーパーユーザは常にファイルにアクセス/変更ができるので、作成したファイルは、作成したユーザが常にアクセス/変更できます)
が含まれます。このオプションは、ACL (--xattrs が指定された場合) および非ユーザ拡張属性 (--ACLs が指定された場合)
も処理します。
-
これは、スーパーユーザを使用せずにデータをバックアップしたり、互換性のないシステムからの ACL を保存したりするのに適した方法です。
-
--fake-super
オプションは、このオプションが使用されている側にのみ影響します。リモートシェル接続のリモート側に影響を与えるには、--remote-option(-M)
オプションを使用します:
-
-
rsync -av -M--fake-super /src/ host:/dest/
-
ローカルコピーの場合、このオプションはソースとデスティネーションの両方に影響します。コピー先のファイルに対してのみこのオプションを有効にするには、-M--fake-super
を指定します。ローカルコピーでソースファイルに対してのみこのオプションを有効にしたい場合は、--fake-super と -M--super
を組み合わせます。
-
このオプションは、--super および --no-super によって上書きされます。
-
デーモンの rsyncd.conf ファイル中の fake super 設定も参照してください。
- --sparse, -S
-
スパースファイルを効率的に処理して、宛先で使用するスペースを少なくするように試みます。これは、ターゲットのファイルシステムがサポートするスパースファイルに依存します。スパースファイルとは、ファイルの一部にすべて
0バイトが含まれているため、対応するディスクブロックが割り当てられていないファイルのことです。
-
--inplace オプションと組み合わせた場合、--whole-file
オプションが有効でない限り、作成されるファイルはスパースブロックで終わらない可能性があります
(ファイルシステムのタイプとカーネルのバージョンによって異なります)。3.1.3 (2018 年 1月) より古いバージョンの rsync
は、--sparse と --inplace の組み合わせを受け付けないことに注意してください。
- --preallocate
-
これは、ファイルにデータを書き込む前に、各宛先ファイルを最終的なサイズに割り当てるように受信者に指示します。Rsyncは、Linux の
fallocate(2) システムコールや Cygwin のposix_fallocate(3)
によって提供される、実際のファイルシステムレベルの事前割り当てサポートのみを使用します。各ブロックに NULL バイトを書き込む遅い glibc
の実装ではありません。
-
このオプションがないと、大きなファイルはファイルシステム上で完全に連続したものにならないかもしれませんが、このオプションがあると、rsync
はおそらくより遅くコピーします。保存先がエクステントをサポートしていないファイルシステム (ext4、xfs、NTFS など)
の場合、このオプションはまったく効果がない可能性があります。
-
--sparse
と組み合わされた場合、カーネルのバージョンとファイルシステムのタイプが、割り当てられたデータにホールを作成することをサポートしている場合、ファイルはスパースブロックのみを持ちます
(ヌルバイトが割り当てられたシーケンスとは対照的に)。
- --dry-run, -n
-
これにより、rsync は何の変更も行わない試験的な実行を行い、実際の実行とほぼ同じ出力を生成します。最も一般的には、--verbose
(-v) や --itemize-changes (-i) オプションと組み合わせて使用し、実際に rsync
コマンドを実行する前に、rsync コマンドが何をするかを確認します。
-
--itemize-changes の出力は、予行演習とその後の実際の実行でまったく同じであると想定されます
(ソースまたは宛先への外部変更とシステムコールの失敗がない限り)。そうでない場合は、バグです。その他の出力はほとんど変更されませんが、一部の領域では異なる場合があります。特に、予行演習はファイル転送のために実際のデータを送信しないので、--progress
は効果がなく、 "送信されたバイト数" 、 "受信されたバイト数" 、 "リテラルデータ" 、 "一致したデータ" の統計は小さすぎ、 "高速化"
値はファイル転送が必要なかった場合の実行と同等です。
- --whole-file, -W
-
このオプションは rsync
の差分転送アルゴリズムを無効にします。その結果、転送された全てのファイルが送信されます。ソースマシンとデスティネーションマシン間の帯域幅がディスクへの帯域幅よりも高い場合
(特に "ディスク"
が実際にはネットワークで接続されたファイルシステムである場合)、このオプションを使用すると転送が速くなる可能性があります。これは、バッチ書き込みオプションが有効でない場合に限り、ソースと宛先の両方がローカルパスとして指定されたときの既定値です。
- --no-whole-file, --no-W
-
ローカル転送に対して既定で有効になっている場合は、ファイル全体の更新を無効にします。これは通常、rsync
の速度を低下させますが、宛先ファイルへの書き込みを最小限に抑えたい場合 (--inplaceと組み合わせている場合)
や、チェックサムベースの更新アルゴリズムをテストする場合に便利です。
-
詳細は、--whole-file オプションを参照してください。
- --checksum-choice=STR, --cc=STR
-
このオプションは、チェックサムアルゴリズムを上書きします。1つのアルゴリズム名が指定された場合、そのアルゴリズム名は転送チェックサムと転送前チェックサムの両方に使用されます
(転送前チェックサムは、--checksum
が指定されている場合のみ実行されることに注意してください)。2つの名前をコンマで区切って指定すると、最初の名前は転送チェックサムに影響し、2番目の名前は転送前チェックサムに影響します。
-
使用できるチェックサムオプションは次のとおりです。
-
-
- o
-
auto (自動選択の既定値)
- o
-
xxh128
- o
-
xxh3
- o
-
xxh64 (xxhash の別名
- o
-
md5
- o
-
md4
- o
-
sha1
- o
-
none
-
rsync --version を実行して、使用しているバージョンでコンパイルされた既定値のチェックサムリストを確認します
(上記のリストとは異なる場合があります)。
-
最初の (または唯一の) 名前に "none" が指定された場合、--whole-file
オプションは強制的にオンに設定され、転送されるデータに対してチェックサムの検証は実行されません。2番目の (または唯一の) 名前に "none"
が指定されている場合、--checksum オプションは使用できません。
-
"auto" オプションは既定値です。rsync は、クライアントとサーバ間のネゴシエーションに基づいて、次のようにアルゴリズムを選択します。
-
転送の両側が 3.2.0 (2020年 6月リリース)
以上の場合、各側は、ピアのリストにも表示される、自身の最優先アルゴリズムを選択します。双方ともリストを最も強いものから順に並べるので、互いに最も強い選択に収束します。共通のチェックサム選択肢が見つからなかった場合、rsync
はエラーで終了します。リモート rsync
が古すぎてチェックサムネゴシエーションをサポートできない場合は、プロトコルバージョンに基づいて値が選択されます (プロトコルの年齢に基づいて、MD5
または各種の MD4 から選択されます)。
-
既定値の順序は、環境変数 RSYNC_CHECKSUM_LIST
を、スペースで区切られた受け入れ可能なチェックサム名のリストに設定することによってカスタマイズできます。文字列に "&"
文字が含まれている場合は、 "クライアント文字列とサーバ文字列" に分割されます。それ以外の場合は、同じ文字列が両方に適用されます。文字列
(または文字列部分)
に空白以外の文字が含まれていない場合は、既定値チェックサムリストが使用されます。この方法では、転送前チェックサムとは別に転送チェックサムを指定することはできず、
"auto" およびすべての不明なチェックサム名は破棄されます。無効な名前のみを含むリストは、ネゴシエーションに失敗します。
-
--checksum-choice オプションを使用すると、この環境リストは無効になります。
- --one-file-system, -x
-
これは、再帰時にファイルシステムの境界を越えないよう rsync
に指示します。これは、複数のファイルシステムからコピーするアイテムを指定するユーザの機能を制限しません。ユーザが指定した各ディレクトリの階層構造たどる
rsync の再帰処理と、削除の間の受信側での類似の再帰処理だけです。また、rsync は、同じデバイスへの "バインド"
マウントを、同じファイルシステム上にあるものとして扱うことにも注意してください。
-
このオプションを繰り返すと、rsync
はすべてのマウントポイントディレクトリをコピーから除外します。それ以外の場合は、検出された各マウントポイントに空のディレクトリが含まれます
(マウントポイントディレクトリの属性にはアクセスできないため、マウントされたディレクトリの属性が使用されます)。
-
rsync が (--copy-links または --copy-unsafe-links 経由で)
シンボリックリンクを縮めるように指示された場合、他のデバイス上のディレクトリへのシンボリックリンクはマウントポイントのように扱われます。ディレクトリ以外へのシンボリックリンクはこのオプションの影響を受けません。
- --ignore-non-existing, --existing
-
これにより、宛先にまだ存在しないファイル (ディレクトリを含む) の作成をスキップするように rsync に指示します。このオプションを
--ignore-existing オプションと組み合わせて使用すると、ファイルは更新されません
(無関係なファイルを削除したいだけの場合に便利です)。
-
このオプションはTRANSFER RULE であるため、副作用の除外を期待しないでください。
- --ignore-existing
-
これは rsync に対して、コピー先に既に存在するファイルの更新をスキップするように指示します
(これは既存のディレクトリを無視しません。あるいは何も行いません)。詳細は、--ignore-non-existing を参照してください。
-
このオプションはTRANSFER RULE であるため、副作用の除外を期待しないでください。
-
このオプションは、中断されたバックアップの実行を継続する必要があるときに、--link-dest
オプションを使用してバックアップを実行する場合に便利です。--link-dest run は (適切に使用されると)
新しいディレクトリ階層にコピーされるため、[--ignore-existing
を使用すると、すでに処理されているファイルが変更されないようになります(これにより、ハードリンクされたファイルの権限の変更が回避されます)。これは、このオプションが宛先階層自体の既存のファイルのみを参照していることを意味します。
-
--info=skip2 が使用される場合、 rsync は "FILENAME exists
(INFO)"メッセージを出力します。ここで、INFO は "タイプの変更" 、 "合計の変更" ( -cが必要)、 "ファイルの変更"
(クイックチェックに基づく)、 "属性の変更" 、または "最新" のいずれかを示します。--info=skip1 を使用すると (2つの
-v オプションによっても示されます)、INFO 接尾辞なしで exists メッセージが出力されます。
- --remove-source-files
-
これは rsync に、転送の一部であり、受信側で正常に複製されたファイル (ディレクトリ以外を意味する) を送信側から削除するように指示します。
-
このオプションは、休止中のソースファイルに対してのみ使用する必要があることに注意してください。これを使用して、特定のディレクトリに表示されるファイルを別のホストに移動する場合は、完了したファイルの名前がソースディレクトリに直接書き込まれるのではなく、名前が変更されることを確認してください。これにより、rsync
は、まだ完全に書き込まれていないファイルを転送できなくなります。最初にファイルを別のディレクトリに書き込むことができない場合は、 rsync
がまだ完了していないファイルの転送を回避できるような命名イディオムを使用する必要があります (たとえば、ファイルが書き込まれたときに "foo.new"
という名前を付け、完了したら "foo" に名前を変更し、 --exclude='*.new' の転送に rsync オプションを使用します)。
-
もしファイルのサイズや修正時間が変わっていなければ、rsync は送信側の削除をスキップし、エラーを出力します。
-
コピーがローカルの場合、rsync
は送信者が受信者が確認したばかりのファイルを削除しないことを保証します。たとえば、ユーザが誤って送信元ディレクトリと宛先ディレクトリを同じパスにした場合などです。
- --delete
-
これは rsync に、受信側から無関係なファイル (送信側に存在しないファイル)
を削除するように指示しますが、同期されるディレクトリに対してのみです。ディレクトリ内のすべてのファイルをワイルドカード (例: "dir/*")
で要求するのではなく、ディレクトリ全体 (例: "dir" または "dir/") を送信するように rsync
に要求する必要があります。なぜなら、ワイルドカードはシェルによって拡張され、rsync
はファイルの親ディレクトリではなく、個々のファイルを転送する要求を受け取るからです。転送から除外されたファイルは、--delete-excluded
オプションを使用するか、送信側でのみ一致するルールをマークしない限り、削除からも除外されます(フィルタルール節の include/exclude
修飾子を参照)。
-
このオプションは、--recursive または --dirs (-d)
が有効でない限り、効果がありません。後者の場合、削除は、内容がコピーされているディレクトリでのみ発生します。
-
このオプションは、誤って使用すると危険です。どのファイルが削除されるかを確認するために、最初に --dry-run (-n)
オプションを使用して実行してみることは非常に良い考えです。
-
送信側で I/O エラーが検出された場合、宛先のファイルを削除することは自動的に無効になります。これは、送信側での一時的なファイルシステムの障害
(NFS エラーなど) によって、宛先上のファイルが大量に削除されるのを防ぐためです。これを上書きするには、--ignore-errors
オプションを使用します。
-
--delete オプションは、--delete-excluded オプションと同様に、 --delete-WHEN
オプションのいずれかと競合せずに組み合わせることができます。しかし、--delete-WHEN オプションが何も指定されない場合、rsync
は、rsync 3.0.0 (2008年 3月) 以降と通信するときには --delete-during アルゴリズムを選択し、古い rsync
と通信するときには --delete-before アルゴリズムを選択します。--delete-delay および
--delete-after も参照してください。
- --delete-before
-
転送開始前に、受信側のファイル削除を要求します。ファイル削除の詳細については、--delete (仮定される) を参照してください。
-
転送の前に削除することは、ファイルシステムがスペースに対してタイトであり、無関係なファイルを削除することが転送を可能にするのに役立つ場合に役立ちます。ただし、転送の開始前に遅延が発生するため、この遅延によって転送がタイムアウトになる可能性があります
(--timeout が指定されている場合)。また、rsync
に古い非増分再帰アルゴリズムを使用させます。このアルゴリズムでは、一度にメモリに転送されるすべてのファイルをスキャンするために rsync
を必要とします(--recursive 参照)。
- --delete-during, --del
-
転送が行われるたびに、受信側でのファイル削除が増分的に行われるように要求します。ディレクトリ単位の削除スキャンは、各ディレクトリの更新をチェックする直前に行われます。したがって、より効率的な
--delete-before
のように動作します。それには、ディレクトリ単位のフィルタファイルが更新される前に削除を行うことを含みます。ファイル削除の詳細については、--delete
(仮定される) を参照してください。
- --delete-delay
-
受信側のファイル削除が転送中に計算され (--delete-during
のように)、転送完了後に削除されることを要求します。これは、--delay-updates および/または --fuzzy
と組み合わせた場合に便利であり、--delete-after を使用するよりも効率的ですが、--delete-after
はすべての更新が完了した後に別のパスで削除を計算するため、動作が異なる場合があります。削除されたファイルの数が内部バッファをオーバーフローした場合、受信側に名前を保持するための一時ファイルが作成されます
(このファイルは開いている間に削除されるため、転送中には表示されないはずです)。テンポラリファイルの作成に失敗した場合、rsync は
--delete-after を使用するようにフォールバックしようとします。--recursive
が増分スキャンを行っている場合、これは不可能です。ファイル削除の詳細については、--delete (仮定される) を参照してください。
- --delete-after
-
転送完了後に、受信側のファイル削除を要求します。これは、転送の一部として新しいディレクトリごとのマージファイルを送信し、それらの除外を現在の転送の削除フェーズで有効にする場合に便利です。また、rsync
に古い非増分再帰アルゴリズムを使用させます。このアルゴリズムでは、一度にメモリに転送されるすべてのファイルをスキャンするために rsync
を必要とします(--recursive 参照)。ファイル削除の詳細については、--delete (仮定される) を参照してください。
-
--delete-delay オプションも参照してください。これは、転送の最後に削除が行われるようにしたい場合には、より迅速な選択となる可能性があります。
- --delete-excluded
-
このオプションは、修飾されていない 除外/包含 ルールを、受信者の削除に影響を与えないサーバ側のルールに変換します。
-
既定では、除外または包含には、サーバ側の効果 (サーバのファイルリストを作成するときにファイルを "非表示" および "表示" する) と受信側の効果
(削除中にファイルを "保護" および "危険" にさらす)
の両方があります。どの側で実行されるかを指定する修飾子を持たないルールは、サーバ側のルールのみであるかのように扱われ、ルールの "保護"
効果が回避されます。
-
このオプションが指定されていても、ルールに送信側と受信側の両方の修飾子文字 (例:-f'-sr foo')
が指定されている場合は、ルールを両側に適用できます。受信側の保護/リスクルールを明示的に指定して、削除を制限することもできます。これにより、大量の
-f'- foo' ルールを -f'-s foo' (別名 -f'H foo') ルールに編集する必要がなくなります
(対応する包含は言うまでもありません)。
-
詳細については、 "フィルタルール" 節を参照してください。削除の詳細は --delete (仮定される) を参照してください。
- --ignore-missing-args
-
Rsync が、明示的に要求されたソースファイル (例えば、コマンドライン引数や --files-from エントリなど)
を最初に処理しているときに、ファイルが見つからない場合、通常はエラーです。このオプションはそのエラーを抑制し、ファイルを転送しようとしません。ファイルが存在することが最初に検出され、後で存在しなくなった場合、これはその後の消失ファイルエラーには影響しません。
- --delete-missing-args
-
このオプションは、(暗黙の) --ignore-missing-args
オプションの動作をさらに一歩進めたものです。欠落した引数はそれぞれ、受信側の対応する宛先ファイル (存在する場合)
の削除要求になります。コピー先のファイルが空でないディレクトリの場合は、--force または --delete
が有効な場合にのみ、削除が成功します。それ以外では、このオプションは他のどのタイプの削除処理からも独立しています。
-
欠落したソースファイルは、特別なファイルリストエントリによって表されます。このエントリは、--list-only 出力では
"*missing" エントリとして表示されます。
- --ignore-errors
-
--delete に I/O エラーがあってもファイルを削除するように通知します。
- --force
-
このオプションは、空でないディレクトリに置き換える時、空でないディレクトリを削除するように rsync
に伝えます。これは削除がアクティブでない場合にのみ意味を持ちます(詳細は --delete を参照してください)。
- --max-delete=NUM
-
これは rsync に NUM
個以上のファイルやディレクトリを削除しないように指示します。この制限を超えた場合、以降のすべての削除は転送の最後までスキップされます。最後に、rsync
は警告 (スキップされた削除の数を含む) を出力し、エラーコード 25 で終了します (より重要なエラー条件も発生した場合を除く)。
-
--max-delete=0
を指定することもできます。これを指定すると、コピー先に不要なファイルがあっても削除されずに警告が表示されます。注意:3.0.0 (2008年 3月)
より古いクライアント rsync では、--max-delete=0 は無制限として扱われます。そのため、このような古い rsync
によってコマンドが実行される可能性がある場合は、--max-delete=-1 を使用してください。(3.0.0
以降のクライアントは、オプションを --max-delete=-1 として転送することにより、古いリモートを保護します。)
- --max-size=SIZE
-
これは rsync に、指定された SIZE
より大きい任意のファイルを転送しないように伝えます。数値には、文字列の後に数値単位を示す接尾辞を付けるか、または、非修飾のままにしてバイトで指定できます。また、数値には、--max-size=1.5m
のように小数部分を含めることができます。
-
このオプションはTRANSFER RULE であるため、副作用の除外を期待しないでください。
-
単位文字列の最初の文字には、B バイト、 K キロ、 M メガ、 G ギガ、 T テラ、 P
ペタを使用できます。文字列が 1 文字の場合、または文字列に "ib" が追加されている場合( "G" や "GiB" など)、単位は
1024の倍数になります。 "B" で終わる 2 文字の接尾辞( "kb" など)を使用すると、1000
の倍数の単位になります。文字列の文字には、使用したい大文字と小文字を任意に組み合わせることができます。
-
最後に、もし文字列が "+1" か "-1" のどちらかで終わるなら、示された方向に 1 バイトオフセットされます。通常、可能な最大値は
8192P-1 です。
-
例: --max-size=1.5mb-1 は 1499999 バイト、--max-size=2g+1 は 2147483649
バイトです。
- --min-size=SIZE
-
これは rsync に、指定された SIZE
より小さい任意のファイルを転送しないように伝えます。これは、小さくてジャンクなファイルを転送しないのに役立ちます。SIZE
およびその他の情報については、--max-size オプションを参照してください。
- --max-alloc=SIZE
-
既定では、rsync は個々の malloc/realloc のサイズを約 1GB
に制限します。ほとんどの人にとって、この制限は問題なく機能し、rsync
が大量のメモリを要求する原因となるプロトコルエラーを防ぎます。しかし、何百万ものファイルが転送され、大量のサーバメモリがあり、転送を複数の部分に分割したくない場合、アロケーション毎の制限を少し大きめにして、rsync
がより多くのメモリを消費できるようにすることができます。
-
これは、割り当てられたメモリの合計サイズの制限ではないことに注意してください。これは、個々の割り当てに対する健全性チェックの値です。
-
SIZE を指定する方法については、--max-size オプションを参照してください。何も指定されていない場合の既定の接尾辞はバイトです。
-
値 0は、 "このビルドがサポートする最大の制限" を簡単に表す方法です。これは、明示的な SIZE
がチェックされるのと同じ上限に解決されるため、自分で入力できる上限よりも高くなることはありません。
-
オプションは、あなたがそれを書いたときにリモート rsync に渡されるので、それぞれの側は、それ自身の最大値に対して
0を解決します。そのため、ワードサイズの異なるホスト間の転送の両端で正しいスペルは
0だけになります。64ビットクライアントで使用するのに十分な大きさのリテラル値は、32ビットデーモンでは大きすぎるとして拒否されます。
-
0の値は、3.2.3 から受け入れられ、3.5.0 で拒否されました。3.5.0 よりあとのリリースでは、再び受け入れられます。
-
構成済みの割り当て上限をクライアントに変更させたくないデーモン管理者は、モジュールの refuse options = max-alloc
に rsyncd.conf を設定できますこれにより、0 を含む、クライアントが提供するすべての値が拒否されます。
-
このオプションでサポートされているものと同じ RSYNC_MAX_ALLOC の値を使用して、環境変数 SIZE
を使用して既定値を設定できます。リモート rsync が --max-alloc オプションを認識しない場合は、
--max-alloc=1G を指定して環境の値を上書きすることができます。これにより、 rsync はオプションをリモート側に送信しなくなります
( "1G" は既定値であるため)。
- --block-size=SIZE, -B
-
これにより、rsync
の差分転送アルゴリズムで使用されるブロックサイズが強制的に固定値になります。通常は、更新される各ファイルのサイズに基づいて選択されます。詳細については、テクニカルレポートを参照してください。
-
SIZE は、--max-size オプションで説明しているように、接尾部を付けて指定することができます。
- --rsh=COMMAND, -e
-
このオプションを使用すると、rsync のローカルコピーとリモートコピーの間の通信に使用する代替リモートシェルプログラムを選択できます。通常、rsync
は既定で ssh を使用するように設定されています。
-
このオプションが [user@]host::module/path とともに使用される場合、リモートシェル COMMAND
は、リモートホスト上で rsync デーモンを実行するために使用され、すべてのデータは、リモートホスト上で実行中の rsync
デーモンへの直接ソケット接続ではなく、そのリモートシェル接続を介して転送されます。上記の リモートシェル接続での RSYNC デーモン機能の使用
節を参照してください。
-
RSYNC_PORT
環境変数は、リモートシェル接続を介してデーモン接続が行われている場合に設定されます。既定値でデーモンポートが想定されている場合は
0に設定されます。または、--port オプション、または rsync:// URL 内の空でないポート値のいずれか
(たとえばrsync://host.example.com:984) を使用して指定された rsync
ポートの値に設定されます。これは、実行されているプログラムが実際には rsync ではなく、SSL やstunnel
のヘルパースクリプトのようなものである場合に便利です。スクリプトは RSYNC_PORT
を使用して、既定値と代替ポートのどちらに接続すべきかを決定することができます。
-
COMMAND が単一の引数として rsync に提供されるならば、コマンドライン引数は COMMAND
で許可されます。コマンドと引数を区切るには、スペースを使用する必要があります (タブやその他の空白は使用できません)。また、単一引用符または二重引用符
(あるいはその両方) を使用して、引数にスペースを保持できます
(ただし、バックスラッシュは使用できません)。単一引用符で囲まれた文字列内で単一引用符を二重化すると、単一引用符が返されることに注意してください。二重引用符についても同様です(ただし、シェルがどの引用符を解析し、rsync
がどの引用符を解析しているかに注意する必要があります)。次に例を示します:
-
-
-e 'ssh -p 2234'
-e 'ssh -o "ProxyCommand nohup ssh firewall nc -w1 %h %p"'
-
(ssh ユーザは、.ssh/config ファイルでサイト固有の接続オプションをカスタマイズすることもできます)。
-
RSYNC_RSH 環境変数を使用してリモートシェルプログラムを選択することもできます。この環境変数は、-e と同じ範囲の値を受け入れます。
-
また、このオプションの影響を受ける --blocking-io オプションも参照してください。
- --rsync-path=PROGRAM
-
rsync を起動するためにリモートマシン上で実行されるプログラムを指定するために使用します。rsync が既定値リモートシェルのパス
(--rsync-path=/usr/local/bin/rsyncなど) にない場合によく使用されます。PROGRAM
はシェルの助けを借りて実行されるため、rsync
が通信に使用している標準入力と標準出力を破壊しない限り、実行したいプログラム、スクリプト、またはコマンドシーケンスであれば何でもよいことに注意してください。
-
1つ注意が必要な例として、--relative
オプションを使用するために、リモートマシン上に異なる既定値のディレクトリを設定する場合を考えてみましょう。次に例を示します。
-
-
rsync -avR --rsync-path="cd /a/b && rsync" host:c/d /e/
- --remote-option=OPTION, -M
-
このオプションは、特定の効果を転送の片側のみに制限したい、より高度な状況で使用されます。たとえば、--log-file=FILE と
--fake-super をリモートシステムに渡す場合は、次のように指定します。
-
-
rsync -av -M --log-file=foo -M--fake-super src/ dest/
-
オプションが通常は転送の両側に影響するときに、ローカル側だけに影響するようにしたい場合は、その否定をリモート側に送信します。次のようにします:
-
-
rsync -av -x -M--no-x src/ dest/
-
これを使う時には注意が必要です。なぜなら、ソケット越しに次にどんなデータが来るかについて、rsync
に別の考えを持たせることになるオプションを切り替えることができるようになるからです。そのため、その処理を不可解な方法で失敗することになるでしょう。
-
渡そうとするリモートオプションごとに、別の -M オプションを使用する必要があることに注意してください。古いバージョンの rsync
では、remote-option 引数に空白があると、別のリモート引数に分割される可能性があります。しかし、これは最近のrsync では
--old-args を使用する必要があります。
-
ローカル転送を行う場合、 "ローカル" 側が送信側であり、 "リモート" 側が受信側です。
-
ある種の popt オプション解析ライブラリのバージョンにはバグがあり、短いオプション文字 (例えば -M--log-file=/tmp/foo)
の隣に同じものを持つ引数を使用できないことに注意してください。このバグが popt のバージョンに影響を与える場合は、rsync に含まれている
popt のバージョンを使用できます。
- --cvs-exclude, -C
-
これは、システム間で転送したくない広範囲のファイルを除外するための便利な省略形です。CVS
と同様のアルゴリズムを使用して、ファイルを無視する必要があるかどうかを判断します。
-
除外リストは、以下のアイテムを除外するように初期化されます (これらの初期アイテムは壊れやすいものとしてマークされています -- フィルタルール
節を参照してください)。
-
-
RCS SCCS CVS CVS.adm RCSLOG cvslog.* tags TAGS
.make.state .nse_depinfo *~ #* .#* ,* _$* *$
*.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb
*.o *.obj *.so *.exe *.Z *.elc *.ln core .svn/
.git/ .hg/ .bzr/
-
$HOME/.cvsignore にリストされているファイルがリストに追加され、CVSIGNORE 環境変数 (すべての cvsignore
名は空白で区切られます) にリストされているすべてのファイルに追加されます。
-
最後に、.cvsignore
ファイルと同じディレクトリにあり、そこにリストされているパターンのいずれかにマッチするファイルはすべて無視されます。rsync の フィルタ/除外
ファイルとは異なり、これらのパターンは空白で分割されます。詳細については、cvs(1) マニュアルを参照してください。
-
-C を独自の --filter ルールと組み合わせている場合、これらの CVS 除外処理は、-C
がコマンドラインのどこに置かれたかに関係なく、独自のルールの最後に追加されることに注意してください。これにより、明示的に指定したどのルールよりも優先度が低くなります。これらの
CVS 除外処理がフィルタルールに挿入される場所を制御したい場合には、コマンドラインオプションとしての -C を省略し、
--filter=:C と --filter=-C を組み合わせて使う必要があります (コマンドラインで使うか、あるいは ":C" と
"-C" のルールを他のルールと一緒にフィルターファイルに入れるかします)。最初のオプションでは、.cvsignore
ファイルに対するディレクトリ毎のスキャンを有効にします。2番目のオプションでは、上記で触れられた CVS 除外処理の、1回限りのインポートを行います。
- --filter=RULE, -f
-
このオプションを使用すると、転送されるファイルのリストから特定のファイルを選択的に除外するルールを追加できます。これは、再帰転送と組み合わせて使用すると非常に便利です。
-
コマンドラインで --filter
オプションをいくつでも使用して、除外するファイルのリストを作成できます。フィルタに空白が含まれている場合は、必ず引用符で括り、シェルが rsync
のルールを単一の引数として渡すようにしてください。スペースの代わりにアンダースコアを使用して、規則とその引数を区切ることができます。
-
このオプションの詳細については、 "フィルタルール" 節を参照してください。
- -F
-
-F オプションは、2つの --filter ルールをコマンドに追加するための省略形です。最初に使用されるのは、このルールの省略形です。
-
-
--filter='dir-merge /.rsync-filter'
-
これは、ディレクトリ毎を探すように rsync に指示します。rsync
は、階層を通じて散りばめられたファイルをフィルタリングし、そのルールを使用して転送中のファイルをフィルタリングします。-F
が繰り返される場合、これはこの規則の省略形です。
-
-
--filter='exclude .rsync-filter'
-
これにより、.rsync-filter ファイル自体が転送から除外されます。
-
これらのオプションがどのように動作するかについての詳細な情報については、 "フィルタルール" 節を参照してください。
- --exclude=PATTERN
-
このオプションは、除外ルールを指定し、通常のフィルタルールの完全なルール解析構文を許可しない --filter
オプションの簡易形式です。これは、-f'- PATTERN' を指定するのと同じです。
-
このオプションの詳細については、 "フィルタルール" 節を参照してください。
- --exclude-from=FILE
-
このオプションは --exclude オプションと関連していますが、除外パターン (1行に1つ) を含む FILE
を指定します。ファイル内の空白行は無視されます。また、 ";" または "#" で始まる行全体のコメントも無視されます
(これらの文字を含むファイル名規則は影響を受けません)。
-
行が "- " (ダッシュ、スペース) または "+ " (プラス、スペース) で始まる場合、ルールのタイプは、(それぞれ)
除外または包含として明示的に指定されています。このようなプレフィックスのないルールは、除外ルールと見なされます。
-
行が "!" だけで構成されている場合は、現在のフィルタルールがクリアされてから、さらにルールが追加されます。
-
FILE が '-' の場合、リストは標準入力から読み込まれます。
- --include=PATTERN
-
このオプションは、--filter
オプションを単純化した形式です。このオプションは、包含規則を指定し、通常のフィルタ規則の完全な規則解析構文を許可しません。[参考]
これは、-f'- PATTERN' を指定するのと同じです。
-
このオプションの詳細については、 "フィルタルール" 節を参照してください。
- --include-from=FILE
-
このオプションは --include オプションと関連していますが、このオプションはインクルードパターン (1行に1つ) を含む FILE
を指定します。ファイル内の空白行は無視されます。また、 ";" または "#" で始まる行全体のコメントも無視されます
(これらの文字を含むファイル名規則は影響を受けません)。
-
行が "- " (ダッシュ、スペース) または "+ " (プラス、スペース) で始まる場合、ルールのタイプは、(それぞれ)
除外または包含として明示的に指定されています。このようなプレフィックスのないルールは、包含と見なされます。
-
行が "!" だけで構成されている場合は、現在のフィルタルールがクリアされてから、さらにルールが追加されます。
-
FILE が '-' の場合、リストは標準入力から読み込まれます。
- --files-from=FILE
-
このオプションを使用すると、rsync は FILE (もしくは、FILE が '-' の場合は標準入力)
から転送するファイルの正確なリストを読み込みます。また、rsync
の既定値の動作を微調整して、指定されたファイルとディレクトリだけを簡単に転送できるようにします。
-
-
- o
-
--relative (-R) オプションが暗黙で指定され、ファイル内の各項目に指定されたパス情報が保持されます (それらを OFF
にしたい場合は、--no-relative または --no-R を使用します)。
- o
-
--dirs (-d)
オプションが暗黙的に含まれています。このオプションは、指定されたリスト内のディレクトリを、うるさくスキップするのではなく、保存先のリストに作成します(オフにしたい場合は
--no-dirs または --no-d を使用します)。
- o
-
--archive (-a) オプションの動作は、--recursive (-r)
を意味するわけではないので、明示的に指定する必要があります。
- o
-
これらの副作用は、 rsync の既定値状態を変更するので、コマンドラインでの --files-from
オプションの位置は、他のオプションがどのように解析されるかには関係ありません (例えば、 -a は --files-from
の前後で同じように動作し、 --no-R や他のすべてのオプションも同様です)。
-
個々のファイルを --files-from でリストしても、リストされていない兄弟は削除の対象になりません。--delete
オプションは、内容全体が同期されているディレクトリからのみエントリを削除します。削除範囲が目的の場合は、ディレクトリ自体を一覧表示し、再帰を有効にします。
-
FILE から読み込まれたファイル名は、すべてソースディレクトリに関連しています。先頭のスラッシュは削除され、 ".."
コンポーネントは解決されます。そのため、エントリはソースディレクトリより上に移動することはできません。 -- たとえば、 "./foo"
はソースディレクトリ内では "foo" と解釈されます。その解決 (縮小できないもの) の後にまだアクティブな ".."
を含むエントリは、エラーで拒否されます。空白のエントリは無視されます。また、 ";" または "#"
で始まるエントリ全体のコメントも無視されます。たとえば、次のコマンドを使用します:
-
-
rsync -a --files-from=/tmp/foo /usr remote:/backup
-
/tmp/foo に文字列 "bin" (または "/bin" ) が含まれている場合、リモートホスト上に /backup/bin として
/usr/bin ディレクトリが作成されます。 "bin/" (末尾のスラッシュに注意)
が含まれている場合は、ファイル内で明示的に指定しなくても、ディレクトリの直接の内容も送信されます。どちらの場合も、-r
オプションが有効になっている場合、そのディレクトリの階層全体も転送されます (-r は --files-from
で明示的に指定する必要があることに注意してください。これは、-a によって暗示されていないためです)。また、(既定値により有効化された)
-r オプションを使用すると、ファイルから読み込まれたパス情報のみが複製されます -- ソース仕様パス (この場合は/usr)
の複製は強制されません。
-
さらに、ファイルの前に "host:" を指定すると、--files-from
ファイルはローカルホストではなくリモートホストから読み取ることができます
(ホストは転送の一方の端と一致する必要があります)。ショートカットとして、プレフィクス ":" だけを指定して、 "転送のリモートエンドを使用する"
ことを意味できます。例:
-
-
rsync -a --files-from=:/path/file-list src:/ /tmp/copy
-
これにより、リモートの "src" ホスト上の /path/file-list ファイルに指定されているすべてのファイルがコピーされます。
-
--iconv および --secluded-args オプションが指定され、--files-from
ファイル名があるホストから別のホストに送信される場合、ファイル名は送信側ホストの文字セットから受信側ホストの文字セットに変換されます。
-
メモ: --files-from input
内のファイルのリストをソートすると、隣接するエントリ間で共有されているパス要素を再訪問する必要がなくなるため、rsync
の効率が向上します。入力が整列されていない場合、一部のパス要素 (暗黙のディレクトリ) が複数回スキャンされることになる可能性があり、rsync
はそれらがファイルリスト要素に変換された後、最終的にそれらの重複を解消します。
- --from0, -0
-
これは rsync に対して、ファイルから読み込むルールやファイル名が、NL, CR, CR+LF ではなく、ヌル文字 ('\0')
で終わっていることを伝えます。これは、--exclude-from、 --include-from、 --files-from、および
--filter ルールで指定されたマージされたファイルに影響します。--cvs-exclude には影響しません (.cvsignore
ファイルから読み込まれるすべての名前は空白文字で分割されるため)。
- --old-args
-
このオプションは rsync
に、リモート側に送信される引数値を、意図しない単語分割や他の誤った解釈から保護しないように指示します。また、クライアントはエラーを生成する代わりに、空の引数を
"." として扱うこともできます。
-
最近の rsync の既定値は、リモートシェルに送られる引数の中で、"shell-active" な文字 (空白を含む)
をバックスラッシュでエスケープすることです。ワイルドカード文字 *,?,[,&] は、ファイル名引数でエスケープされません
(複数のファイル名に展開できます)。一方、--usermap などのオプション引数では保護されます。
-
ファイル名に古いスタイルの引数分割を使用したいスクリプトがある場合は、このオプションを
1回指定してください。バックスラッシュエスケープでリモートシェルに問題がある場合は、このオプションを 2回指定してください。
-
この設定は、RSYNC_OLD_ARGS 環境変数を使用して制御することもできます。もしこの値が "1" なら、rsync
は既定値を単一オプション設定にします。この値が "2" (またはそれ以上) の場合、rsync は既定値を繰り返しオプション設定にします。この値が
"0" の場合、既定値をエスケープする動作が行われます。正または負のオプションを手動で指定すると、環境は常に上書きされます (負のオプション
は--no-old-args です)。
-
このオプションは、リモート送信者が、あなたが要求していない余分なトップレベルのアイテムをファイルリストに含めていないことを保証する、追加の安全性チェックも無効にすることに注意してください。この副作用が必要なのは、リモートシェルが引数を解釈しているときに、どのような名前が予想されるかを確実に知ることができないためです。
-
このオプションは、--secluded-args オプションと競合します。
- --secluded-args, -s
-
このオプションは、全てのファイル名とほとんどのオプションを、(リモートシェルコマンドライン経由ではなく) プロトコル経由でリモート rsync
に送信します。これにより、リモートシェルがそれらを変更する可能性を回避できます。ワイルドカードは、シェルではなく rsync
によってリモートホスト上で展開されます。
-
このオプションが無い場合、rsync
は、空白の分割や不要な特殊文字の副作用といったことを防ぐために、バックスラッシュで引数をエスケープします。通常、シェルによる不要な変更を防ぐには、これで十分です。このオプションは、引数の文字集合をリモートホスト用に変換する必要がある場合や、リモートシェルが既定値のバックスラッシュエスケープ方式と非互換である場合、その他何らかの理由により、引数とオプションの大部分をリモートシェルのコマンドラインを経由せずに済ませたい場合に有用です。
-
このオプションは、3.0.0 より前 (2008年 3月)のバージョンのリモート rsync
とは互換性がありません。また、安全性のためにすべてのオプション値を検査できるようにしたい制限付きシェルによって拒否されるという欠点もあります。
-
このオプションを --iconv
と組み合わせると、リモート側に関連する引数がローカル文字セットからリモート文字セットに変換されます。変換は、ワイルドカードが展開される前に行われます。詳細は、--files-from
オプションも参照してください。
-
この設定は、RSYNC_PROTECT_ARGS 環境変数を使用して制御することもできます。値が
0以外の場合、この設定は既定値によって有効になります。それ以外の場合は、既定値によって無効になります。どちらの状態も、手動で指定したこのオプションの正または負のバージョンによって上書きされます
(--no-s および --no-secluded-args は負のバージョンであることに注意してください)。この環境変数は、0以外の
RSYNC_OLD_ARGS 環境変数にも置き換えられます。
-
このオプションは、--old-args オプションと競合します。
-
このオプションは --protect-args (3.2.6 以前、2022年 9月)
と呼ばれていましたが、その古い名前を今でも使うことができます (ただし、 -s と指定するのが常に最も簡単で互換性のある選択です)。
- --trust-sender
-
このオプションは、リモート送信者によって生成されたファイルリストに対してローカルクライアントが実行する
2つの追加の検証チェックを無効にします。このオプションは、送信者が悪意のあるものをファイルリストに入れないと信頼できる場合にのみ使用する必要があります
(悪意のあるものは、変更された rsync、変更されたシェル、またはその他の同様の操作によって行われる可能性があります)。
-
通常、rsync クライアントは、リモート rsync からファイルをプルするときに、2つの追加の検証チェックを実行します。
-
-
- o
-
それは、転送の先頭で追加の引数項目が追加されていないことを確認します。
- o
-
ファイルリスト内のアイテムが、(フィルタルールが指定されている場合に) 除外する必要のある名前でないことを確認します。
-
オプションが検証を妨げる場合は、さまざまなオプションによってこれらのチェックの一方または両方をオフにできることに注意してください。次に例を示します。
-
-
- o
-
ディレクトリごとのフィルタファイルを使用すると、サーバだけが認識しているフィルタ規則が読み込まれるため、フィルタチェックは無効になります。
- o
-
--old-args オプションを使用すると、送信側は要求された引数を操作できるため、引数のチェックは無効になります。
- o
-
サーバ側から files-from リストを読み取ることは、クライアントが引数リストを知らないことを意味するため、引数のチェックは無効になっています。
- o
-
--read-batch を使用すると、バッチファイルの内容は作成時に検証されているため、両方のチェックが無効になります。
-
このオプションは、追加のパターンマッチングが大規模な転送で速度を低下させている場合、能力の低いクライアントサーバに役立つ可能性があります。また、検証ロジックにバグがあるように見える場合の回避策として、信頼できる送信者からの転送に使用することもできます。
-
このオプションを使用する場合は、セキュリティセクションで説明されているように、専用の宛先ディレクトリを指定することをお勧めします。
- --copy-as=USER[:GROUP]
-
このオプションは、コピー操作に USER と (コロンの後に指定された場合) GROUP を使用するように rsync に指示します。これは、rsync
を実行しているユーザがユーザを変更できる場合にのみ機能します。グループを指定しない場合は、ユーザの既定値グループが使用されます。
-
このオプションは、rsync が root
として実行され、実際に変更が行われている可能性のあるディレクトリにコピーしたり、ディレクトリからコピーしたりしているときに、root
レベルでのシステムファイルの読み書きができないようにしたい場合のリスクを軽減するのに役立ちます。指定されたユーザとして rsync
のすべてを実行することもできますが、場合によっては、root
レベルのホストアクセス資格情報を使用する必要があります。これにより、リモートシェルまたはデーモンの接続が確立された後、rsync が操作のコピー部分の
root をドロップできるようになります。
-
このオプションは、転送がローカルでない限り、転送の片側にのみ影響します。ローカルで転送される場合は、両側に影響します。リモート側に影響を与えるには、-M--copy-as=joe
のように --remote-option を使用します。ローカル転送では、lsh (またはlsh.sh)
サポートファイルに、ローカルシェルヘルパースクリプトが用意されています。このスクリプトを使用すると、リモートシェルをセットアップしなくても、"localhost:"
または "lh:" ホスト仕様を指定できます。これにより、ホスト仕様を使用する側の転送に影響するリモートオプションを指定できます (また、ホスト名
"lh" を使用すると、リモートディレクトリがユーザのホームディレクトリに上書きされるのを回避できます)。
-
たとえば、次の rsync は、ローカルファイルをユーザ "joe" として書き込みます。
-
-
sudo rsync -aiv --copy-as=joe host1:backups/joe/ /home/joe/
-
これにより、ユーザ "joe" が所有するすべてのファイルが作成され、グループはそのユーザが使用できるグループに制限されます。また、joe
ユーザが変更権限を持たないファイルに変更を加えるために、時間制限付きでパスを悪用することができなくなります。
-
次のコマンドは、ユーザ "joe" として "dest/" ディレクトリにローカルコピーを実行します ($PATH 上のディレクトリに
support/lsh がインストールされていると仮定します)。
-
-
sudo rsync -aive lsh -M--copy-as=joe src/ lh:dest/
- --temp-dir=DIR, -T
-
このオプションは、受信側で転送されたファイルの一時コピーを作成するときに、DIR をスクラッチディレクトリとして使用するように rsync
に指示します。既定では、関連付けられた宛先ファイルと同じディレクトリに各一時ファイルが作成されます。指定した DIR 内の temp
ファイル名には、プレフィックスとして余分なドットは付きませんが、ランダムな接尾辞が追加されます。
-
このオプションは、受信側のディスクパーティションに、転送中の最も大きなファイルのコピーを保持するための十分な空き領域がない場合に最もよく使用されます。この場合
(つまり、スクラッチディレクトリが別のディスクパーティションにある場合)、rsync
は受信した各一時ファイルの名前を、関連付けられた宛先ファイルの上で変更することはできず、代わりにそのファイルを所定の場所にコピーする必要があります。Rsync
は、コピー先ファイルのトップにファイルをコピーすることでこれを行います。つまり、コピー中には、コピー先ファイルは切り捨てられたデータが含まれます。これがこのように行われなかった場合、古いファイルがディスク領域を占有し続ける可能性があり
(誰かがファイルを開いていた場合)、そのため、同時にディスクに新しいバージョンを収めるのに十分な領域がない可能性があります。
-
ディスク容量不足以外の理由でこのオプションを使用している場合は、このオプションを --delay-updates
オプションと組み合わせることをお勧めします。このオプションを使用すると、コピーされたすべてのファイルが宛先階層のサブディレクトリに配置され、転送の終了を待機します。コピー先のパーティションに到着するすべてのファイルを複製するための十分な領域がない場合、ディスク容量を過度に心配していないことを
rsync に伝えるもう 1つの方法は、相対パスを指定した --partial-dir オプションを使用することです。これにより、rsync
は、コピー先階層のサブディレクトリに 1つのファイルのコピーを隠しても問題ないことを通知するため、rsync は partial-dir
をステージング領域として使用して、コピーされたファイルを移動させ、そこから名前を変更します。(絶対パスで--partial-dirを指定してた場合、この副作用はありません。)
- --fuzzy, -y
-
このオプションは、見つからない行き先ファイルのために basis ファイルを探すべきであることを rsync
に伝えます。このオプションを指定すると、rsync
はコピー先ファイルと同じディレクトリ内で、サイズと修正時刻が同じファイルか、似たような名前のファイルを探します。見つかった場合、rsync は
fuzzy basis ファイルを使用して転送の高速化を試みます。
-
このオプションを繰り返すと、 fuzzy スキャンは、--compare-dest、--copy-dest、または
--link-dest で指定された、一致する代替宛先ディレクトリでも実行されます。
-
--delete オプションを使用すると、あいまいに一致する可能性のあるファイルが削除される場合があるため、--delete-after
を使用するか、これを防ぐ必要がある場合はファイル名の除外を指定します。
- --compare-dest=DIR
-
このオプションは、rsyncに DIR を使用するように指示します。宛先マシン上で追加の階層として使用し、宛先ファイルと転送の実行を比較します
(ファイルが宛先ディレクトリにない場合)。ファイルが DIR
で見つかり送信者のファイルと同一だった場合、そのファイルは宛先ディレクトリに転送されません。これは、以前のバックアップから変更されたファイルのみのスパースバックアップを作成する場合に便利です。このオプションは通常、空の
(または新たに作成された) ディレクトリにコピーするために使用されます。
-
複数の--compare-dest ディレクトリを指定することもできます。これにより、rsync
は、完全一致のために指定された順序でリストを検索します。属性のみが異なる一致が見つかった場合、ローカルコピーが作成され、属性が更新されます。一致するものが見つからなかった場合、転送を高速化するために、DIRs
の 1つから basis ファイルが選択されます。
-
DIR が相対パスの場合は、宛先ディレクトリからの相対パスになります。--copy-dest および --link-dest
も参照してください。
-
メモ: rsync は、完全に一致するものが比較先の階層の
1つで見つかった場合、空でない宛先階層からファイルを削除します。これにより、最終結果が新しいコピーにより近くなります。
- --copy-dest=DIR
-
このオプションは --compare-dest のように動作しますが、rsync は DIR
で見つかった変更されていないファイルも、ローカルコピーを使用して宛先ディレクトリにコピーします。これは、既存のファイルを変更せずに新しい転送先に転送し、すべてのファイルが正常に転送されたときにフラッシュ・カットオーバーを実行する場合に便利です。
-
複数の --copy-dest ディレクトリを指定することもできます。その場合、rsync
は、変更されていないファイルに対して指定された順序でリストを検索します。一致するものが見つからなかった場合、転送を高速化するために、DIRs の
1つから basis ファイルが選択されます。
-
DIR が相対パスの場合は、宛先ディレクトリからの相対パスになります。--compare-dest および --link-dest
も参照してください。
- --link-dest=DIR
-
このオプションは --copy-dest のように動作しますが、変更されていないファイルは DIR
から宛先ディレクトリにハードリンクされます。ファイルをリンクするには、保存されているすべての属性 (たとえば、アクセス権、場合によっては所有権)
が同一である必要があります。例:
-
-
rsync -av --link-dest=$PWD/prior_dir host:src_dir/ new_dir/
-
ファイルがリンクされていない場合は、ファイルの属性を再確認します。また、一部の属性が rsync
の制御外に強制されていないかどうかもチェックします。たとえば、root
を単一ユーザに限定するマウントオプションや、一般的な所有権でリムーバブルドライブをマウントするオプション (OSX の
"このボリュームの所有権を無視する" オプションなど) などです。
-
複数の --link-dest ディレクトリを提供することもできます。これにより、rsync
は指定された順序でリストを検索し、完全一致を検索します (このようなディレクトリは
20個までに制限されています)。属性のみが異なる一致が見つかった場合、ローカルコピーが作成され、属性が更新されます。一致するものが見つからなかった場合、転送を高速化するために、DIRs
の 1つから basis ファイルが選択されます。
-
すべてのファイルシステムがシンボリックリンク、デバイスノード、FIFO、ソケットをハードリンクできるわけではありませんし、その宛先は rsync
が構築されたものと一致する必要はありません -- macOS は APFS 上に構築されています。APFS は HFS+
に書き込むことができますが、HFS+
に書き込むことはできません。宛先がそのようなエントリのリンクを拒否した場合、代わりにコピーされて転送が続行されるため、そのエントリだけがスペースの節約ができなくなります。これはどんな拒否にも適用されます。なぜなら、エラーだけでは拒否を識別できないからです。link(2)
はハードリンクのないファイルシステムと通常の許可拒否の両方で EPERM を報告します。通常のファイルは常にこのように動作します。
-
1件は対象外です。--hard-links (-H)
では、送信元で互いにハードリンクされているこのようなエントリのグループには、最初のメンバから残りのメンバまで、宛先自体の内部に
2番目のリンクが必要です。そのリンクも拒否された場合、 -- タイプをハードリンクできない宛先 --
最初のメンバーの後のメンバーは作成されず、転送は失敗します。別のファイルシステム上の --link-dest は問題ありません。DIR
へのリンクのみがそこでは不可能であり、宛先内のリンクは依然として成功します。
-
このオプションは、空のコピー先階層にコピーする場合に最適です。既存のファイルの属性が調整され、ハードリンクを介して別のコピー先ファイルに影響を与える可能性があるためです。また、変更の項目化は少し混乱する可能性があります。バージョン3.1.0
(2013年 9月)より前のバージョンでは、コピー先のファイルがすでに存在する場合、完全に一致する代替ディレクトリは見つからない
(コピー先にリンクされない) ことに注意してください。
-
このオプションを --ignore-times と組み合わせた場合、rsync はファイルをリンクしません。これは、rsync
が同一のファイルをリンクするのは、ファイルを転送するための代替としてのみであり、ファイルが更新された後の追加チェックとしては行われないためです。
-
DIR が相対パスの場合は、宛先ディレクトリからの相対パスになります。--compare-dest および --copy-dest
も参照してください。
-
2.6.1 より前 (2004年 4月)の rsync バージョンには、 --link-dest が指定された (または暗黙のうちに指定された)
場合に、スーパーユーザ以外のユーザに対して --owner (-o)
が正しく動作するのを妨げる可能性があるというバグがあったことに注意してください。このバグを回避するには、-o
オプションを避けるか、非常に古いリモート rsync に送信するときに --no-o を使用します。
- --compress, -z
-
このオプションを使用すると、rsync
はファイルデータを宛先マシンに送信するときに圧縮します。これにより、送信されるデータ量が削減されます。これは、低速な接続で役立ちます。
-
Rsync は複数の圧縮方法をサポートしており、--compress-choice(--zc)
オプションを使用して選択を強制しない限り、そのうちの 1つを選択します。
-
既定値の圧縮リストがコンパイルされてあなたのバージョンに組み込まれているのを確認するには、rsync --versionを実行します。
-
転送の両側が少なくとも 3.2.0 (2020年 6月)
であるとき、各側は、ピアのリスト中にもある、自身の最優先アルゴリズムを選択します。双方ともリストを最も強いものから順に並べるので、互いに最も強い選択に収束します。一般的な圧縮の選択肢が見つからない場合、rsync
はエラーで終了します。リモート rsync が古すぎてチェックサムネゴシエーションをサポートできない場合、そのリストは "zlib"
であると想定されます。
-
既定値の順序は、環境変数 RSYNC_COMPRESS_LIST
に、スペースで区切られた使用可能な圧縮名のリストを設定することによってカスタマイズできます。文字列に "&" 文字が含まれている場合は、
"クライアント文字列とサーバ文字列" に分割されます。それ以外の場合は、同じ文字列が両方に適用されます。文字列 (または文字列部分)
に空白以外の文字が含まれていない場合は、既定の圧縮リストが使用されます。不明な圧縮名はリストから破棄されますが、無効な名前のみを含むリストでは、ネゴシエーションが失敗します。
-
-z オプションを拒否し、-zz の使用を要求するように設定された古い rsync
バージョンがいくつかあります。その理由は、圧縮ライブラリが既定値の zlib 圧縮方式と互換性がなかったからです。rsync サーバが文句を言って
-zz を指定するように言わない限り、通常はこの奇妙な動作を無視することができます。
- --compress-choice=STR, --zc=STR
-
このオプションは、--compress
が使用されている場合に発生する圧縮アルゴリズムのオートネゴシエーションを上書きするために使用できます。このオプションは、 "none"
が指定されていない限り、 --compress を仮定します。 "none" が指定されている場合は、 --no-compress
を仮定します。
-
使用できる圧縮オプションは次のとおりです:
-
-
- o
-
zstd
- o
-
lz4
- o
-
zlibx
- o
-
zlib
- o
-
none
-
既定値の圧縮リストがコンパイルされてあなたのバージョンに組み込まれていることを確認するためには rsync --versionを実行します
(上記のリストとは異なる場合があります)。
-
もし --old-compress もしくは --new-compress と名付けられたオプションについてのエラーを見るなら、これは
rsync が --compress-choice=zlib もしくは --compress-choice=zlibx
オプションをより多くの rsync バージョンが理解できる後方互換性のある方法で送ろうとしていることです。このエラーは、サーバ上の古い rsync
バージョンでは圧縮タイプを強制できないことを示します。
-
"zlibx" 圧縮アルゴリズムは、一致するデータを圧縮ストリームから除外した単なる "zlib" アルゴリズムであることに注意してください (外部の
zlib 実装との互換性を高めるため)。
- --compress-level=NUM, --zl=NUM
-
使用する圧縮レベルを明示的に設定します (既定値を使用する代わりに--compress ,-z を参照)。--compress
オプションは、選択されたレベルが、有効な圧縮アルゴリズムの "圧縮しない" レベルでない限り、暗黙的に指定されます (たとえば、zlib 圧縮はレベル
0を "オフ" として扱います)。
-
レベルの値は、有効なチェックサムによって異なります。rsyncは (リモート rsync が十分に新しい場合)
既定値ごとにチェックサムの選択をネゴシエートするため、実際に選択されていることに確信がない限り、このオプションと
--compress-choice (--zc) オプションを組み合わせるとよいでしょう。例:
-
-
rsync -aiv --zc=zstd --zl=22 host:src/ dest/
-
zlib および zlibx 圧縮の場合、有効な値は 1~9 で、6 が既定値です。--zl=0
を指定すると圧縮はオフになり、--zl=-1 を指定すると既定値レベル 6が選択されます。
-
zstd 圧縮の場合、有効な値は -131072~22 で、3が既定値です。0を指定すると、既定値 3が選択されます。
-
lz4 圧縮ではレベルがないため、値は常に 0になります。
-
指定した値が大きすぎたり、小さすぎたりすると、数値は自動的に有効な値に制限されます。これにより、--zl=999999999
のようなものを指定することができ、どのアルゴリズムを選択しても、最終的に最大の圧縮レベルになることが保証されます。
-
有効な圧縮レベルを知りたい場合は、 "ネゴシエートされた文字列" の結果を確認するため --debug=nstr を指定します。これは
"Client compress: zstd (level 3)" のようなものを報告します (有効なチェックサムの選択と共に)。
- --compress-threads=NUM, --zt=NUM
-
データの圧縮時に生成するスレッドの数を設定します。このオプションを1以上に設定すると、圧縮用に
1つ以上のスレッドを生成するよう圧縮ライブラリに指示します。理想的には、送信側で CPU
バウンドの転送が行われる場合は、スレッドの数を増やすと転送速度が向上します。
-
このオプションは解凍には影響しません。
-
スレッド化を可能にする圧縮アルゴリズム:
-
-
- o
-
zstd (libzstdが スレッド化サポート付きでコンパイルされている場合のみ)
-
上記のいずれかのアルゴリズムが --compression-choice
として選択されていない場合または圧縮が有効になっていない場合、このオプションは無視されます。
- --skip-compress=LIST
-
メモ: 現在、ファイル単位の圧縮変更をサポートしている圧縮方法はないため、このオプションは無効です。
-
できるだけ圧縮しないファイル拡張子の一覧を上書きします。Rsyncは、ファイルの接尾辞に基づいて、ファイルごとに圧縮レベルを設定できます。圧縮アルゴリズムが
"オフ"
レベルの場合、これらのファイルに対して圧縮は行われません。オンザフライでストリーミングレベルの変更をサポートするその他のアルゴリズムでは、レベルを最小化して、一致するファイルの
CPU 使用率を可能な限り削減します。
-
LIST は、スラッシュ / で区切られた 1つまたは複数の (ドットなしの)
ファイル接尾辞です。空の文字列を指定して、どのファイルもスキップしないことを示すことができます。
-
単純な文字クラスのマッチングがサポートされています。それぞれの文字は、大括弧内の文字のリストで構成されている必要があります
(たとえば、"[:alpha:]" などの特別なクラスはサポートされておらず、'-' には特別な意味はありません)。
-
アスタリスク (*) と疑問符 (?) には特別な意味はありません。
-
次に、スキップする接尾辞を 6つ指定する例を示します (5つのルールのうち 1つが 2つの接尾辞に一致するため)。
-
-
--skip-compress=gz/jpg/mp[34]/7z/bz2
-
このバージョンの rsync で skip-compress リストにある既定のファイル接尾辞は、次のとおりです:
-
-
3g2 3gp 7z aac ace apk avi bz2 deb dmg ear f4v flac flv gpg gz iso jar jpeg
jpg lrz lz lz4 lzma lzo m1a m1v m2a m2ts m2v m4a m4b m4p m4r m4v mka mkv mov
mp1 mp2 mp3 mp4 mpa mpeg mpg mpv mts odb odf odg odi odm odp ods odt oga ogg
ogm ogv ogx opus otg oth otp ots ott oxt png qt rar rpm rz rzip spx squashfs
sxc sxd sxg sxm sxw sz tbz tbz2 tgz tlz ts txz tzo vob war webm webp xz z
zip zst
-
このリストは一つの状況を除いて --skip-compress リストに置き換えられます。デーモン rsync
からのコピーは、あなたのスキップされた接尾辞を非圧縮ファイルのリストに追加します (そしてそのリストは別の既定値に設定されるかもしれません)。
- --numeric-ids
-
このオプションを指定すると、rsync はユーザ名とグループ名を使用してそれらを両端でマッピングするのではなく、数値のグループ ID とユーザ ID
を転送します。
-
既定値では、rsync はユーザ名とグループ名を使用して、ファイルに与える所有者を決定します。特殊な uid 0 と特殊な group 0
は、--numeric-ids オプションが指定されていない場合でも、ユーザ/グループ名を使用してマッピングされることはありません。
-
ソースシステムにユーザまたはグループの名前がない場合、またはデスティネーションシステムに一致する名前がない場合は、ソースシステムの数値の
IDが使用されます。また、マニュアルページの rsyncd.conf の use chroot 設定には、rsync
がユーザ名とグループ名を検索する機能に対して chroot の設定がどのように影響するか、また、それに対して何ができるかについてのコメントがあります。
- --usermap=STRING, --groupmap=STRING
-
これらのオプションを使用すると、受信側で他の値にマップする必要があるユーザおよびグループを指定できます。STRING は
1つ以上のカンマで区切られた FROM:TO 値のペアです。送信者からの一致する FROM 値は、受信者からの TO
値で置き換えられます。FROM 値と TO 値にはユーザ名またはユーザ ID を指定できます。FROM
値にはワイルドカード文字を使用することもできます。この場合は、送信者の名前と一致します。ただし、ワイルドカードは ID番号とは一致しません。(
"*' はすべてに一致する" の理由については、以下を参照してください)。代わりに、包含範囲 (LOW-HIGH) を使用して ID
番号の範囲を指定することもできます。例:
-
-
--usermap=0-99:nobody,wayne:admin,*:normal --groupmap=usr:1,1:usr
-
リスト内で最初に一致したものが使用されます。単一の --usermap オプションを使用してすべてのユーザマッピングを指定するか、単一の
--groupmap オプションを使用してすべてのグループマッピングを指定するか、その両方を行う必要があります。
-
ユーザおよびグループ 0 の送信者の名前は受信者に送信されないので、0を使用してこれらの値を一致させるか、受信側で有効な名前 (通常は "root" )
を使用する必要があります。他のすべての FROM 名前は、送信側で使用されている名前と一致します。全ての TO
名は受信側で使用されているものと一致します。
-
送信側に名前を持たない ID は、マッチングの目的で名前が空として扱われます。これにより、 "*"
または空の名前を使用して一致させることができます。次に例を示します。
-
-
--usermap=:nobody --groupmap=*:nobody
-
FROM 値が空の場合は、名前のない送信側の ID
のみと一致します。これは、指定されたユーザまたはグループのワイルドカードではありません。すべての送信側の名前をマッピングする場合は、 "*"
を使用します。
-
--numeric-ids オプションが使用されている場合、送信者は名前を送信しないため、すべての ID
は空の名前を持つものとして扱われます。つまり、これらの名前のない ID を別の値にマップする場合は、数で FROM 値を指定する必要があります。
-
--usermap オプションを動作させるためには、受信側がスーパーユーザとして動作している必要があります (--super と
--fake-super オプションも参照してください)。--groupmap
オプションを機能させるためには、受信者がそのグループを設定する権限を持っている必要があります。
-
--usermap オプションは --owner (-o) オプションを意味し、--groupmap オプションは
--group (-g) オプションを意味します (マッピングオプションを機能させるには、rsync
でこれらのオプションを有効にする必要があるためです)。
-
古い rsync クライアントはワイルドカード文字に関する苦情を避けるために -s を使用する必要があるかもしれませんが、最近の rsync
はこれを自動的に処理します。
- --chown=USER:GROUP
-
このオプションは、すべてのファイルの所有者を、グループが GROUP である USER にします。これは --usermap と
--groupmap
を直接使用するよりも簡単なインタフェースですが、これらのオプションを使用して内部的に実装されているため、これらを混在させることはできません。USER
または GROUP が空の場合、省略されたユーザ/グループのマッピングは行われません。GROUP が空の場合、末尾のコロンは省略できますが、USER
が空の場合は、先頭のコロンを指定する必要があります。
-
"--chown=foo:bar" を指定すると、 "--usermap=*:foo --groupmap=*:bar"
を指定した場合とまったく同じになりますが、より簡単になります (また、同じ暗黙の --owner および/または --group
オプションを使用します)。
-
古い rsync クライアントはワイルドカード文字に関する苦情を避けるために -s を使用する必要があるかもしれませんが、最近の rsync
はこれを自動的に処理します。
- --timeout=SECONDS
-
このオプションでは、最大 I/O タイムアウトを秒単位で設定できます。指定された時間内にデータが転送されない場合、rsync は終了します。既定値は
0で、タイムアウトがないことを意味します。
- --contimeout=SECONDS
-
このオプションを使用すると、rsync デーモンへの接続が成功するまで rsync が待機する時間を設定できます。タイムアウトに達すると、rsync
はエラーで終了します。
- --address=ADDRESS
-
既定では、rsync は、rsync デーモンに接続するときにワイルドカードアドレスにバインドします。--address
オプションを使用すると、バインド先の特定の IP アドレス(またはホスト名を指定できます。
-
--address オプションのデーモン・バージョンも参照してください。
- --port=PORT
-
既定値の 873 ではなく、代替の TCP ポートを指定します。これは、ダブルコロン (::) 構文を使用して rsync
デーモンと接続する場合にのみ必要です (URL 構文には、URL の一部としてポートを指定する方法があるためです)。
-
--port オプションのデーモン・バージョンも参照してください。
- --sockopts=OPTIONS
-
このオプションは、システムを最大限に調整したい人に無限の楽しみを提供します。あらゆる種類のソケットオプションを設定でき、転送が速くなる
(または遅くなる!) 可能性があります。設定できるオプションの詳細については、setsockopt()
システムコールのマニュアルページを参照してください。既定では、特殊なソケットオプションは設定されていません。これは、リモート rsync
デーモンへの直接ソケット接続にのみ影響します。
-
--sockopts オプションのデーモン・バージョンも参照してください。
- --blocking-io
-
これは rsync に、リモートシェル転送を起動する時、ブロッキング I/O を使用するように伝えます。リモートシェルが rsh か remsh
の場合、rsync 既定値はブロック入出力を使うように設定し、それ以外の場合は既定値は非ブロック入出力を使うように設定します。(ssh は非ブロッキング
I/O を好むことに注意してください。)
- --outbuf=MODE
-
出力のバッファリングモードを設定します。モードは、None (バッファなし)、 Line、Block (別名 Full) のいずれかです。モードには
1文字でも指定でき、大文字または小文字を使用します。
-
このオプションの主な用途は、rsync の出力がファイルまたはパイプに送られるときに、Full バッファリングを Line
バッファリングに変更することです。
- --itemize-changes, -i
-
各ファイルに対して行われた変更 (属性の変更を含む) のリスト (項目別) を要求します。これは、--out-format='%i %n%L'を指定するのとまったく同じです。このオプションを繰り返すと、変更されていないファイルも出力されますが、受信 rsync がバージョン
2.6.7 (2006年 3月)以上である場合に限ります。古いバージョンのrsyncを使用するときに -vv
を使用することもできますが、これにより他の冗長メッセージの出力もオンになります。
-
"%i" エスケープは、11文字の長さの暗号を出力します。一般的な形式は、文字列 YXcstpoguax のようになります。ここで、Y
は実行される更新のタイプに置き換えられ、X
はファイルタイプに置き換えられます。その他の文字は、変更された場合に出力される可能性のある属性を表します。
-
Y を置き換える更新タイプは次のとおりです:
-
-
- o
-
< は、ファイルがリモートホストに転送されている (送信されている) ことを意味します。
- o
-
> は、ファイルがローカルホストに転送されている (受信した) ことを意味します。
- o
-
c は、ローカルの変更/作成がアイテムに対して発生していることを意味します (それはディレクトリの作成やシンボリック・リンクの変更などです)。
- o
-
hは、その項目が別の項目のハードリンクであることを意味します。(--hard-linksが必要です)。
- o
-
. はアイテムが更新されていないことを意味します。ただし、修正中の属性が含まれている可能性があります。
- o
-
* は、出力データ領域の残りの部分にメッセージが含まれていることを意味します (例: "削除中" )。
-
X を置き換えるファイルタイプは: f ファイル用、 d ディレクトリ用、 L シンボリックリンク用、 D デバイス用、
S 特別なファイル用 (例えばnamed sockets and fifos) です。
-
文字列内のその他の文字は、ファイルの一部の属性が変更されたかどうかを示します。
-
-
- o
-
"." - 属性は変更されません。
- o
-
"+" - ファイルは新しく作成されます。
- o
-
" " - すべての属性が変更されません (すべてのドットがスペースに変わります)。
- o
-
"?" - 変更が不明 (リモート rsync が古い場合)。
- o
-
文字は、属性が更新されていることを示します。
-
各文字に関連付けられている属性は次のとおりです:
-
-
- o
-
c は、通常のファイルのチェックサムが異なる
(--checksumが必要)か、シンボリックリンク、デバイス、または特殊ファイルの値が変更されたことを意味します。3.0.1 (2008年
4月) より前の rsync
にファイルを送信している場合、この変更フラグはチェックサムが異なる通常のファイルに対してのみ存在することに注意してください。
- o
-
s は、通常のファイルのサイズが異なり、ファイル転送によって更新されることを意味します。
- o
-
t は、変更時刻が異なり、送信者の値に更新されていることを意味します (--timesを必要とします)。代替値 T
は、修正時間が転送時間に設定されることを意味します。これは、ファイル/シンボリックリンク/デバイスが --times
なしで更新された場合、およびシンボリックリンクが変更され、受信者が時間を設定できない場合に発生します。
- o
-
p は、権限が異なり、送信者の値に更新されていることを意味します (--perms が必要です)。
- o
-
o は、所有者が異なり、送信者の値に更新されていることを意味します (--owner およびスーパーユーザ権限が必要です)。
- o
-
g は、グループが異なり、送信者の値に更新されていることを意味します (--group およびグループを設定する権限が必要です)。
- o
-
-
-
- o
-
u|n|b は次の情報を示します:
u は、アクセス (使用) 時間が異なり、送信者の値に更新されていることを意味します (--atimes が必要です)。
- o
-
n は、作成時刻 (newness) が異なり、送信者の値に更新されていることを意味します (--crtimes が必要です)。
- o
-
b は、アクセス時刻と作成時刻の両方が更新されることを意味します
- o
-
a は、ACL 情報が変更されていることを意味します。
- o
-
x は、拡張属性情報が変更されることを意味します。
-
もう 1つの出力が可能です。ファイルを削除するとき、 "%i" は文字列 "*deleting" を削除される各項目に対して出力します (最新の
rsync と通信しているので、削除を冗長メッセージとして出力するのではなく、ログに記録していると仮定します)。
- --out-format=FORMAT
-
これにより、更新ごとに rsync クライアントがユーザに出力する内容を正確に指定できます。フォーマットは、先頭にパーセント (%) 文字が付いた
1文字のエスケープシーケンスが埋め込まれたテキスト文字列です。--info=name または -v
が指定されている場合は、既定値のフォーマットは "%n%L" が仮定されます
(これにより、ファイル名と、項目がリンクである場合はそれが指す場所だけがわかります)。使用できるエスケープ文字の完全なリストについては、rsyncd.conf
マニュアルページの log format 設定を参照してください。
-
--out-format オプションを指定すると、 --info=name
オプションを仮定し、重要な方法で更新される各ファイル、ディレクトリなど
(転送されたファイル、再作成されたシンボリックリンク/デバイス、またはアクセスされたディレクトリ) に言及します。さらに、itemize-changes
エスケープ (%i) が文字列に含まれている場合 (たとえば、--itemize-changes
オプションが使用された場合)、何らかの方法で変更されたすべての項目を言及するために、名前のロギングが増加します (受信側が少なくとも 2.6.4
である限り)。"%i" の出力の説明については、--itemize-changes オプションを参照してください。
-
Rsync は、転送統計値エスケープのどれか一つが要求されない限り、ファイル転送前に out-format
文字列を出力します。例外の場合、ログ記録はファイル転送の最後に行われます。この遅延ログが有効で、--progress
も指定されている場合、rsync は転送中のファイルの名前を進行状況情報の前に出力します (もちろん、その後に out-format 出力が続きます)。
- --log-file=FILE
-
このオプションは rsync
に何をしているかのログをファイルに書かせます。これは、デーモンが行うロギングに似ていますが、デーモン以外の転送のクライアント側および/またはサーバ側に対して要求できます。クライアントのオプションとして指定された場合、"%i%n%L"
の既定値形式での転送用ログが有効になります。これを上書きしたい場合は、--log-file-format オプションを参照してください。
-
リモート側に何が起こっているかを記録するように要求するコマンドの例を次に示します:
-
-
rsync -av --remote-option=--log-file=/tmp/rlog src/ dest/
-
これは、接続が予期せず終了する理由をデバッグする必要がある場合に非常に役立ちます。
-
--log-file オプションのデーモン・バージョンも参照してください。
- --log-file-format=FORMAT
-
これにより、--log-file オプションで指定されたファイルにどの更新ごとのログが書き込まれるかを正確に指定できます
(このオプションを有効にするには、このオプションも指定する必要があります)。空の文字列を指定すると、更新されたファイルはログファイルに記録されません。使用できるエスケープ文字のリストについては、rsyncd.conf
マニュアルページの log format 設定を参照してください。
-
--log-file が指定され、このオプションが指定されていない場合に使用される既定値のフォーマットは '%i%n%L' です。
-
--log-file-format オプションのデーモン・バージョンも参照してください。
- --stats
-
これは、rsync にファイル転送に関する冗長な統計情報を表示するように指示し、rsync
の差分転送アルゴリズムがデータに対してどの程度効果的であるかを示すことができます。このオプションは、0または 1つの -v
オプションと組み合わせた場合は --info=stats2 と同等であり、2つ以上の -v オプションと組み合わせた場合は
--info=stats3 と同等です。
-
現在の統計情報は次のとおりです。
-
-
- o
-
Number of files は、ディレクトリ、シンボリック・リンクなどを含むすべての "ファイル" (一般的な意味で)
のカウントです。合計カウントの後に、ファイル・タイプ別のカウントのリストが続きます (合計が 0でない場合)。たとえば、 "(reg:5, dir:3,
link:2, dev:1, special:1)"
と指定すると、通常のファイル、ディレクトリ、シンボリック・リンク、デバイス、特殊ファイルの総数が表示されます。いずれかの値が
0の場合、その値はリストから完全に除外されます。
- o
-
Number of created files は、(更新されたのではなく) 作成された "ファイル" (一般的な意味で)
数です。総数の後には、ファイルタイプ別の総数のリストが表示されます (総数が 0でない場合)。
- o
-
Number of deleted files は、削除された "ファイル" (一般的な意味の)
数です。総数の後には、ファイルタイプ別の総数のリストが表示されます (総数が
0でない場合)。この行が出力されるのは、削除が有効であり、ネゴシエートされたプロトコルが少なくとも 31 (両側が 3.1.0、2013年
3月、またはそれ以降の場合は既定値) である場合だけであることに注意してください。
- o
-
Number of 4 KiB logical blocks touched は、rsync
自体の書き込み操作によってカバーされる一意の 4KiB
論理ファイル領域の数です。このメトリックは、ネットワークペイロードをローカルファイル変更の範囲から切り離します。例えば、少量の Literal data は、修正がファイル全体に非常に分散している場合、特に--inplace
を使用している場合には、膨大な数の接触ブロックを生じる可能性があります。
- o
-
Number of regular files transferred は、rsync
の差分転送アルゴリズムによって更新された通常のファイルの数ですが、ディレクトリ、シンボリック・リンクなどは含みません。
- o
-
Total file size
は、転送におけるすべてのファイルサイズの合計です。これには、ディレクトリや特殊ファイルのサイズは含まれませんが、シンボリックリンクのサイズは含まれます。
- o
-
Total transferred file size は、転送されたファイルのみのすべてのファイルサイズの合計です。
- o
-
Literal data
は、更新されたファイルを再作成するために、送信者が受信者に送信しなければならなかった、一致しないファイル更新データの量です。
- o
-
Matched data は、更新されたファイルを再作成するときに、受信者がローカルで取得したデータの量です。
- o
-
File list size
は、送信者がファイルリストデータを受信者に送信したときのファイルリストデータの大きさです。これは、ファイルリストのメモリ内サイズよりも小さくなります。これは、rsync
がリストを送信するときに、重複データがある程度圧縮されるためです。
- o
-
File list generation time は、送信者がファイルリストの作成に費やした秒数です。これを実現するには、送信側で最新の
rsync が必要です。
- o
-
File list transfer time は、送信者が受信者にファイルリストを送信するのに費やした秒数です。
- o
-
Total bytes sent は、rsync がクライアント側からサーバ側に送信した全バイト数です。
- o
-
Total bytes received は、rsync がサーバ側からクライアント側で受信した、メッセージ以外のすべてのバイト数です。
"Non-message"
バイトとは、サーバから送信された冗長メッセージのバイト数をカウントしないことを意味します。これにより、統計の一貫性が向上します。
- --8-bit-output, -8
-
これは、rsync に対して、高位ビット文字が現在のロケールで有効かどうかをテストして無効な文字をエスケープする代わりに、(標準出力や標準エラーへの)
出力において、全ての高位ビット文字をエスケープしないままにするように指示します。すべての制御文字 (タブを除く)
は、このオプションの設定に関係なく、常にエスケープされます。
-
2.6.7 (2006年 3月) に始まったエスケープ処理は、バックスラッシュ (\) とハッシュ (#) のリテラルの後に正確に 3桁の
8進数を出力するというものです。たとえば、改行は "\#012"
と出力されます。ファイル名に含まれるリテラルのバックスラッシュは、後ろにハッシュと 3桁の数字 (0~9) が続く場合を除き、エスケープされません。
- --human-readable, -h
-
数値を人間が読みやすい形式で出力します。次の 3つのレベルがあります:
-
-
- 1.
-
3桁ごとに区切り記号を付けて数値を出力します (小数点がピリオドまたはコンマのどちらで表されるかに応じて、コンマまたはピリオドのいずれかになります)。
-
-
これは 1000 を単位として数値を出力します (より大きな単位には以下で説明しているような接尾辞を用います)。
- 3.
-
1024 の単位で数値を出力します。
-
既定値は、人間が読めるレベル 1です。各 -h オプションは、レベルを 1つずつ上げます。--no-human-readable
(--no-h) オプションを指定すると、レベルを 0に下げる (数字を純粋な数字として出力する) ことができます。
-
レベル 2とレベル 3で追加される単位文字は、K キロ、 M メガ、 G ギガ、 T テラ、または P
ペタです。たとえば、1234567 バイトのファイルは、レベル 2では 1.23M として出力されます
(ピリオドがローカルの小数点であると仮定します)。
-
後方互換性に関する注意: 3.1.0 (2013年 9月) より前のバージョンの rsync は、人間が読めるレベル
1をサポートしておらず、既定値はレベル 0になります。したがって、1つまたは 2つの -h オプションを指定すると、1つまたは複数の -h
オプションの前に --no-h オプションを指定しない限り、古いバージョンと新しいバージョンで同等の動作をします。違い (一つ)
については、--list-only オプションを参照してください。
- --partial
-
既定では、転送が中断された場合、rsync
は部分的に転送されたファイルを削除します。状況によっては、部分的に転送されたファイルを保持する方が望ましい場合があります。--partial
オプションを使用すると、rsync は部分ファイルを保持します。これにより、その後の残りのファイルの転送が大幅に高速化されます。
- --partial-dir=DIR
-
このオプションは、--partial
オプションの動作を変更すると同時に、このオプションが有効であることを意味します。この拡張された部分ファイル方式は、部分的に転送されたファイルを、部分ファイルを宛先ファイルに書き出す代わりに、指定された
DIR に格納します。次回の転送時に、rsync
はこのディレクトリにあるファイルをデータとして使用して、転送の再開を高速化し、目的を果たした後にファイルを削除します。
-
--whole-file が指定されている (または暗黙的に指定されている) 場合、更新中のファイルに対して見つかった partial-dir
ファイルはすべて単純に削除されることに注意してください (rsyncは、rsync の差分転送アルゴリズムを使用せずにファイルを送信しているためです)。
-
DIR が存在しない場合は、rsync によって作成されますが、パス全体ではなく、最後のディレクトリだけが作成されます。これにより、相対パス(
"--partial-dir=.rsync-partial" など) を使用して、rsync
で必要なときに宛先ファイルのディレクトリに部分ディレクトリを作成し、部分ファイルが削除されたときに再度それを削除することが簡単になります。このディレクトリの削除は相対パスに対してのみ行われることに注意してください。絶対パスは、部分ディレクトリ作業用に予約されているディレクトリへのパスであると想定されるためです。
-
partial-dir 値が絶対パスでない場合、rsync は既存のすべての除外の末尾に除外ルールを追加します。これにより、送信側に存在する可能性のある
partial-dir ファイルの送信が防止され、受信側で partial-dir 項目が適時に削除されることも防止されます。例: 上記の
--partial-dir オプションは、他のフィルタ規則の最後にこの "壊れやすい" 除外と同等のものを追加します: -f '-p .rsync-partial/'
-
独自の除外ルールを指定する場合は、次の理由から、partial-dir に独自の除外/非表示/保護ルールを追加する必要があります。
-
-
- 1.
-
自動的に追加されたルールが、他のルールの最後で無効になる場合があります。
-
-
rsync の exclude オプションを上書きすることもできます。
-
例えば、部分的なディレクトリが残っていても、それを rsync がクリーンアップするようにしたい場合は、 --delete-after を指定し、
"リスク" フィルタルール (例:-f 'R .rsync-partial/') を追加します。--delete-before や
--delete-during は使わないようにしてください。ただし、rsync
を使って、残りの部分ディレクトリデータを現在の実行中に使用する必要がない場合は除きます。
-
重要: partial-dir ディレクトリは、他のユーザが書き込みできないようにしてください。そうしないと、セキュリティ上のリスクがあります。例えば、
"/tmp" は使用しないでください。
-
partial-dir の値を RSYNC_PARTIAL_DIR
環境変数に設定することもできます。環境でこれを設定しても、--partial を有効にすることは強制されませんが、--partial
が指定されたときに部分ファイルがどこに行くかに影響します。たとえば、 --progress とともに
--partial-dir=.rsync-tmp を使用する代わりに、使用している環境で
RSYNC_PARTIAL_DIR=.rsync-tmp を設定し、 -P オプションを使用して、部分転送に .rsync-tmp
ディレクトリを使用するように設定できます。以下の場合にのみ、--partial オプションはこの環境変数を検索しません。
-
-
- 1.
-
--inplace が指定された場合(--inplace は --partial-dir と競合し、
-
-
--delay-updates が指定された場合 (下記参照)です。
-
最近の rsync が partial-dir にあるファイルの転送を再開すると、その部分的なファイルは、別の tmp
ファイルのコピーを作成する代わりに、インプレースで更新されるようになりました (したがって、dest + partial + tmp ではなく、dest
+ tmp で上限に達します)。そのためには、転送の両端がバージョン 3.2.0 (2020年 6月) 以上である必要があります。
-
daemon-configの "refuse options" 設定では、 --partial-dir は --partial
を意味しません。これは、--partial
オプションの拒否を使用して、部分的な転送による宛先ファイルの上書きを禁止する一方で、--partial-dir
によって提供されるより安全な方式を許可するためです。
- --delay-updates
-
このオプションは、更新された各ファイルの一時ファイルを、転送が終了するまで保持ディレクトリに格納します。転送が終了すると、すべてのファイルの名前が所定の位置にすばやく変更されます。これは、ファイルの更新をアトミックに少し近づけようとするものです。既定値ごとに、ファイルは各ファイルの宛先ディレクトリ内の
.~tmp~ という名前のディレクトリに配置されますが、 --partial-dir
オプションを指定した場合は、そのディレクトリが代わりに使用されます。この --partial-dir
ディレクトリを転送から除外する方法や、存在する可能性のある古い .~tmp~ ディレクトリを rsync
にクリーンアップさせたい場合に何ができるかについては、 .~tmp~ セクションのコメントを参照してください。--inplace および
--append と競合します。
-
このオプションは --no-inc-recursive
を意味します。なぜなら、最後にそれを反復できるようにするために、メモリ内に完全なファイルリストを必要とするからです。
-
このオプションは、受信側でより多くのメモリを使用し
(転送されるファイルごとに1ビット)、更新されたすべてのファイルの追加コピーを保持するために、受信側に十分な空きディスク領域も必要とします。--partial-dir
への絶対パスを使用しないことにも注意してください。ただし次の場合を除きます。
-
-
- 1.
-
同じ名前のファイルが転送されることはありません (パスが絶対パスの場合、更新されたすべてのファイルが1つのディレクトリに置かれるため)。そして、
-
-
階層構造にはマウントポイントがありません (名前を変更できない場合、遅延更新は失敗するからです)。
-
"support" サブディレクトリにある python スクリプト "atomic-rsync" には、さらに atomic
に近い更新アルゴリズムが用意されています (このスクリプトは --link-dest とファイルの並列階層を使用します)。
- --prune-empty-dirs, -m
-
このオプションは、受信した rsync
に、ファイルリストから空のディレクトリを削除するように指示します。これには、非ディレクトリの子を持たないネストされたディレクトリも含まれます。これは、送信側の
rsync が include/exclude/filter
ルールを使ってファイルの階層を再帰的にスキャンしているときに、無用なディレクトリの束が作られるのを避けるのに便利です。
-
TRANSFER_RULES を使用する場合、このオプションは受信側に空のディレクトリを残すことができます。
-
ファイルリストは実際にはプルーニングされているため、このオプションは、削除がアクティブな場合に削除されるディレクトリにも影響します。ただし、除外されたファイルとディレクトリは、除外によって既存のアイテムが削除されないようにする可能性があることに注意してください。これは、ソースファイルを非表示にし、宛先ファイルを保護するためです。これを回避する方法については、corruptable
filter-rule オプションを参照してください。
-
グローバルな "protect"
フィルタを使用して、ファイルリストから特定の空のディレクトリが削除されないようにすることができます。たとえば、このオプションを使用すると、ディレクトリ
"emptydir" がファイルリストに確実に保持されます。
-
-
--filter 'protect emptydir/'
-
ここでは、階層内のすべての .pdf ファイルをコピーし、.pdf
ファイルを保持するために必要な宛先ディレクトリのみを作成し、宛先内の不要なファイルとディレクトリを確実に削除する例を示します
(除外ではなく、ディレクトリ以外の非表示フィルタが使用されていることに注意してください)。
-
-
rsync -avm --del --include='*.pdf' -f 'hide,! */' src/ dest
-
不要なコピー先ファイルを削除したくない場合は、--include='*/' --exclude='*' の旧来のオプションを
hide-filter の代わりに使用できます (こちらの方が自然な場合)。
- --progress
-
このオプションは、転送の進行状況を示す情報を表示するように rsync に指示します。これは、退屈しているユーザに何か見るものを与えます。最近の
rsync では、これは --info=flist2,name,progress を指定するのと同じですが、これらの info
フラグに対してユーザが指定した設定が優先されます (例えば --info=flist0 --progress)。
-
rsync が通常のファイルを転送している間、次のような進捗行が更新されます。
-
-
782448 63% 110.64kB/s 0:00:04
-
この例では、受信者は送信者のファイルの 63% にあたる 782448バイトを再構成したが、これは
110.64キロバイト毎秒のレートで再構成されており、現在のレートが最後まで維持される場合、転送は 4秒で終了します。
-
rsync の差分転送アルゴリズムが使用されている場合、これらの統計情報は誤っている可能性があります。たとえば、送信者のファイルが basis
ファイルとそれに続く追加データで構成されている場合、受信者がリテラルデータに到達すると、報告されるレートはおそらく劇的に低下し、転送が終了するまでに、受信者がファイルの一致する部分を終了するときに見積もったよりもはるかに長い時間がかかる可能性があります。
-
ファイル転送が終了すると、rsync は進行状況行を次のような要約行に置き換えます。
-
-
1,238,099 100% 146.38kB/s 0:00:08 (xfr#5, to-chk=169/396)
-
この例では、ファイルの長さは合計で 1,238,099バイト、ファイル全体の平均転送速度は、完了するまでにかかった 8秒間で
146.38キロバイト毎秒でした。これは、現在の rsync セッション中に通常のファイルが
5回目に転送されたことになります。また、ファイルリスト内の合計 396個のファイルのうち、受信者が (ファイルが最新であるかどうかを確認するために)
チェックすべきファイルはあと 169個あります。
-
増分再帰スキャンでは、rsync
はスキャンの終わりに到達するまでファイルリスト内のファイルの総数を知りません。しかし、スキャン中にファイルの転送を開始するので、リストの全サイズを知る時点までは
"to-chk" の代わりに "ir-chk" (増分再帰チェック) というテキストの行を表示します。そして、その時点で "to-chk"
の使用に切り替えます。したがって、 "ir-chk" を確認することで、ファイル・リスト内のファイルの合計数がまだ増加していることがわかります
(増加するたびに、チェックの必要なファイルの数は、リストに追加されたファイルの数だけ増加します)。
- -P
-
-P オプションは "--partial --progress"
と同じです。その目的は、中断される可能性のある長時間の転送に対して、これら 2つのオプションをより簡単に指定できるようにすることです。
-
個々のファイルではなく、転送全体に基づいて統計情報を出力する --info=progress2
オプションもあります。多数のファイル名で画面をスクロールせずに転送がどのように行われているかを確認する場合は、ファイル名を出力せずにこのフラグを使用します
(たとえば、 -v を避けたり、 --info=name0 を指定したりします)。(--progress を使用するために
--info=progress2 オプションを指定する必要はありません。
-
最後に、rsync に SIGINFO または SIGVTALRM のいずれかのシグナルを送信することで、即時の進捗報告を得ることができます。BSD
システムでは、Ctrl+T を入力することで SIGINFO が生成されます (Linux は現在 SIGINFO
シグナルをサポートしていません)。クライアント側のプロセスがこれらのシグナルのいずれかを受信すると、現在のファイル転送が終了したときに出力される単一の進捗レポートを出力するためのフラグが設定されます
(したがって、シグナルが到着したときに大きなファイルが処理されている場合は、少し時間がかかることがあります)。ファイル名が出力され
(必要な場合)、その後に --info=progress2 進行状況情報の形式が続きます。3つの rsync
プロセスのどれがクライアントプロセスかわからない場合は、すべてのプロセスにシグナルを送信しても問題ありません
(クライアント以外のプロセスはシグナルを無視するため)。
-
注意: 古い rsync (3.2.0 より前、2020年 6月)に SIGVTALRM を送ると、その rsync は死んでしまいます。
- --password-file=FILE
-
このオプションを使用すると、FILE が - の場合、ファイルまたは標準入力を介してrsync
デーモンにアクセスするためのパスワードを指定できます。ファイルには、最初の行にパスワードのみが含まれている必要があります
(他の行はすべて無視されます)。FILE が誰でも読める場合、または root が実行する rsync コマンドがroot
が所有していないファイルを見つけた場合、rsync はエラーで終了します。
-
このオプションは、ssh
のようなリモートシェルトランスポートへのパスワードを提供しません。その方法を学ぶには、リモートシェルのドキュメントを参照してください。リモートシェルをトランスポートとして使用してrsync
デーモンにアクセスする場合、このオプションは、リモートシェルが認証を完了した後にのみ有効になります
(つまり、デーモンの設定ファイルでパスワードも指定した場合)。
- --early-input=FILE
-
このオプションを指定すると、rsync は 5Kまでのデータを stdin の "early exec"
スクリプトに送ることができます。このデータを使って、暗号化されたファイルシステム ("post-xfer exec"
スクリプトでアンマウントする必要があります) をマウントするためのシークレットをスクリプトに与えることができます。
-
デーモンはバージョン 3.2.1 (2020年 6月) 以上である必要があります。
- --list-only
-
このオプションを選択すると、ソースファイルが転送される代わりに一覧表示されます。このオプションは、単一の送信元引数があり、宛先が指定されていない場合に推測されるため、主な用途は次のとおりです。
-
-
- 1.
-
コピー先の引数を含むコピーコマンドをファイル一覧表示コマンドに変換するか、
-
-
複数の source 引数を指定できるようにします。注意: 必ず宛先を含めてください。
-
注意:
ワイルドカード付きの引数は、シェルによって複数の引数に展開されるので、このオプションを推測するために単一のワイルドカード引数を指定しようとするのは決して安全ではないことを覚えておいてください。安全な例を次に示します:
-
-
rsync -av --list-only foo* dest/
-
このオプションでは、常に次のような出力フォーマットが使用されます。
-
-
drwxrwxr-x 4,096 2022/09/30 12:53:11 support
-rw-rw-r-- 80 2005/01/11 10:37:37 support/Makefile
-
この出力スタイルに影響するオプションは、--human-readable (-h) オプションのみです。既定では、サイズをバイト数と桁区切り
(14桁) で出力します。少なくとも 1つの -h
オプションを指定すると、単位の末尾にサイズが出力されます。桁区切りなしの古いスタイルのバイト数サイズ (および
11文字幅の列)が必要な場合は、--no-h を使用します。
-
互換性に関する注意: バージョン 2.6.3 以前(つまり、2005年より前) の rsync
からファイルのリモートリストを要求するとき、非再帰的なリストを要求すると、エラーが発生する場合があります。これは、ファイルリストは --dirs
なしの --recursive オプションを意味し、古い rsync
にはこのオプションがないためです。この問題を回避するには、--no-dirs オプションを指定するか
(ディレクトリの内容を展開する必要がない場合)、再帰をオンにしてサブディレクトリの内容を次のように除外します: -r --exclude='/*/*'。
- --bwlimit=RATE
-
このオプションを使用すると、ソケットを介して送信されるデータの最大転送速度を単位/秒で指定できます。RATE
値は、サイズ乗数を示す文字列を末尾に付けることができます。また、分数値 (例: --bwlimit=1.5m)
にすることもできます。接尾辞が指定されていない場合、値は 1024バイト単位であると見なされます ( "K" または "KiB"
が追加されている場合と同様)。使用可能なすべての接尾辞の説明については、--max-size
オプションを参照してください。0を指定すると、制限がなくなります。
-
下位互換性の理由により、レート制限は最も近い KiB 単位に丸められるため、1024 バイト/秒を下回るレートは不可能です。
-
Rsync はソケット上にブロック単位でデータを書き込みます。このオプションは、rsync
が書き込むブロックのサイズを制限し、平均転送速度を要求された制限に保とうとします。Rsync
がデータ・ブロックを書き込んでからスリープ状態になり、平均レートが基準を満たす場合に、バーストが発生することがあります。
-
データの内部バッファリングが原因で、--progress
オプションは、データの送信速度を正確に反映しない場合があります。これは、データが迅速にバッファリングされると送信が速いと表示されるファイルもあれば、出力バッファのフラッシュが発生すると送信が非常に遅いと表示されるファイルもあるためです。これは、将来のバージョンで修正される可能性があります。
-
--bwlimit オプションのデーモンバージョンも参照してください。
- --stop-after=MINS, (--time-limit=MINS)
-
このオプションは rsync に、指定した分数が経過したらコピーを停止するように伝えます。
-
柔軟性を最大にするために、rsync はリモートの rsync
にこのオプションを伝えません。なぜなら、通常は接続の一方が指定された通りに終了すれば十分だからです。これは接続の片側だけがそれをサポートする時でさえ、オプションの使用を許します。必要に応じて、--remote-option
(-M) を使用して、制限時間をリモート側に通知できます。
-
このオプションの --time-limit バージョンは廃止予定です。
- --stop-at=y-m-dTh:m
-
このオプションは、指定された時点に達したらコピーを停止するようにrsyncに伝えます。日付と時刻は、ローカルのタイムゾーンで 年-月-日T時:分
の数値形式で完全に指定できます (例:2000-12-31T23:59)。ダッシュの代わりにスラッシュを使用して日付番号を区切ることもできます。
-
この値は、2桁の年を指定したり、さまざまな値を省略したりするなど、さまざまな方法で短縮することもできます。いずれの場合も、値は、提供された情報が一致する次の可能な時点であると見なされます。この値が現在の時刻または過去の時刻を指定している場合、rsyncは
エラーで終了します。
-
たとえば、 "1-30" は次の 1月 30日 (現地時間の午前 0時) を指定し、 "14:00" は次の午後 2時を指定し、 "1" は次の月の
1日の午前 0時を指定し、 "31" は 31日目に停止できる次の月を指定し、 ":59" はその時間の、後の次の59分目を指定します。
-
柔軟性を最大にするために、rsync はリモートの rsync
にこのオプションを伝えません。なぜなら、通常は接続の一方が指定された通りに終了すれば十分だからです。これは接続の片側だけがそれをサポートする時でさえ、オプションの使用を許します。必要に応じて、--remote-option
(-M)
を使用して、制限時間をリモート側に通知できます。リモートホストの既定値のタイムゾーンは、ローカルホストとは異なる場合があることに注意してください。
- --fsync
-
受信側に、それぞれ終了したファイルを fsync
させます。これにより、転送が遅くなる可能性がありますが、重要なファイルを更新するときに安心できるようになります。
- --write-batch=FILE
-
--read-batch を使用して、後で別の同等の宛先に適用できるファイルを記録します。詳細については、 "バッチモード"
節と、--only-write-batch オプションを参照してください。
-
このオプションは、ネゴシエートされたチェックサムと圧縮リストを上書きし、常に旧式の md5/md4/zlib
の選択に基づいた選択をネゴシエートします。つまり、バッチモードは、zstd や lz4 などの新しい圧縮オプションと互換性がありません。
- --only-write-batch=FILE
-
--write-batch
と同様に機能しますが、バッチの作成時に宛先システムで更新が行われない点が異なります。これにより、変更を他の手段で宛先システムに転送し、--read-batch
を介して変更を適用することができます。
-
一部のポータブルメディアにバッチを直接書き込むこともできます。転送が終了する前にこのメディアが容量いっぱいになった場合は、その部分的な転送を宛先に適用し、プロセス全体を繰り返して残りの変更を取得できます
(複数の更新サイクルが発生している間に、宛先システムが部分的に更新されても構わない場合)。
-
また、変更をリモートシステムにプッシュする場合にのみ帯域幅を節約できることにも注意してください。これにより、受信者への回線を経由することなく、バッチ・データを送信者からバッチ・ファイルに転送できます
(プルする場合、送信者はリモートであるため、バッチを書き込むことはできません)。
- --read-batch=FILE
-
FILE に保存されているすべての変更を適用します。FILE は、以前に--write-batch によって生成されたファイルです。FILE
が - の場合、バッチデータは標準入力から読み込まれます。詳細は、 "バッチモード" 節を参照してください。
- --protocol=NUM
-
強制的に古いプロトコルバージョンを使用します。これは、古いバージョンの rsync
と互換性のあるバッチファイルを作成する場合に便利です。たとえば、rsync 2.6.4 が --write-batch
オプションとともに使用されているが、rsync 2.6.3 が --read-batch
オプションを実行するために使用される場合、バッチファイルを作成するときに "--protocol=28"
を使用して、バッチファイルで古いプロトコルバージョンが使用されるようにする必要があります (読み取りシステムで rsync
をアップグレードできないと仮定します)。
- --iconv=CONVERT_SPEC
-
Rsyncはこのオプションを使用して、異なる文字セット間でファイル名を変換することができます。CONVERT_SPECに "."
を使用すると、rsync
はロケール設定を介して既定値文字セットを検索します。別の方法として、どのような変換を行うかを完全に指定することもできます。そのためには、ローカル側とリモート側の文字セットを
--iconv=LOCAL,REMOTE の順にカンマで区切って指定します。例:
--iconv=utf8,iso88591。この順序により、ファイルをプッシュするかプルするかに関係なく、オプションは同じままになります。最後に、--no-iconv
または "-" の CONVERT_SPEC を指定すると、すべての変換をオフにできます。このオプションの既定値設定はサイト固有であり、環境変数
RSYNC_ICONV によっても影響を受けます。
-
ローカル iconv ライブラリがサポートしている文字セット名のリストを表示するには、"iconv --list" を実行します。
-
--secluded-args (-s) オプションを指定すると、rsync
は、リモートホストに送信されているコマンド行で指定したファイル名を変換します。詳細は、--files-from オプションも参照してください。
-
Rsyncは、フィルタファイル (include/exclude ファイルを含む)
内の名前の変換を行わないことに注意してください。転送の両側で一致できる一致ルールを確実に指定するかどうかは、あなた次第です。たとえば、両側でファイル名に違いがあり、それを考慮する必要がある場合は、追加の包含/除外ルールを指定できます。
-
Rsync デーモンに --iconv オプションを渡すと、rsync デーモンは、実際に渡すリモート文字セットに関係なく、 "charset"
設定パラメータで指定された文字セットを使用します。したがって、デーモン転送用にローカル文字セットだけを指定しても構いません (例:
--iconv=utf8)。
- --ipv4, -4 or --ipv6, -6
-
ソケットを作成するか ssh を実行するときに、IPv4/IPv6 を優先するように rsync に指示します。これは、rsync
が直接制御しているソケットに影響します。たとえば、rsync デーモンに直接接続している場合の発信ソケットや、rsync が ssh
がリモートシェルとして使用されていると推測できる場合の ssh への -4 または -6
オプションの転送などです。他のリモートシェルでは、"--rsh SHELL -4" オプションを直接指定する必要があります
(あるいは、使用する IPv4/IPv6 ヒントオプションを指定します)。
-
これらのオプションのデーモンバージョンも参照してください。
-
Rsync が IPv6 のサポートなしでコンパイルされた場合、--ipv6 オプションは効果がありません。rsync --version
の場合、出力には "no IPv6" が含まれます。
- --checksum-seed=NUM
-
チェックサムシードを整数 NUM に設定します。この 4バイトのチェックサムシードは、各ブロックと MD4 ファイルのチェックサム計算に含まれます
(最近のファイルチェックサムはシードを使用しません)。既定では、チェックサムシードはサーバと既定である現時点での time()
から生成されます。このオプションは特定のチェックサムシードを設定するために使われます。これは繰り返し可能なブロックチェックサムを必要とするアプリケーションや、ユーザがよりランダムなチェックサムシードを必要とする場合に有用です。NUM
を 0に設定すると、rsync はチェックサムシードのために既定の time() を使用します。
デーモンオプション
Rsync デーモンを起動するときに使用できるオプションは、次のとおりです。
- --daemon
-
これは rsync にデーモンとして実行することを伝えます。実行を開始するデーモンにアクセスするには、rsync クライアントで構文
host::module または rsync://host/module/ を使用します。
-
標準入力がソケットの場合、rsync は inetd
経由で実行されていると想定します。それ以外の場合は、現在の端末からデタッチし、バックグラウンドデーモンになります。このデーモンは、クライアントが接続するたびに設定ファイル
(rsyncd.conf) を読み込み、要求に応じて応答します。
-
詳細については、rsyncd.conf(5) マニュアルページを参照してください。
- --address=ADDRESS
-
既定では、rsync は、--daemon
オプションを使用してデーモンとして実行されると、ワイルドカードアドレスにバインドします。--address
オプションを使用すると、バインド先の特定の IP アドレス(またはホスト名を指定できます。これにより、--config
オプションと組み合わせてバーチャルドメインを使用できるようになります。
-
rsyncd.conf マニュアルページファイルの address global オプションと、クライアントバージョンの --address
オプションも参照してください。
- --bwlimit=RATE
-
このオプションを使用すると、デーモンがソケットを介して送信するデータの最大転送速度を指定できます。クライアントは引き続きより小さな
--bwlimit 値を指定できますが、より大きな値は許可されません。
-
詳細については、--bwlimit オプションのクライアント・バージョンを参照してください。
- --config=FILE
-
既定値以外の代替 config ファイルを指定します。これは、--daemon
が指定されている場合にのみ関係します。デーモンがリモートシェルプログラム上で実行されていて、リモートユーザがスーパーユーザでない場合を除き、既定値は
/etc/rsyncd.conf です。その場合、既定値は現在のディレクトリ (通常は$HOME) の rsyncd.conf です。
- --dparam=OVERRIDE, -M
-
このオプションを使用すると、rsync をデーモンモードで起動するときに、daemon-config
パラメータを設定できます。これは、最初のモジュールの定義の前、グローバル設定の最後にパラメータを追加することと同じです。パラメータ名は、必要に応じてスペースなしで指定できます。次に例を示します。
-
-
rsync --daemon -M pidfile=/path/rsync.pid
- --no-detach
-
デーモンとして実行している場合、このオプションは、rsync
がそれ自体をデタッチせず、バックグラウンドプロセスになるように指示します。このオプションは、Cygwin
上でサービスとして実行する場合に必要です。また、rsync が daemontools または AIX の System Resource Controller などのプログラムによって管理されている場合にも便利です。--no-detach は、rsync
をデバッガで実行する場合にも推奨します。Rsync が inetd または sshd から実行されている場合、このオプションは効果がありません。
- --port=PORT
-
これは、既定値 873 ではなく、デーモンのための、代替待ち受け TCP ポート番号を指定します。
-
クライアント版の --port オプションと、rsyncd.confの マニュアルページにあるポートのグローバル設定も参照してください。
- --log-file=FILE
-
このオプションは、設定ファイルの "log file" 設定を使用する代わりに、指定されたログファイル名を使用するように rsync
デーモンに指示します。
-
--log-file オプションのクライアントバージョンも参照してください。
- --log-file-format=FORMAT
-
このオプションは、設定ファイルの "log format" 設定を使う代わりに、与えられた FORMAT 文字列を使うように rsync
デーモンに指示します。また、文字列が空でない限り、"transfer logging" も有効にします。空の場合、転送ログはオフになります。
-
--log-file-format オプションのクライアント・バージョンも参照してください。
- --sockopts
-
これは、rsyncd.conf ファイルの socket options 設定を上書きし、同じ構文を使用します。
-
--sockopts オプションのクライアント・バージョンも参照してください。
- --verbose, -v
-
このオプションを使用すると、デーモンが起動段階でログに記録する情報量が増加します。クライアントが接続した後、デーモンの冗長レベルは、クライアントが使用したオプションと、モジュールの
config セクションの "max verbosity" 設定によって制御されます。
-
--verbose オプションのクライアント・バージョンも参照してください。
- --ipv4, -4 or --ipv6, -6
-
Rsync デーモンが接続の待ち受けに使用する受信ソケットを作成するときに、IPv4/IPv6 を優先するように rsync
に指示します。これらのオプションの 1つは、カーネルの IPv6 バグを回避するために、古いバージョンの Linux で必要になる場合があります
(他にポートを使用していないときに "address already in use" エラーが表示された場合は、デーモンの起動時に --ipv6
または --ipv4 を指定してみてください)。
-
これらのオプションのクライアントバージョンも参照してください。
-
Rsync が IPv6 のサポートなしでコンパイルされた場合、--ipv6 オプションは効果がありません。rsync --version
の場合、出力には "no IPv6" が含まれます。
- --help, -h
-
--daemon の後に指定された場合、rsync デーモンを起動するために利用可能なオプションを記述した短いヘルプページを表示します。
フィルタルール
フィルタルールを使用すると、ある種のファイル処理方法をカスタム制御できます。
- o
-
転送階層を記述するファイルリストに、送信側がどのファイルを入れるかを制御します
- o
-
ファイルが送信側のファイルリストにない場合に、受信側が削除処理から保護するファイルを制御します
- o
-
拡張属性をコピーするときに、どの拡張属性名をスキップするかを制御します
ルールは、オプション引数を介して直接指定することも、1つ以上のファイルから読み取ることもできます。フィルタルールファイルは、コピーされるファイルの階層の一部でもあり、異なる方法でツリーの異なる部分に影響を与えます。
単純なINCLUDE/EXCLUDEルール
まず、削除による副作用を無視して、包含ルールと除外ルールが、転送されるファイルにどのような影響を与えるかについての基本を説明します。フィルタルールは主に
rsync が "再帰" しているディレクトリの内容に影響しますが、引数として指定された転送のトップレベルのアイテムにも影響する可能性があります。
一致しないファイル/ディレクトリの既定値は、それを転送に含めるためのものであり、送信者のファイルリストにファイル/ディレクトリが入れられます。 "除外"
ルールを使用すると、1つ以上の一致するファイル/ディレクトリが、送信者のファイルリストから除外されます。包含ルールを使用して、一致するファイルが多すぎる除外ルールの効果を制限できます。
最初に一致したルールが有効になるため、ルールの順序は重要です。したがって、初期のルールがファイルを除外した場合、その後に続く包含ルールは何の効果もありません。つまり、包含の上書きは、制限対象の除外の前のどこかに配置する必要があります。
ディレクトリを除外すると、そのすべての内容と配下の内容も除外されます。送信者はそれをまったくスキャンしないので、不要な大きなサブツリーをスキップする時間を大幅に節約できます。
また、包含/除外ルールは、送信者が再帰するすべてのファイルおよびディレクトリに適用されることを理解することも重要です。したがって、特定の深いファイルを含めたい場合は、そのファイルまでの途中で横断する必要があるディレクトリが除外されていないことを確認する必要があります。そうしないと、そのファイルが含まれていることが決して検出されません。たとえば、ディレクトリ
"a/path" が転送引数として指定され、ファイル "a/path/down/deep/wanted.txt"
が転送の一部であることを確認する場合、送信者はディレクトリ "a/path" 、 "a/path/down" 、または
"a/path/down/deep" を除外してはなりません。これは、ファイルツリー内をスキャンするためです。
ルールを処理しているとき、何が除外されている/含まれているのか、そしてその理由を教えてくれるように rsync
に指示すると便利です。--debug=FILTER または (ファイルをプルする場合) -M--debug=FILTER
を指定すると、FILTER デバッグ情報のレベル
1がオンになります。この情報は、ファイルまたはディレクトリが含まれているか除外されているか、およびどのルールに一致したかを示すメッセージを出力します。3.2.4
からは、フィルタルールの末尾に空白がある場合にも警告を発するようになりました。これは、 "foo¥ " (末尾にスペースがある) を除外しても、
"foo" という名前のファイルは除外されないためです。
excludeおよびinclude規則では、ワイルドカードを指定できます。PATTERN MATCHING RULES
(シェルのワイルドカードに似ています) を使用すると、ファイルの接尾辞やファイル名の一部などを一致させることができます。
ファイル名の最後にスラッシュを付けることで、ルールの影響をディレクトリのみに制限できます。
単純なINCLUDE/EXCLUDEの例
送信側で次のファイルツリーを作成します:
-
mkdir x/
touch x/file.txt
mkdir x/y/
touch x/y/file.txt
touch x/y/zzz.txt
mkdir x/z/
touch x/z/file.txt
この場合、次の rsync コマンドによって、ファイル "x/y/file.txt"
およびそれを保持するために必要なディレクトリが転送され、リモートホスト上にパス "/tmp/x/y/file.txt" が作成されます。
-
rsync -ai -f'+ x/' -f'+ x/y/' -f'+ x/y/file.txt' -f'- *' x host:/tmp/
余談: このコピーは、-R オプションを使用して実行することもできます (ただし、削除が有効になっている場合、2つのコマンドの動作は異なります):
-
rsync -aiR x/y/file.txt host:/tmp/
次のコマンドでは、 "x" ディレクトリをインクルードする必要はありません。これは、このディレクトリが転送の一部ではないためです
(末尾のスラッシュに注意してください)。次のコマンドを実行すると、 "y" および "z" ディレクトリが除外されるため、
"/tmp/x/file.txt" のみがコピーされます。
-
rsync -ai -f'+ file.txt' -f'- *' x/ host:/tmp/x/
このコマンドでは、zzz.txt ファイルが省略され、 "x" とそれに含まれるその他すべてがコピーされます。
-
rsync -ai -f'- zzz.txt' x host:/tmp/
削除時のフィルタルール
既定では、包含/除外フィルタルールは、送信側 (ファイル・リストを作成するとき) と受信側 (削除を計算するためにファイル・リストを作成するとき)
の両方に影響します。削除オプションが有効でない場合、受信側は削除関連ファイルリストの作成をスキップします。この両サイドでの既定値は、
"フィルタルールの詳細" セクションで説明されているように、送信者ルールまたは受信者ルールのみを指定するように手動で上書きできます。
削除する場合、除外は受信側でファイルが削除されないように保護しますが、包含はその保護を無効にします
(ファイルを削除される危険にさらします)。既定値は、危険にさらされているファイルのためのものです --
その安全さは、送信者からの対応するファイルと一致するかどうかにかかっています。
2つのシステム間で C
の開発用ディレクトリをコピーすることによって、両サイドでの除外の効果の例を示します。タッチアップコピーを行う場合、構築された実行可能ファイルと
.o ファイル (送信者非表示)
のコピーをスキップして、受信側が独自のファイルを構築し、すでに正しいオブジェクトファイルを失わないようにすることができます
(受信者保護)。次に例を示します。
-
rsync -ai --del -f'- *.o' -f'- cmd' src host:/dest/
ディレクトリ構造が変更されている可能性がある場合は、-f'-p *.o' を使用する方が -f'- *.o' よりも優れています。"p"
修飾子は フィルタールール修飾子 節で説明しています。
最後に、シェルが展開されていないワイルドカードを気にしない場合は、スペースの代わりにアンダースコアを使用し、引用符を省略することで、フィルタオプションの入力を簡素化できます。例えば、-f -_*.o -f -_cmd (および類似の) は、上記のフィルタオプションの代わりに使用できます。
フィルタルールの詳細
Rsync は古いスタイルの包含/除外ルールと新しいスタイルのフィルタルールをサポートしています。古い規則は、--include および
--exclude と同様に --include-from および --exclude-from
を使用して指定されます。これらは動作が制限されていますが、 "-" や "+" の接頭辞は必要ありません。古いスタイルの除外ルールは "- name" フィルタールール (修飾子なし) に変わり、古いスタイルの組み込みルールは "+ name" フィルター・ルール (修飾子なし)
に変わります。
Rsyncは、コマンドラインでの指定やファイルからの読み込みに従って、フィルタルールの順序付きリストを構築します。新しいスタイルフィルタルールの構文は、次のとおりです:
-
RULE [PATTERN_OR_FILENAME]
RULE,MODIFIERS [PATTERN_OR_FILENAME]
以下に説明するように、短いルール名を使用するか、長いルール名を使用するかを選択できます。短い名前のルールを使用する場合、RULE と MODIFIERS
の間の "," はオプションです。続く PATTERN または FILENAME (存在する場合) は、単一のスペースまたはアンダースコア (_)
の後に配置する必要があります。追加のスペースやアンダースコアは、パターン名の一部と見なされます。使用可能な規則プレフィックスを次に示します:
- exclude, '-'
-
これは、(既定値で) hide および protect の両方である除外パターンを指定します。
- include, '+'
-
これは、(既定値で) show および risk の両方である包含パターンを指定します。
- merge, '.'
-
これはクライアント側でルールを読み込むための merge-file を指定します。
- dir-merge, ':'
-
これはディレクトリごとの merge-file
を指定します。この種のフィルタ規則を使用するには、送信側のフィルタチェックを信頼する必要があります。したがって、--trust-sender
オプションで説明した副作用があります。
- hide, 'H'
-
これは、ファイルを転送から隠すためのパターンを指定します。送信者のみの exclude と同じであるため、-f'H foo' は
-f'-s foo' と指定することもできます。
- show, 'S'
-
これは、パターンに一致するファイルは非表示にしません。送信者のみの include と同じなので、-f'S foo' は -f'+s foo' と指定することもできます。
- protect, 'P'
-
これはファイルを削除から保護するためのパターンを指定します。受信側のみの exclude と同等であるため、-f'P foo' は
-f'-r foo' と指定することもできます。
- risk, 'R'
-
これはパターンに一致するファイルは保護しません。受信者のみを含める場合と同等であるため、-f'R foo' は -f'+r foo'
と指定することもできます。
- clear, '!'
-
これは現在の包含/除外リストをクリアします (引数は取りません)。
ルールがファイルから読み込まれる場合 (merge または dir-merge を使用)、空の行は無視されます。また、 "#"
で始まる行全体のコメントも無視されます (ハッシュ文字を含むファイル名ルールは影響を受けません)。
--filter、--include、および --exclude オプションは、それぞれ
1つのルール/パターンを取ることにも注意してください。複数のオプションを追加するには、コマンドラインでオプションを繰り返し、--filter
オプションまたは --include-from/--exclude-from オプションの merge-file 構文を使用します。
パターン・マッチング・ルール
上記のルールのほとんどは、ルールが一致すべきものを指定する引数を取ります。Rsync がディレクトリ階層を再帰的に検索する場合、各パターンは、rsync
が送信するファイル名を検索するときに、下降パス内のすべてのディレクトリの名前と照合されることに注意してください。
pattern 引数の突き合わせ規則には、いくつかの形式があります:
- o
-
パターンに / (末尾のスラッシュはカウントされません) または "**"
(スラッシュと一致します)が含まれる場合、パターンは、内の先行ディレクトリを含むフルパス名と照合されます。パターンに (末尾以外の) / または
"**" が含まれていない場合、パターンはファイル名またはパス名の最後のコンポーネントに対してのみ一致します。たとえば、foo
は、最終的なパスコンポーネントが "foo" でなければならないことを意味し、foo/bar は、パスの最後の 2つの要素に一致します
(両方の要素が転送内にある場合)。
- o
-
/ で終わるパターンは、ディレクトリだけに一致します。通常のファイル、シンボリックリンク、デバイスには一致しません。
- o
-
/ で始まるパターンは、伝達経路の終点ではなく始点に固定されます。例えば、 " /foo/** " または " /foo/bar/**
"
を指定すると、パスの先頭にある要素のみが検索されます。規則がディレクトリ単位のフィルタファイルから読み取られる場合、一致する転送パスは、転送の先頭ではなく、フィルタファイルのレベルから始まります。転送のルートで一致するパターンを指定する方法の詳細については、
"INCLUDE/EXCLUDE PATTERNSによるアンカー" の節を参照してください。
Rsyncは、単純な文字列一致とワイルドカード一致のどちらを行うかを、パターンが次の
3つのワイルドカード文字のいずれかを含んでいるかどうかをチェックすることで選択します: '*','?','[':
- o
-
'?' は、スラッシュを除く任意の 1文字 (/) と一致します。
- o
-
'*' は 0個以上のスラッシュ以外の文字と一致します。
- o
-
'**' は、スラッシュを含む 0個以上の文字と一致します。
- o
-
"[" は、[a-z] または [[:alpha:]] など、1つの文字に一致する必要がある文字クラスを示します。
- o
-
パターン内の末尾の *** は省略形で、1つのルールを使用してディレクトリとそのすべての内容を一致させることができます。たとえば、
"dir_name/***" と指定すると、 "dir_name" ディレクトリ (dir_name/" と指定した場合と同様)
とディレクトリ内のすべてのもの (dir_name/**" と指定した場合と同様) の両方に一致します。
- o
-
バックスラッシュを使用してワイルドカード文字をエスケープできますが、これがエスケープ文字として解釈されるのは、少なくとも
1つのワイルドカード文字がマッチ・パターン内に存在する場合だけです。例えば、パターン "foo\bar" はバックスラッシュ
1つに文字通り一致しますが、パターン "foo\bar*" は "foo\\bar*" に変更して、 "\b" が単に "b"
にならないようにする必要があります。
exclude/includeマッチングの例をいくつか示します:
- o
-
オプション -f'- *.o' この場合、.o で終わるすべてのファイル名が除外されます。
- o
-
オプション -f'- /foo' は、transfer-root ディレクトリにある foo という名前のファイル (またはディレクトリ)
を除外します。
- o
-
オプション -f'- foo/' は、foo という名前のディレクトリをすべて除外します。
- o
-
オプション -f'- foo/*/bar' の場合、 bar という名前のディレクトリの 2つ下のレベルにある foo
という名前のファイル/ディレクトリがすべて除外されます (foo が転送に含まれる場合)。
- o
-
オプション -f'- /foo/**/bar' の場合、 foo という最上位ディレクトリの2つ以上下のレベルにある bar
という名前のファイル/ディレクトリがすべて除外されます ( /foo/bar は除外されないことに注意)。
- o
-
オプション -f'+ */' -f'+ *.c' -f'- *' は、すべてのディレクトリと .c
ソース・ファイルが含まれますが、それ以外は含まれません。
- o
-
オプション -f'+ foo/' -f'+ foo/bar.c' -f'- *' は、foo ディレクトリと foo/bar.c
しか含めません (foo ディレクトリは明示的に含める必要があり、そうでない場合は "- *" によって除外されます)。
フィルタールール修飾子
以下の修飾子は、包含 (+) または 除外 (-) ルールの後に付けられます:
- o
-
/ は、包含/除外ルールが現在のアイテムの絶対パス名に一致する必要があることを指定します。たとえば、 -f'-/ /etc/passwd'
は、転送によって "/etc" ディレクトリからファイルが送信される場合は常に passwd ファイルが除外されます。また、"-/subdir/foo"
は、"subdir" という名前のディレクトリに "foo" がある場合は、たとえ "foo" が現在の転送のルートにある場合でも、常に "foo"
が除外されます。。
- o
-
! は、パターンが一致しない場合に、包含/除外を有効にすることを指定します。たとえば、-f'-! */'
と入力すると、ディレクトリ以外のものがすべて除外されます。
- o
-
C は、"-C" の代わりに、すべてのグローバル CVS
除外ルールを除外として挿入する必要があることを示すために使用されます。この後に引数を続けないでください。
- o
-
s
は、ルールが送信側に適用されることを示すために使用されます。送信側に影響する規則は、送信側のファイルリストに追加されるファイルの種類に影響します。既定値は、--delete-excluded
が指定されていない限り、ルールが両側に影響するためのものです。指定されている場合、既定値のルールは送信側のみになります。非表示 (H) および表示
(S) ルールも参照してください。これらのルールは、送信側の包含/除外を指定するための代替方法です。
- o
-
r は、ルールが受信側に適用されることを示すために使用されます。ルールが受信側に影響を与える場合、ファイルは削除されなくなります。詳細は、s
修飾子を参照してください。保護 (P) およびリスク (R) ルールも参照してください。これらは、受信側で含める/除外するを指定するための代替方法です。
- o
-
pは、ルールが壊れやすいことを示します。つまり、削除中のディレクトリでは無視されます。たとえば、--cvs-exclude (-C)
オプションの既定値ルールでは、 "CVS" や "*.o"
などを除外するものは壊れやすいものとしてマークされ、ソースで削除されたディレクトリが宛先で削除されるのを防ぐことはできません。
- o
-
x ルールが xattrコピー/削除操作で xattr
名に影響を与えることを示します。したがって、ファイル/ディレクトリ名の照合時には無視されます。xattr-matching
ルールが指定されていない場合は、既定値の xattr フィルタリングルールが使用されます (--xattrs オプションを参照)。
マージファイルのフィルタ規則
ファイル全体をフィルタルールにマージするには、マージ (.) または dir-merge(:) フィルタルールを指定します (前述の "フィルタルール"
セクションを参照)。
マージされたファイルには、単一インスタンス ('.') とディレクトリ単位 (':') の 2種類があります。単一インスタンスのマージファイルは
1回読み込まれ、その規則は "." 規則の代わりにフィルタリストに組み込まれます。ディレクトリ単位のマージファイルの場合、rsync
は指定されたファイルを探して横断するすべてのディレクトリをスキャンし、ファイルが存在する場合はその内容を継承されたルールの現在のリストにマージします。これらのディレクトリごとのルールファイルは、送信側で作成する必要があります。これは、転送可能なファイルをスキャンするのが送信側であるためです。これらのルールファイルは、削除されないファイルに影響を与えたい場合にも、受信側に転送する必要があります
(後述のPER-DIRECTORY RULES AND DELETEを参照)。
次に例を示します:
-
merge /etc/rsync/default.rules
. /etc/rsync/default.rules
dir-merge .per-dir-filter
dir-merge,n- .non-inherited-per-dir-excludes
:n- .non-inherited-per-dir-excludes
次の修飾子は、マージまたはディレクトリマージ規則の後で受け入れられます:
- o
-
- は、ファイルが除外パターンのみで構成され、ファイル内コメントを除く他のルール解析が行われないことを指定します。
- o
-
+ は、ファイルがインクルードパターンのみで構成され、ファイル内コメントを除く他のルール解析が行われないことを指定します。
- o
-
C は、ファイルを CVS 互換の方法で読み込むことを指定する方法です。これは、 "n" 、 "w" 、および "-"
をオンにしますが、リスト消去トークン (!) も指定できます。ファイル名を指定しないと、".cvsignore" とみなされます。
- o
-
e は、マージしたファイル名を転送対象から除外します。例えば "dir-merge,e.rules" は "dir-merge.rules"
や "-.rules" と同じです。
- o
-
n は、規則がサブディレクトリに継承されないことを指定します。
- o
-
w は、通常の行分割ではなく、空白で単語分割する規則を指定します。これにより、コメントもオフになります。注意:
プレフィックスとルールを区切るスペースは特別に扱われます。したがって、"-foo+bar" は 2つのルールとして解析されます
(プレフィックス解析も無効になっていないと仮定します)。
- o
-
また、 "+" または "-" ルール (上記)
の任意の修飾子を指定して、ファイル既定値から読み込まれるルールがその修飾子セットを持つようにすることもできます (!
修飾子は除きます。これは有用ではありません)。例えば、"merge,-/.excl" は.excl
の内容を絶対パス除外として扱いますが、"dir-merge,s.filt" と ":sC"
はそれぞれ、すべてのディレクトリ毎の規則を送信側にのみ適用させます。マージ規則が (s または r
修飾子またはその両方を介して)影響を与える側を指定する場合、ファイル内の規則は (修飾子または hide などの規則接頭辞を介して)
サイドを指定してはなりません。
ディレクトリごとのルールは、 "n"
修飾子が使用されていない限り、マージファイルが見つかったディレクトリのすべてのサブディレクトリに継承されます。各サブディレクトリの規則には、その親から継承されたディレクトリ単位の規則がプレフィックスとして付けられます。これにより、最新の規則に、継承された規則よりも高い優先順位が与えられます。dir-merge
ルールのセット全体は、merge-file が指定された場所でグループ化されます。したがって、上書きルールのリストで先に指定されたルールを介して
dir-merge ルールをグループ化することが可能です。ディレクトリごとのファイルからリストクリアルール ( "!" )
が読み取られると、現在のマージファイルの継承されたルールのみがクリアされます。
dir-merge ファイルから 1つのルールが継承されないようにするもう
1つの方法は、先行するスラッシュでアンカーすることです。ディレクトリ単位のマージファイル内のアンカールールは、マージファイルのディレクトリに対して相対的であるため、パターン
"/foo" は、dir-merge フィルタファイルが見つかったディレクトリ内のファイル "foo" にのみ一致します。
--filter=". file": で指定するフィルタファイルの例を示します
-
merge /home/user/.global-filter
- *.gz
dir-merge .rules
+ *.[ch]
- *.o
- foo*
これにより、/home/user/.global-filter ファイルの内容がリストの先頭にマージされます。また、 ".rules"
ファイル名がディレクトリ別のフィルタファイルに変換されます。ディレクトリスキャンの開始前に読み込まれるすべてのルールは、グローバルアンカリングルールに従います
(つまり、転送のルートで先頭のスラッシュが一致します)。
ディレクトリ単位のマージファイルが、最初の転送ディレクトリの親ディレクトリであるパスで指定された場合、rsync
は、開始点から転送ディレクトリまでのすべての親ディレクトリをスキャンして、指定されたディレクトリ単位のファイルを探します。例えば、以下は一般的なフィルタです
(-F 参照)。
-
--filter=': /.rsync-filter'
このルールは、転送の一部として送信されるディレクトリ内のファイルの通常のディレクトリスキャンが開始される前に、転送のルートから親ディレクトリまでのすべてのディレクトリで
.rsync-filter ファイルをスキャンするように rsync に指示します。(注意: rsyncデーモンでは、ルートは常にモジュールの "パス"
と同じです。
ディレクトリごとのファイルに対する事前スキャンの例を次に示します:
-
rsync -avF /src/path/ /dest/dir
rsync -av --filter=': ../../.rsync-filter' /src/path/ /dest/dir
rsync -av --filter=': .rsync-filter' /src/path/ /dest/dir
上記の最初の 2つのコマンドは、通常のスキャンが "/src/path" およびそのサブディレクトリ内のファイルの検索を開始する前に、 "/" および
"/src" 内の ".rsync-filter" を検索します。最後のコマンドは、親ディレクトリのスキャンを回避し、転送の一部である各ディレクトリ内の
".rsync-filter" ファイルのみを検索します。
".cvsignore" の内容をパターンに含めたい場合は、":C" というルールを使用してください。これは、.cvsignore
ファイルのディレクトリマージを作成しますが、CVS 互換の方法でパースします。これを使うと、--cvs-exclude (-C)
オプションでディレクトリ毎の .cvsignore ファイルをインクルードする場合に、フィルタルール内の好きな場所に" :C"
を置くことで、ルール内のどこに置くかを指定することができます。これがないと、rsync は .cvsignore ファイル用の dir-merge
ルールを、他のすべてのルールの最後に追加してしまいます (コマンドラインルールよりも低い優先度を与えてしまいます)。例:
-
cat <<EOT | rsync -avC --filter='. -' a/ b
+ foo.o
:C
- *.old
EOT
rsync -avC --include=foo.o -f :C --exclude='*.old' a/ b
上記の rsync コマンドは両方とも同じです。それぞれが、ディレクトリ毎の .cvsignore
ルールを、リストの最後ではなく真ん中にマージします。これにより、すべてのルールに従属するのではなく、ディレクトリ固有のルールが :C
に従うルールよりも優先されるようになります。他の CVS 除外ルール (つまり、除外の既定値リスト、$HOME/.cvsignore の内容、そして
$CVSIGNORE の値) に影響を与えるためには、-C コマンドラインオプションを省略し、代わりに "-C"
ルールをフィルタルールに挿入すべきです。例えば、"--filter=-C" です。
リスト-クリヤ フィルタルール
現在の包含/除外リストをクリアするには、"!" フィルタ・ルールを使用します (前述のフィルタ・ルールの項を参照)。 "現在の"
リストは、ルールのグローバルリスト (フィルタオプションの解析中にルールが検出された場合)、またはディレクトリごとのルールのセット
(独自のサブリストに継承されるため、サブディレクトリはこれを使用して親のルールをクリアできます) のいずれかです。
INCLUDE/EXCLUDEパターンのアンカー
前述したように、グローバルな包含/除外パターンは "転送のルート" に固定されます
(ディレクトリごとのパターンはマージ・ファイルのディレクトリに固定されます)。転送を、送信者から受信者に送信される名前のサブツリーと考える場合、転送ルートは、宛先ディレクトリ内でツリーの複製が開始される場所です。このルートは、/
で始まるパターンがどこに一致するかを決定します。
照合は転送のルート(root) に対して相対的に行われるため、ソースパスの末尾のスラッシュを変更するか、--relative
オプションの使用を変更すると、照合で使用する必要があるパスに影響します
(さらに、宛先ホストで複製されるファイルツリーの量も変更されます)。次の例はこれを示しています。
絶対パスが "/home/me/foo/bar" のソースファイルと、パスが "/home/you/bar/baz" のソースファイルの
2つを一致させるとします。2つのソース転送用に、さまざまなコマンド選択がどのように異なるかを次に示します:
-
Example cmd: rsync -a /home/me /home/you /dest
+/- pattern: /me/foo/bar
+/- pattern: /you/bar/baz
Target file: /dest/me/foo/bar
Target file: /dest/you/bar/baz
-
Example cmd: rsync -a /home/me/ /home/you/ /dest
+/- pattern: /foo/bar (note missing "me")
+/- pattern: /bar/baz (note missing "you")
Target file: /dest/foo/bar
Target file: /dest/bar/baz
-
Example cmd: rsync -a --relative /home/me/ /home/you /dest
+/- pattern: /home/me/foo/bar (note full path)
+/- pattern: /home/you/bar/baz (ditto)
Target file: /dest/home/me/foo/bar
Target file: /dest/home/you/bar/baz
-
Example cmd: cd /home; rsync -a --relative me/foo you/ /dest
+/- pattern: /me/foo/bar (starts at specified path)
+/- pattern: /you/bar/baz (ditto)
Target file: /dest/me/foo/bar
Target file: /dest/you/bar/baz
どの名前をフィルターに掛けるべきかを知るための最も簡単な方法は、--verbose を使用したときの出力を見て、名前の前に / を付けます
(ファイルをコピーする準備がまだ整っていない場合は、--dry-run オプションを使用します)。
ディレクトリごとのルールと削除
削除オプションが無い場合、ディレクトリ毎のルールは送信側にのみ適用されるため、転送に影響を与えることなくマージファイル自体を自由に除外することができます。これを簡単にするために、次の2つの同等のコマンドに示すように、
"e" 修飾子によってこの除外が追加されます:
-
rsync -av --filter=': .excl' --exclude=.excl host:src/dir /dest
rsync -av --filter=':e .excl' host:src/dir /dest
ただし、受信側で削除を実行し、かつ一部のファイルを削除から除外したい場合は、受信側がどのファイルを除外するかを認識していることを確認する必要があります。最も簡単な方法は、ディレクトリごとのマージファイルを転送に含め、--delete-after
を使用することです。これは、受信側が何かを削除しようとする前に、送信側と同じ除外ルールをすべて取得することを保証するためです:
-
rsync -avF --delete-after host:src/dir /dest
しかし、マージファイルが転送に含まれていない場合は、グローバルな除外ルール (例えばコマンドラインで指定)
を指定するか、受信側のディレクトリごとに独自のマージファイルを保持する必要があります。1つ目の例は次のとおりです
(remote.rulesファイルがそれ自体を除外していると仮定します):
-
rsync -av --filter=': .rules' --filter='. /my/extra.rules'
--delete host:src/dir /dest
上記の例では、追加の .rules ファイルは転送の両側に影響を与えることができますが、(送信側では) そのルールは .rules
ファイルからマージされたルールに従属します。これは、それらのルールがディレクトリ単位のマージルールの後に指定されたためです。
最後の例では、リモート側は .rsync-filter ファイルを転送から除外していますが、受信側で何を削除するかを制御するために、独自の
.rsync-filter ファイルを使おうとしています。これを行うには、ディレクトリごとのマージファイルを明確に除外し
(削除されないように)、ローカルファイルにルールを設定して、他に削除してはいけないものを制御する必要があります。たとえば、次のコマンドを実行します:
-
rsync -av --filter=':e /.rsync-filter' --delete \
host:src/dir /dest
rsync -avFF --delete host:src/dir /dest
転送ルール
送信側および (削除時の)
受信側でファイルリストを生成する再帰的ファイルスキャンに影響するフィルタルールに加えて、転送ルールがあります。これらの規則は、除外フィルタ規則の副作用なしに転送する必要があるとジェネレータが判断するファイルに影響します。転送ルールはファイルだけに影響し、ディレクトリには影響しません。
転送ルールは、送信側 (および受信側) のファイルリストに含まれる内容には影響しないため、受信側で削除されるファイルには影響しません。例えば、ファイル
"foo"
が送信者のリストに存在するが、そのサイズが転送規則のために省略されるような場合、受信側はそのファイルを要求しません。ただし、ファイルリストに存在するため、削除パスでは受信側で
"foo" という名前が一致するファイルは削除されません。一方、ファイル "foo" のサーバ側の除外 (非表示)
は、サーバのファイルリストからファイルを除外し、受信側の除外 (保護) がなければ、受信者は、削除が要求された場合に、"foo"
という名前の一致するファイルを削除します。
ファイルがまだ送信者のファイルリストにある場合、--prune-empty-dirs
オプションを使用すると、転送ルールが省略したファイルのみが含まれている場合でも、ディレクトリが空であるとは判断されません。
同様に、転送ルールには、受信側でどのファイルが削除されるかについて追加の影響はありません。したがって、転送の最大ファイルサイズを設定しても、大きなファイルが削除されるのを防ぐことはできません。
転送ルールの例としては、既定値の "クイックチェック" アルゴリズム(サイズと修正時間を比較する)、--update
オプション、--max-size オプション、--ignore-non-existing オプションなどがあります。
バッチモード
バッチモードを使用すると、同じ更新セットを多数の同一システムに適用できます。多数のホスト上に複製されたツリーがあるとします。ここで、このソースツリーに何らかの変更が加えられ、それらの変更を他のホストに伝播する必要があるとします。バッチモードを使用してこれを行うには、write-batch
オプションを指定して rsync を実行し、ソースツリーに加えられた変更をデスティネーション・ツリーの 1つに適用します。write-batch
オプションを使用すると、rsync クライアントは、他の同一の宛先ツリーに対してこの処理を繰り返すために必要なすべての情報を "バッチファイル"
に保存します。
バッチファイルを
1回生成すると、複数の宛先ツリーを更新するときに、ファイルステータス、チェックサムおよびデータブロック生成を複数回実行する必要がなくなります。マルチキャスト転送プロトコルを使用すると、同じデータを各ホストに個別に送信する代わりに、バッチ更新ファイルを多数のホストに一度に並行して転送できます。
記録された変更を別の宛先ツリーに適用するには、同じバッチファイルの名前と宛先ツリーを指定して、read-batch オプションを指定して rsync
を実行します。Rsync は、バッチファイルに保存されている情報を使用して、宛先ツリーを更新します。
write-batch オプションを使用した場合は、スクリプトファイルも作成されます。このファイルの名前は、バッチファイルの名前に ".sh"
を追加したものになります。このスクリプトファイルには、関連付けられたバッチファイルを使用してデスティネーションツリーを更新するのに適したコマンドラインが含まれています。このコマンドは、Bourne
(または Bourne に似た)
シェルを使用して実行できます。オプションで、元の宛先パスの代わりに使用される代替の宛先ツリーパス名を渡すことができます。これは、現在のホスト上の宛先ツリーのパスが、バッチファイルの作成に使用されたパスと異なる場合に便利です。
例:
-
$ rsync --write-batch=foo -a host:/source/dir/ /adest/dir/
$ scp foo* remote:
$ ssh remote ./foo.sh /bdest/dir/
-
$ rsync --write-batch=foo -a /source/dir/ /adest/dir/
$ ssh remote rsync --read-batch=- -a /bdest/dir/ <foo
これらの例では、rsync を使用して /source/dir/ から /adest/dir/ を更新し、この操作を繰り返すための情報を "foo" と
"foo.sh" に格納しています。次に、ホスト "remote" は、ディレクトリ /bdest/dir
に送られるバッチデータで更新されます。2つの例の違いは、バッチの処理方法に柔軟性があることを示しています。
- o
-
最初の例は、最初のコピーがローカルである必要がないことを示しています -- リモートシェル構文または rsync
デーモン構文のいずれかを必要に応じて使用して、リモートホストとの間でデータをプッシュまたはプルできます。
- o
-
最初の例では、リモートホストで read-batch コマンドを実行するときに、作成された "foo.sh" ファイルを使用して正しい rsync
オプションを取得します。
- o
-
2番目の例では、標準入力を介してバッチデータを読み取るため、最初にバッチファイルをリモートマシンにコピーする必要はありません。この例では、変更された
--read-batch オプションを使用する必要があったため、foo.sh
スクリプトを使用していません。ただし、このスクリプトを使用したい場合は、スクリプトファイルを編集できます (--exclude-from=-
オプションなど、他のオプションが標準入力を使用しようとしていないことを確認してください)。
注意点:
read-batch
オプションは、更新される宛先ツリーが、バッチ更新ファイルセットの作成に使用された宛先ツリーと同じであることを想定しています。宛先ツリー間に差異が発生した場合、更新は警告付きで破棄されるか
(ファイルがすでに最新の状態であると思われる場合)、ファイル更新が試行され、ファイルの検証に失敗した場合、更新はエラー付きで破棄されます。これは、コマンドが中断された場合に、バッチ読み取り操作を再実行しても安全であることを意味します。ファイルのサイズや日付に関係なく、バッチ更新が常に試行されるように強制する場合は、-I
オプション (バッチの読み取り時)
を使用します。エラーが発生した場合、宛先ツリーは部分的に更新された状態になっている可能性があります。その場合、rsync を通常の (非バッチ)
モード操作で使用して、宛先ツリーを修正できます。
すべてのデスティネーションで使用される rsync
のバージョンは、少なくともバッチファイルの生成に使用されたバージョンと同じくらい新しい必要があります。バッチファイル内のプロトコルバージョンが、バッチを読み込む
rsync が扱うには新しすぎる場合、rsync はエラーで終了します。また、古い rsync が理解できるバッチファイルを生成する rsync
を作成する方法については、--protocol オプションを参照してください。(バッチファイルの形式はバージョン2.6.3 (2004年 9月)
で変更されたため、それよりも古いバージョンと新しいバージョンを混在させても機能しません)。
バッチファイルを読む時、もしバッチ書き込みコマンドと同じに設定していなければ、rsync
は強制的に特定のオプションの値をバッチファイルのデータと一致させます。その他のオプションは変更可能です (変更すべきです)。たとえば、
--read-batch, --files-from への --write-batch を変更することはドロップされ、
--filter / --include / --exclude オプションのいずれかが指定されない限り、 --delete
オプションは必要ありません。
BATCH.sh ファイルを作成するコードは、すべての filter/include/exclude オプションを単一のリストに変換します。このリストは
"here" 文書としてシェルスクリプトファイルに追加されます。上級ユーザは、これを使用して、--delete
によって削除されるものの変更が必要な場合に除外リストを変更できます。一般ユーザは、この詳細を無視し、バッチデータに対して適切な
--read-batch コマンドを実行する簡単な方法として、シェルスクリプトを使用することができます。
シンボリックリンク
Rsync がソースディレクトリ内でシンボリックリンクを検出した場合、3つの基本的な動作が可能です。
既定では、シンボリックリンクはまったく転送されません。シンボリックリンクが存在する場合は、メッセージ "skipping non-regular"
file が出力されます。
--links が指定された場合、シンボリックリンクが (うるさく無視されるのではなく)
転送に追加され、既定の処理は、宛先の同じターゲットでシンボリックリンクを再作成することです。--archive は --links
を仮定することに注意してください。
--copy-links が指定されている場合、シンボリックリンクは symlink ではなく referent をコピーすることによって
"縮小" されます。
Rsync はまた、 "安全な" シンボリックリンクと "安全でない" シンボリックリンクを区別することができます。これが使用される例は、コピーされる
rsync モジュールがサイトの公開セクション内の /etc/passwd へのシンボリックリンクを含まないことを確実にすることを望む Web
サイトミラーです。--copy-unsafe-links
を使用すると、リンクは宛先上でリンク先が指すファイルとしてコピーされます。--safe-links
を使用すると、安全でないリンクが受信者によって省略されます。( --links を有効にするには、 --safe-links
を指定または仮定する必要があることに注意してください。)。
シンボリックリンクは、絶対シンボリックリンク (/ で始まる) の場合、空の場合、または先頭から移動するのに十分な ".."
コンポーネントが含まれている場合、安全ではないと見なされます。
ここでは、symlink
オプションがどのように解釈されるかを要約します。リストは優先順位の順になっているので、オプションの組み合わせが記載されていない場合は、オプションの完全なサブセットである最初の行を使用します。
- --copy-links
-
すべてのシンボリックリンクを通常のファイルとディレクトリに変換します (他のオプションが影響するため、転送中にシンボリックリンクを残しません)。
- --copy-dirlinks
-
ディレクトリへのシンボリックリンクだけを実際のディレクトリに変更し、他のすべてのシンボリックリンクは以下に説明するように処理します。
- --links --copy-unsafe-links
-
すべての安全でないシンボリックリンクをファイルに変換し、すべての安全なシンボリックリンクを作成します。
- --copy-unsafe-links
-
すべての安全でないシンボリックリンクをファイルに変換し、すべての安全なシンボリックリンクを音を立ててスキップします。
- --links --safe-links
-
受信者は、転送時に見つかった安全でないシンボリックリンクの作成をスキップし、安全なシンボリックリンクを作成します。
- --links
-
すべてのシンボリックリンクを作成します。
--munge-links の効果については、そのオプションについての節にある説明を参照してください。
--keep-dirlinks
オプションは転送中のシンボリックリンクには影響しませんが、受信側にすでに存在するディレクトリへのシンボリックリンクを rsync
がどのように扱うかに影響することに注意してください。警告については、そのオプションに関する節を参照してください。
診断
Rsync は時折、少し謎めいているように見えるエラーメッセージを生成します。もっとも混乱を引き起こしそうなのは、"protocol version
mismatch--are your shell clean?" です。
このメッセージは通常、起動スクリプトまたはリモートシェル機能が、rsync
が転送に使用しているストリーム上に不要なガーベッジを生成することによって発生します。この問題を診断する方法は、次のようにリモートシェルを実行することです:
-
ssh remotehost /bin/true > out.dat
次に、out.dat を調べます。すべてが正常に動作している場合、out.dat は長さがゼロのファイルです。Rsync
が上記のエラーを発生した場合は、おそらくout.dat
にテキストまたはデータが含まれていることがわかります。内容を見て、何がそれを生み出しているのかを理解してください。最も一般的な原因は、非対話式ログインの出力ステートメントを含むシェル起動スクリプト
(.cshrc や .profile など) が正しく構成されていないことです。
フィルタパターンのデバッグに問題がある場合は、-vv オプションを指定してみてください。この冗長レベルでは、rsync
は個々のファイルが含まれたり除外されたりする理由を示します。
終了値
- o
-
0 - 成功
- o
-
1 - 構文エラーまたは使用方法のエラー
- o
-
2 - プロトコルの非互換性
- o
-
3 - 入力/出力ファイル、ディレクトリの選択中にエラーが発生しました
- o
-
-
- o
-
4 - 要求されたアクションはサポートされていません。あるいは:
64ビットファイルをサポートできないプラットフォーム上で 64ビットファイルを操作しようとしました
- o
-
サーバではなくクライアントでサポートされているオプションが指定されました。
- o
-
5 - クライアント/サーバプロトコルの開始エラー
- o
-
10 - ソケットI/Oエラー
- o
-
11 - ファイルI/Oエラー
- o
-
12 -rsyncプロトコルのデータストリームでエラーが発生した
- o
-
13 - プログラム診断エラー
- o
-
14 - IPCコードのエラー
- o
-
15 - 兄弟プロセスがクラッシュした (たとえば、コアダンプが発生した)。
- o
-
16 - 兄弟プロセスがシグナルによって強制終了された。
- o
-
19 - SIGUSR1を受信した。
- o
-
20 - SIGINT、SIGTERM、またはSIGHUPを受信した。
- o
-
21 - waitpid() によって返されたエラー
- o
-
22 - コアメモリバッファの割り当てエラー
- o
-
23 - エラーによる部分転送
- o
-
24 - 消失したソースファイルによる部分的な転送
- o
-
25 - The--max-delete limit により削除を停止。
- o
-
30 - データ送受信のタイムアウト
- o
-
35 - デーモン接続の待機がタイムアウト
環境変数
- CVSIGNORE
-
CVSIGNORE 環境変数は、.cvsignore ファイル内のすべての無視パターンを補完します。詳細については、--cvs-exclude
オプションを参照してください。
- RSYNC_ICONV
-
この環境変数を使用して、--iconv 設定の既定値を指定します。
- RSYNC_OLD_ARGS
-
--old-args オプションを既定に有効にする場合は "1" を指定し、繰り返しオプション状態で有効にする場合は "2" (またはそれ以上)
を指定し、既定値により無効にする場合は "0" を指定します。この環境変数を 0以外の値に設定すると、この環境変数が
RSYNC_PROTECT_ARGS 環境変数よりも優先されます。
-
コマンドラインで --old-args、 --no-old-args、または --secluded-args
が指定されている場合、この変数は無視されます。
-
3.2.4(2022年 4月) に初めてサポートされました。
- RSYNC_PROTECT_ARGS
-
既定で --secluded-args
オプションを有効にする場合は、ゼロ以外の数値を指定します。また、既定で無効にされるようにする場合は、ゼロを指定します。
-
コマンドラインで --secluded-args、--no-secluded-args、または --old-args
が指定されている場合、この変数は無視されます。
-
3.2.4 (2022年 4月)以降、RSYNC_OLD_ARGS が 0以外の値に設定されている場合、この変数は無視されます。
- RSYNC_RSH
-
この環境変数を使用すると、rsync の転送用として使用される既定のシェルを上書きできます。コマンドラインオプションは、--rsh (-e)
オプションと同様に、コマンド名の後に指定できます。
- RSYNC_PROXY
-
この環境変数を使用すると、rsync デーモンに接続するときに Web プロキシを使用するようにrsync
クライアントをリダイレクトできます。RSYNC_PROXY を、ホスト名:ポートのペアに設定する必要があります。
- RSYNC_PASSWORD
-
この環境変数を使用すると、rsync daemon
接続のパスワードを設定できます。これにより、パスワードプロンプトが表示されなくなります。これは、 ssh
のようなリモートのシェルトランスポートのパスワードを提供しないことに注意してください (その方法については、そのドキュメントを参照してください)。
- USER or LOGNAME
-
USER または LOGNAME 環境変数は、rsync
デーモンに送信される既定のユーザ名を決定するために使用されます。どちらも設定されていない場合、ユーザ名既定値は "nobody"
になります。両方が設定されている場合は、USER が優先されます。
- RSYNC_PARTIAL_DIR
-
この環境変数は、部分転送を有効にしない--partial 転送に使用するディレクトリを指定します。詳細については、--partial-dir
オプションを参照してください。
- RSYNC_COMPRESS_LIST
-
この環境変数を使用すると、代替の順序または名前の縮小リストを指定して、圧縮アルゴリズムのネゴシエーションをカスタマイズできます。使用可能な圧縮名を表示するには、コマンドrsync --version を使用します。詳細については、--compress オプションを参照してください。
- RSYNC_CHECKSUM_LIST
-
この環境変数を使用すると、別の順序または名前の縮小リストを指定して、チェックサムアルゴリズムのネゴシエーションをカスタマイズできます。使用可能なチェックサム名を表示するには、コマンド
rsync --version を使用します。詳細については、--checksum-choice オプションを参照してください。
- RSYNC_MAX_ALLOC
-
この環境変数は、--max-alloc オプションを使用した場合と同様に、割り当ての最大値を設定します。
- RSYNC_PORT
-
この環境変数は rsync によって読み込まれないが、代わりに、rsync
がデーモン接続と組み合わせてリモートシェルを実行しているときに、そのサブ環境内で設定されます。これにより、rsync-ssl
のようなスクリプトは、ユーザがコマンド行で指定したポート番号を知ることができます。
- HOME
-
この環境変数は、ユーザの既定 .cvsignore ファイルを検索するために使用されます。
- RSYNC_CONNECT_PROG
-
この環境変数は主にデバッグセットアップで使用され、デーモン接続を行うときに使用するプログラムを設定します。詳細は RSYNCデーモンへの接続
節を見てください。
- RSYNC_SHELL
-
この環境変数は、主にデバッグ設定で使用され、RSYNC_CONNECT_PROG
で指定されたプログラムを実行するために使用するプログラムを設定します。詳細は RSYNCデーモンへの接続 節を見てください。
ファイル
/etc/rsyncd.conf or rsyncd.conf
関連項目
rsync-ssl(1), rsyncd.conf(5), rrsync(1)
バグ
- o
-
時刻は、*nix time_t 値として転送されます。
- o
-
FAT ファイルシステムに転送する場合、rsync は変更されていないファイルを再同期することがあります。--modify-window
オプションのコメントを参照してください。
- o
-
ファイルのアクセス権やデバイスなどは、ネイティブの数値として転送されます。
- o
-
--delete オプションに関するコメントも参照してください。
バグを報告してください! 詳細については、Web サイト
https://rsync.samba.org/
を参照してください。
バージョン
このマニュアルページは、バージョン 3.5.1 の rsync に対応しています。
内部オプション
オプション --server と --sender は rsync
によって内部的に使用されます。通常の状況では、ユーザが入力すべきではありません。Rsync
コマンドのみを実行できるログインを設定する場合など、特定のシナリオでは、これらのオプションについてある程度の認識が必要になる場合があります。たとえば、rsync
配布物内の support ディレクトリには、制限された ssh ログインで使用できる rrsync (制限付き rsync)
という名前のサンプルスクリプトがあります。
著作権
Rsync は、GNU 一般公衆利用許諾契約書に基づいて配布されます。詳細は、COPYING ファイルを参照してください。
Rsync の Webサイトは、次の URL で参照できます。
https://rsync.samba.org/
。このサイトには FAQ-O-Matic があり、このマニュアル・ページで回答されていない問題が取り上げられている場合があります。
rsync github プロジェクトは以下の通りです:
https://github.com/RsyncProject/rsync
。
このプログラムを気に入っていただけましたら、ぜひご連絡をお待ちしております。メーリングリスト
rsync@lists.samba.org
。
このプログラムは、Jean-loup Gailly とMark Adler によって書かれた優れた zlib 圧縮ライブラリを使用します。
謝辞
John Van Essen、Matt McCutchen、Wesley W. Terpstra、David Dykstra、Jos
Backus、Sebastian Krahmer、Martin Poo氏、そして、私たちの亡くなったが忘れられていない仲間、J.W
に特別に感謝します。Schultz.
Richard Brent,、 Brendan Mackay,、Bill Waite、Stephen Rothwell、David Bell
にも感謝します。私はおそらく何人かの人を見逃したことがあります。もし私が見逃していたら申し訳ありません。
著者
Rsync はもともとAndrew Tridgel lと Paul
Mackerasによって書かれました。世界中から多くの人々がその維持と改善に協力してきました。
2004年から 2024年まで rsync をメンテナンスしてくれた Wayne Davison に特別に感謝します。
サポートおよび開発に関するメーリング・リストは、次のURLでご利用いただけます
https://lists.samba.org/
。
Index
- 名前
-
- 書式
-
- 説明
-
- 概要
-
- セットアップ
-
- 使用方法
-
- 別の名前へのコピー
-
- 整列された転送順序
-
- セキュリティ
-
- 認証および暗号化された転送方法の使用
-
- 信頼できない送信ホストからのコピー
-
- 大文字小文字を保持するファイルシステムと区別しないファイルシステム間でのコピー
-
- シンボリックリンク
-
- 強力なチェックサムの使用
-
- プロトコルのバージョン
-
- 高度な使用方法
-
- RSYNCデーモンへの接続
-
- リモートシェル接続での RSYNC デーモン機能の使用
-
- 接続を受け付けるための RSYNC デーモンの起動
-
- 例
-
- オプションの概要
-
- オプション
-
- デーモンオプション
-
- フィルタルール
-
- 単純なINCLUDE/EXCLUDEルール
-
- 単純なINCLUDE/EXCLUDEの例
-
- 削除時のフィルタルール
-
- フィルタルールの詳細
-
- パターン・マッチング・ルール
-
- フィルタールール修飾子
-
- マージファイルのフィルタ規則
-
- リスト-クリヤ フィルタルール
-
- INCLUDE/EXCLUDEパターンのアンカー
-
- ディレクトリごとのルールと削除
-
- 転送ルール
-
- バッチモード
-
- シンボリックリンク
-
- 診断
-
- 終了値
-
- 環境変数
-
- ファイル
-
- 関連項目
-
- バグ
-
- バージョン
-
- 内部オプション
-
- 著作権
-
- 謝辞
-
- 著者
-
This document was created by
man2html,
using the manual pages.