WindowsからLinuxに移行したので、Winmergeの代替ソフトウェアを見つけるか、Linux上の2つのフォルダーを比較および同期するためのコマンドラインツールを学びたいと思います。コマンドラインで次のタスクを実行する方法を教えていただければ幸いです…(diffとrsyncについては勉強しましたが、まだ助けが必要です。)
「/home/ user/A」と「/home/ user/B」の2つのフォルダがあります
フォルダAは通常のファイルとフォルダが保存される場所であり、フォルダBはフォルダAの完全なミラーとして機能するバックアップフォルダです(フォルダBにユーザーが直接保存または変更するものはありません)。
私の質問は次のとおりです:
-
フォルダBにのみ存在するファイルを一覧表示するにはどうすればよいですか? (例:最後の同期以降にフォルダーAから削除されたもの)
-
フォルダBのみに存在するファイルをフォルダAにコピーして戻す方法は?
-
両方のフォルダに存在するが、タイムスタンプまたはサイズが異なるファイルを一覧表示するにはどうすればよいですか? (前回の同期以降にフォルダーAで変更されたもの。何万ものファイルがあり、プロセスが遅くなりすぎるため、チェックサムの使用は避けたいと思います。)
-
フォルダAの正確なコピーをフォルダBに作成するにはどうすればよいですか?つまり、フォルダAからフォルダAにのみ存在するフォルダBにすべてをコピーし、フォルダBにのみ存在するフォルダBからすべてを削除しますが、両方のフォルダで同じファイルには触れません。
承認された回答:
これにより、フォルダAがフォルダBに配置されます:
rsync -avu --delete "/home/user/A" "/home/user/B"
フォルダAとBのコンテンツが必要な場合 同じように、/home/user/A/
を入力します (スラッシュ付き)ソースとして。これにより、フォルダAではなく、すべてのコンテンツが取得され、フォルダBに配置されます。次のようになります。
rsync -avu --delete "/home/user/A/" "/home/user/B"
-
-a
すべてのファイルシステム属性を保持して同期を実行します -
-v
冗長に実行する -
-u
変更時刻が新しいファイル(または変更時刻が等しい場合はサイズの違い)のみをコピーします --delete
ソースに存在しないターゲットフォルダ内のファイルを削除します
マンページ:https://download.samba.org/pub/rsync/rsync.html