私はbashにあまり堪能ではありません...私がやりたいのは、DVD-Rのコンテンツを2つの異なるハードドライブに可能な限り最速の方法でコピーすることです。
(UIベースのソリューションも大歓迎です)
ありがとう!
ボトルネックはDVDドライブからの読み取りである可能性が高いため、データを1回だけ読み取るか、2回読み取る必要がありますが、データがキャッシュに残っているほど十分に近い間隔で読み取る必要があります。後者は難しいように聞こえるので、最初に行きましょう。
デュプリケーターをどこかに置く必要があります。基本的なシェルコマンドに限定する場合、唯一の選択肢はtee
です。したがって、入力(ファイルのツリー)をストリームに変換し、そのストリームをtee
にフィードして、各出力ストリームをファイルのツリーに戻す必要があります。それを行うツールはアーカイバです。メモリに残っているものの圧縮は無駄なので、tar
を使用してみましょう。
パイプ(command0 | command1
)を使用すると、コマンドの出力を他の1つのコマンドにフィードできます。 tee
の出力をtwo他のコマンドにフィードする必要があるため、別のbash構成が便利です:command1 >(command2)
は、パイプとしてcommand1
に渡されるパイプを作成しますcommand2
の標準出力になるのではなく、最初のコマンド。 (bashのマニュアルでプロセス置換を調べてください。)
ここにコマンドがあります(テストされていません):
mkdir /media/disk0/copy_of_dvd /media/disk1/copy_of_dvd
cd /media/cdrom
tar cf - . | tee >(tar xf - -C /media/disk0/copy_of_dvd) | tar xf - -C /media/disk1/copy_of_dvd
シェルベースのソリューションの1つは、ターミナルを開いて次のように入力することです。
cp -r /location/of/DVD /hard/drive/a &
cp -r /location/of/DVD /hard/drive/b
コマンドcp
はファイルのコピーと-r
スイッチは、すべてのファイルを再帰的にコピーします。 DVDが置かれているディレクトリを入力する必要があります(通常は/media/dvd
または同様)、次にハードドライブのファイルを配置する場所(つまり、/home/diego/mydvd
)。 &
は最初のプロセスをバックグラウンドに送信し、すぐに2番目のコマンドを入力して実行できます。
Li Loのqbiの回答に対するコメントで述べたように、光学ドライブ(CD、DVDなど)は最も遅い種類のドライブであるため、DVDドライブから行う読み取りの量を最小限に抑える必要があります。明白な解決策は、データをDVDからハードドライブの1つの場所にコピーしてから、その場所から別のハードドライブにコピーすることです。
cp -r /media/cdrom /location1
cp -r /location1 /location2