
假設我有兩個閃存設備,每個容量為 1GB。假設每個裝置都包含一個大檔案 ~ 1GB 大小。假設我的 RAM 有限(64MB)並且沒有硬碟驅動器,交換這兩份文件的最短方法是什麼?
我的意思是:如果文件a
位於設備上A
並且b
位於設備上B
,我希望交換操作放置a
在B
和b
上A
。
我知道沒有確切的 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 具有不同大小時,需要進行一些檢查。