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

Sco*_*ony 7 utilities files

假设我有两个闪存设备,每个容量为 1GB。假设每个设备都包含一个大约 1GB 大小的大文件。假设我的内存有限(64MB)并且没有硬盘驱动器,那么交换这两个文件的最短方法是什么?

我的意思是:如果文件a是对设备Ab是在设备B,我想交换操作,以地方aBbA

我知道根据这个讨论,没有确切的 linux 工具可以做到这一点

我对实现目标的最短方法感兴趣。如果这种方式太长,我可能将不得不实施我自己的专用解决方案,该解决方案将逐块执行交换,对吗?

Bla*_*adt 2

只要两个驱动器都已满或几乎已满,我怀疑是否有一个很好的解决方案。不过,应该可以循环 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
Run Code Online (Sandbox Code Playgroud)

当 fileA 和 fileB 具有不同大小时,需要进行一些检查。