設定

設定

WindowsからLinuxに移行した後、Winmergeの代替案を見つけたり、Linux上の2つのフォルダを比較して同期したりするコマンドラインツールを学びたいと思いました。コマンドラインで次のタスクを実行する方法を教えてください。

「/home/user/A」と「/home/user/B」という2つのフォルダがあります。

フォルダAは通常のファイルとフォルダが保存される場所、フォルダBはフォルダAの完全なミラーとして機能するバックアップフォルダです。 (ユーザーはフォルダBに何も直接保存または変更することはできません。)

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

  • フォルダBにのみ存在するファイルを一覧表示するには? (たとえば、最後の同期以降にフォルダAから削除されたコンテンツです。)

  • Bフォルダにのみ存在するファイルをAフォルダにコピーするにはどうすればよいですか?

  • 2つのフォルダにあるがタイムスタンプやサイズが異なるファイルを一覧表示する方法は? (最後の同期以降にフォルダAで修正されたファイルです。数万のファイルがあり、プロセスが遅すぎる可能性があるため、チェックサムを使用しないことをお勧めします。)

  • フォルダAをフォルダBに正確にコピーするには?私は、フォルダAにのみ存在するフォルダBのすべてのアイテムをフォルダAにコピーし、フォルダBにのみ存在するフォルダBのすべてのアイテムを削除しますが、フォルダ内の同じファイルにすべて触れないことです。

ベストアンサー1

これにより、フォルダ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

おすすめ記事