以下のように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オプションを使用して興味深いものではない特定のファイルパターンをスキップします。