これにより、フォルダ A がフォルダ B に配置されます:
rsync -avu --delete "/home/user/A" "/home/user/B"
フォルダ A と B の内容が必要な場合 同じにするために、08
を入れます (スラッシュ付き) ソースとして。これは、フォルダ A ではなく、そのすべてのコンテンツを取得して、フォルダ B に入れます。次のように:
rsync -avu --delete "/home/user/A/" "/home/user/B"
15
すべてのファイルシステム属性を保持して同期を行う24
詳細に実行32
変更時刻が新しい (または時刻が同じ場合はサイズが異なる) ファイルのみをコピーします49
ソースに存在しないターゲット フォルダー内のファイルを削除します
マンページ:https://download.samba.org/pub/rsync/rsync.html
55
できます U Penn の Benjamin Pierce によって開発されたツール。
2 つのディレクトリがあるとします。
69
と 71
これら 2 つを同期するには、次を使用できます。
~$84
出力では、91
異なるすべてのディレクトリとファイルを表示します 同期するように要求した 2 つのディレクトリにあります。最初の実行で加算同期 (両方の場所で不足しているファイルを複製する) を推奨し、次にマシンで同期ツリーを作成して維持します。その後の実行では、真の同期を実装します (つまり、104
、 111
から削除されます 同じように。また、すべての変更を比較し、オプションで 転送 を選択することもできます または逆 2 つのディレクトリ間で同期します。
必要に応じて、グラフィカル インターフェイスを起動するには、単に 122
を削除します コマンドのオプションですが、137
が見つかりました より簡単かつ迅速に使用できます。
詳細:Unison ユーザー ドキュメントの Unison チュートリアル。
TuxForLife からの回答はかなり良いですが、 145
を使用することを強くお勧めします ローカルで同期する場合。リモート同期のためにそれを行うのは時間/ネットワークのペナルティに値しないと主張することができますが、速度が非常に優れているため、ローカルファイルには完全に価値があります.
-c, --checksum This forces the sender to checksum every regular file using a 128-bit MD4 checksum. It does this during the initial file-system scan as it builds the list of all available files. The receiver then checksums its version of each file (if it exists and it has the same size as its sender-side counterpart) in order to decide which files need to be updated: files with either a changed size or a changed checksum are selected for transfer. Since this whole-file checksumming of all files on both sides of the con- nection occurs in addition to the automatic checksum verifications that occur during a file's transfer, this option can be quite slow. Note that rsync always verifies that each transferred file was correctly reconstructed on the receiving side by checking its whole-file checksum, but that automatic after-the-transfer verification has nothing to do with this option's before-the-transfer "Does this file need to be updated?" check.
これは、同じサイズとタイム スタンプを使用すると失敗する可能性があることを示しています。
セットアップ
$ cd /tmp
$ mkdir -p {A,b}/1/2/{3,4}
$ echo "\___________from A" | \
tee A/1/2/x | tee A/1/2/3/y | tee A/1/2/4/z | \
tr A b | \
tee b/1/2/x | tee b/1/2/3/y | tee b/1/2/4/z | \
tee b/1/2/x0 | tee b/1/2/3/y0 > b/1/2/4/z0
$ find A b -type f | xargs -I% sh -c "echo %; cat %;"
A/1/2/3/y
\___________from A
A/1/2/4/z
\___________from A
A/1/2/x
\___________from A
b/1/2/3/y
\___________from b
b/1/2/3/y0
\___________from b
b/1/2/4/z
\___________from b
b/1/2/4/z0
\___________from b
b/1/2/x
\___________from b
b/1/2/x0
\___________from b
すべてのファイルのサイズとタイムスタンプが同じであるため、何もコピーしない rsync
$ rsync -avu A/ b
building file list ... done
sent 138 bytes received 20 bytes 316.00 bytes/sec
total size is 57 speedup is 0.36
$ find A b -type f | xargs -I% sh -c "echo %; cat %;"
A/1/2/3/y
\___________from A
A/1/2/4/z
\___________from A
A/1/2/x
\___________from A
b/1/2/3/y
\___________from b
b/1/2/3/y0
\___________from b
b/1/2/4/z
\___________from b
b/1/2/4/z0
\___________from b
b/1/2/x
\___________from b
b/1/2/x0
\___________from b
チェックサムを比較するため、正しく機能する rsync
$ rsync -cavu A/ b
building file list ... done
1/2/x
1/2/3/y
1/2/4/z
sent 381 bytes received 86 bytes 934.00 bytes/sec
total size is 57 speedup is 0.12
$ find A b -type f | xargs -I% sh -c "echo %; cat %;"
A/1/2/3/y
\___________from A
A/1/2/4/z
\___________from A
A/1/2/x
\___________from A
b/1/2/3/y
\___________from A
b/1/2/3/y0
\___________from b
b/1/2/4/z
\___________from A
b/1/2/4/z0
\___________from b
b/1/2/x
\___________from A
b/1/2/x0
\___________from b