一致するフォルダ名をスキップして2つのディレクトリの内容をマージする方法は?

一致するフォルダ名をスキップして2つのディレクトリの内容をマージする方法は?

次の内容を含むポータブルディスクがあります。

/media/usb1/CBCradio3/1.wav
/media/usb1/CBCradio3/2.wav
/media/usb1/CBCradio3/3.wav
/media/usb1/CBCradio3/4.wav
/media/usb1/podcasts/1.wav
/media/usb1/podcasts/2.wav
/media/usb1/podcasts/3.wav

次の内容を含むハードドライブもあります。

/home/user/Music/CBCradio3/2.wav
/home/user/Music/CBCradio3/3.wav
/home/user/Music/radio12/1.wav
/home/user/Music/radio12/2.wav

データをコピーしたいのですが、中にフォルダ名が/Music/既に存在する場合は無視してください。

つまり、フォルダに混在したデータが含まれたくありません。通常のコピーを使用してドライブをコピーすると、次の結果が得られます。

/home/user/Music/CBCradio3/1.wav <--added to folder
/home/user/Music/CBCradio3/2.wav
/home/user/Music/CBCradio3/3.wav
/home/user/Music/CBCradio3/4.wav <--added to folder
/home/user/Music/podcasts/1.wav <--added whole folder
/home/user/Music/podcasts/2.wav <--added whole folder
/home/user/Music/podcasts/3.wav <--added whole folder
/home/user/Music/radio12/1.wav
/home/user/Music/radio12/2.wav

しかし、コンテンツをマージしたくありません。フォルダがある場合は、コンテンツのコピーをスキップする必要があります。この目標をどのように達成できますか?

  • コピーしようとしましたが、フォルダの内容がマージされましたmcthunar
  • 次のディレクトリには.../usb1/追加のサブディレクトリは含まれていません。

答え1

あなたの説明によると、これは再帰的な問題ではありません。fooソースとターゲットの両方に存在する場合、fooストーリーの終わりにはコピーされません。したがって、単純なシェルループでこの問題を解決できます。

source=/media/usb1
destination=/home/user/Music
test -d "$destination" || mkdir -- "$destination"
for x in "$source"/*; do
  if ! [ -e "$destination/$x" ]; then
    cp -Rdp "$x" "$destination/"
  fi
done

(ただし、この要件には問題があります。たとえば、レプリケーションが中断されると、ターゲットの一部のディレクトリだけが残り、回復する方法がないか、回復する必要がある項目を知ることもできません。)

答え2

一部のファイルをコピー(またはコピーしない)する前に、一部のファイルを選択/選択解除するために確認する必要がある場合は、rsyncまたは他のツールを使用するのがそれほど便利ではありません。

したがって、両方のディレクトリを表示し、内容を比較して「同期」できるテキストコンソール「グラフ」ツールを使用できます。

たとえば、https://en.wikipedia.org/wiki/Double_Commander

これには、試してみる機能を含む多くの機能があります。

ディレクトリ比較:ディレクトリ(全体または選択したディレクトリのみ)を対称(双方向)および非対称(一方向)に比較して同期できます。この機能は、ディレクトリとサブディレクトリによる2つの場所の違いを示し、追加、変更、または削除されたファイルを完全に自動的にバックアップできます。

プレーンテキスト(ターミナル内)インターフェイスとしてのバリエーションは古くなりましたが、今年まで更新され続けます。MC、また〜として知られるhttps://en.wikipedia.org/wiki/Midnight_Commander。これhttps://en.wikipedia.org/wiki/Comparison_of_file_managers大丈夫と表示されます。今すぐディレクトリを同期します。キーを押すだけで簡単に移動できるので、試してみることをお勧めします。

もちろん、これらのツールを使用すると、次の比較が新しくなるため、後で中断して再起動するのは非常に簡単です。

関連情報