異なるファイルのみを変更して、(大きな)ディレクトリを別のディレクトリにコピーするにはどうすればよいでしょうか?

異なるファイルのみを変更して、(大きな)ディレクトリを別のディレクトリにコピーするにはどうすればよいでしょうか?

ディレクトリ a とディレクトリ b があります。これらは大きいです。b は a とほとんど同じです。「ほとんど」とは、4 ~ 5 個のファイルが異なることを意味し、どのファイルが異なっているかはわかりません。異なるファイルのみを a にコピーしたいのですが、b をコピーしたいのですが、bash を使用しています。

(いいえ、a を削除して b に置き換えるだけではだめです。1) a はバージョン管理されており、2) 完全なコピー (または mv) には時間がかかりすぎるからです。異なるファイルのみをコピーしたいのです。

答え1

rsyncこれを実行するには、私が使用するコマンドを使用します。rsync -tr "folder to copy from" "folder to copy to"

例えばrsync -tr /home/me/stuff/* /home/me/otherstuff/

答え2

古き良き方法でこれを行うことも可能ですcp:

を使用するように思い出させてくれた srcspider に感謝します-T

cp -ruT old-dir new-dir

答え3

もう一つの良い選択肢はユニゾン(http://www.cis.upenn.edu/~bcpierce/unison/)、特に「ソース」と「宛先」が実際には存在しない場合は、Unison は同期を実行できません。各ディレクトリはルートであり、Unison はそれらを同期し、将来の同期のためにメタデータを保持します。コマンドラインと GUI オプションの両方が提供されており、cron 経由で簡単にスケジュールすることもできます。

私はこれを使用して、Dropbox クライアントを実行できないローカル NAS アプライアンスに Dropbox のバックアップを作成します。

答え4

2 つのディレクトリを比較することができます。

diff -r dir1 dir2

異なるファイルのリストが表示されます

関連情報