rsync:--files-from = FILEを使用するときに--archiveが--recursiveを意味しないのはなぜですか?

rsync:--files-from = FILEを使用するときに--archiveが--recursiveを意味しないのはなぜですか?

-rまたはを使用すると、ディレクトリに再帰が--recursive発生します。またはと同じことを意味します。rsync-a--archive-rlptgoD-a-r

ディレクトリがあり、source/dest/を実行する場合:

rsync source dest

その後、何もrsyncスキップしてコピーsource/しないでください。私が実行した場合:

rsync -a source dest

次に、すべての内容を-aヒントしてコピーします。-rrsyncsource/dest/

list.txtただし、その行を含むファイルがあり、source私のディレクトリへのフルパスがある場合は、source/次のよう/home/user/source/に実行します。

rsync -a --files-from=list.txt /home/user/ dest

その後、コンテンツのみをrsyncコピーしsource/dest/コンテンツはコピーしません。オプションなしでコマンドを実行しても同じことが起こります-a

ただし、同じコマンドを実行すると、次のようになります-r

rsync -r --files-from=list.txt /home/user/ dest

次に、rsyncすべてのコンテンツを。source/dest/

私の質問は次のとおりです

  • このオプションをいつ使用する必要があるかについて-aヒントを与えませんか?これが予想される動作ですか?-r--files-from=FILE
  • このコマンドはディレクトリであり、使用または使用されていないため、何もスキップしてコピーしないことrsync source destsource/考えると、コマンドがまだにコピーされるのはなぜですか?source/-a-rrsync --files-from=list.txt /home/user/ destsource/dest/
  • このオプションを使用するときに-a暗示されている他のオプションはまだ有効ですか?--files-from=FILE残りの-r唯一のオプションですか?

編集する:manページをもう少し注意深く読んでみてください。オプションの説明 以下に、次のように--files-from=FILE示します。

--archive(-a) オプションの動作は --recursive(-r) を意味しないため、必要に応じて明示的に指定します。

(私の最初の質問に答えます。)

--dirs(-d) オプションが暗示されています。このオプションは、ターゲットリストを大幅にスキップするのではなく、ターゲットリストに指定されたディレクトリを作成します(このオプションをオフにするには、--no-dirsまたは--no-dを使用します)。

(2番目の質問に答えます。)

ベストアンサー1

-a--archive

これはと同じです-rlptgoD。これは、再帰的でほぼすべてを保存したいことを表現する簡単な方法です(-H 1つの重要な省略を使用)。 上記の同等性に対する唯一の例外は--files-from、それが指定されたときです。この場合、それは暗黙的ではあり-r ません。

再帰を使用すると--files-from無効になります(このオプションは欠落している唯一のオプションです)。ユーザーは、転送したい特定のファイルが何であるかを正確に知っており、で使用されているファイルのリストにそのファイルを指定したとします--files-from

ファイルリストにディレクトリが指定されている場合、そのディレクトリの所有権、タイムスタンプなどは同期されますが、内容は同期されません。

-rただし、次のようにフラグを明示的に追加できます。

rsync -av --files-from=file.list -r src/ dst/

これにより、目的の効果が表示されます。

おすすめ記事