出力を理解しようとしていますrsync -n --update -av dir1/ dir2/
。ここには、dir2
存在しないか最新のファイルだけでなく、すべてのディレクトリをリストする必要があると聞きましたdir1
。テストディレクトリでこれを試しました。
test
test/testDir1
test/testDir1/testDir11
test/testDir1/testDir11/testFile3.txt
test/testDir1/testFile2.txt
test/testFile1.txt
test/testDir2
にコピーしてtestCopy
変更してtest/testDir1/testFile2.txt
実行すると、rsync -n --update -av test/ testCopy/
出力は次のようになります。
./
testDir1/
testDir1/testFile2.txt
testDir1/testDir11/
testDir2/
出力がどのように機能するかは、内容に基づいてこれが私が期待するものです。
しかし、、他のより大きな物理ディレクトリのペアに対して同じコマンドを試しましたが、非常に異なる動作を得ました。以下は、同期する必要があるディレクトリペアの2つの例です。
./
場合によっては、ディレクトリ620とファイルが多いが出力は。リストされたファイルはありません。一方、いくつかの(7/72)ディレクトリがリストされています。リストされたファイルはありません。
この出力が私に何を示しているのか理解できませんか?
ベストアンサー1
指摘できる明確な文書はありませんが、これが起こっていると思います。
を使用すると、-v|--verbose
転送するファイル(-n|--dry-run
指定した場合は転送するファイル)が一覧表示されます。ディレクトリは Unix 系オペレーティング・システムの単純なファイルであり、同じ規則に従ってリストされます。
では、ディレクトリはいつ移行されますか? (明らかにターゲットに存在しない場合を除き)これを指定すると仮定すると-t|--times
(暗黙的に-a
)タイムスタンプが変更されたときに送信されます。プロパティが変更されると、同様のルールが適用されます。
ディレクトリのタイムスタンプはいつ変更されますか?観察によると、これは(少なくとも)ファイルが単に属性(時間など)を変更するのではなく、ディレクトリ内のファイルが作成されたり名前が変更されたりすることです。
したがって、touch
で新しいファイルを作成するtestDir11
と、testDir11
タイムスタンプが変更され、転送が可能になります。ただし、既存のファイルが存在する場合、touch
ディレクトリは変更されません。