限られた環境で2つの大容量ファイルを交換(交換)します。

限られた環境で2つの大容量ファイルを交換(交換)します。

それぞれ1GBの容量を持つ2つのフラッシュデバイスがあるとします。各デバイスに最大 1 GB のサイズの大容量ファイルが含まれているとします。 RAM(64MB)が制限されており、ハードドライブがないと仮定すると、これら2つのファイルを交換する最も短い方法は何ですか?

私の言うことは:スワップ操作をonに置き、ファイルがaon the deviceAbon the deviceにあることをB望むということです。aBbA

私はこれを行うための正確なLinuxツールがないことを知っています。この議論

私は目標を達成するための最短の方法に興味があります。この方法が長すぎる場合は、ブロックごとにスワップを実行するために独自の専用ソリューションを実装する必要があるかもしれません。

答え1

両方のドライブがいっぱいであるか、ほぼいっぱいである限り、良い解決策があるかどうか疑問です。ただし、ddコマンドを繰り返すことは可能です。それはまるで

#This code is completely untested, 
#do NOT just copy paste and use it without proper testing
while [[ $((i*chunkSize)) -lt fileSize ]]; do
  dd skip=$i seek=$i bs=$chunkSize count=1 if=fileA of=tmpFileInMemory
  dd skip=$i seek=$i bs=$chunkSize count=1 if=fileB of=FileA
  dd skip=$i seek=$i bs=$chunkSize count=1 if=tmpFileInMemory of=fileB
done

fileAとfileBのサイズが異なる場合は、いくつかの確認が必要です。

関連情報