제한된 환경에서 두 개의 큰 파일을 교환(교환)합니다.

제한된 환경에서 두 개의 큰 파일을 교환(교환)합니다.

각각 1GB 용량의 두 개의 플래시 메모리 장치가 있다고 가정해 보겠습니다. 또한 각 장치에 최대 1GB 크기의 하나의 큰 파일이 포함되어 있다고 가정해 보겠습니다. RAM이 제한되어 있고(64MB) 하드 디스크 드라이브가 없다고 가정하면,이 두 파일을 바꾸는 가장 짧은 방법은 무엇입니까?

내 말은, 파일이 adevice 에 있고 Adevice 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의 크기가 다른 경우 몇 가지 확인이 필요합니다.

관련 정보