在有限環境下交換(交換)兩個大文件

在有限環境下交換(交換)兩個大文件

假設我有兩個閃存設備,每個容量為 1GB。假設每個裝置都包含一個大檔案 ~ 1GB 大小。假設我的 RAM 有限(64MB)並且沒有硬碟驅動器,交換這兩份文件的最短方法是什麼?

我的意思是:如果文件a位於設備上A並且b位於設備上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 具有不同大小時,需要進行一些檢查。

相關內容