同じファイルシステムにある2つのフォルダをどのようにマージする必要がありますか?

同じファイルシステムにある2つのフォルダをどのようにマージする必要がありますか?

以下のように2つのディレクトリがありますが、より多くのファイルが含まれています。

folder1/pic1.png
folder1/test/readme.txt

folder2/guest.html
folder2/backup/notes.txt

私はこれら2つを「マージ」して、フォルダ2のすべての内容がフォルダ1に入り、フォルダ2が削除されるようにしたいと思います。同じファイルシステムとディスク(ext4)にあります。すべてのファイルが一意であることを知っています。ここでmvは正常に動作しますか?

答え1

うん、mvここで働く

$ mv -i folder2/* folder1/

-iセキュリティを強化するには、このフラグを参照してください。

答え2

これには「rsync」コマンドが便利です。私は次のことをしました:

rsync -PHACcviuma --copy-unsafe-links --exclude="*~"  folder2/  folder1/  &&  rm -fr folder2

すべてのフラグはrsyncのマニュアルページに文書化されています。デフォルトでは、rsyncは新しいファイルを古いファイルに置き換えず、コピー先に重複したファイルをコピーしません。それ以外の場合は、コンテンツをコピーして元のメタデータ(タイムスタンプ、権限など)を保存します。

rsyncプログラムには、「隠しファイル」(「.」で始まる名前)、バックアップ(「〜」で終わるなど)も含まれているため、--excludeオプションを使用して興味深いものではない特定のファイルパターンをスキップします。

関連情報