在有限环境下交换(交换)两个大文件

在有限环境下交换(交换)两个大文件

假设我有两个闪存设备,每个容量为 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 具有不同大小时,需要进行一些检查。

相关内容