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

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

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

내 말은: 스왑 작업을 on 에 두고 파일이 aon the device Abon the device 에 있으면 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의 크기가 다른 경우 몇 가지 확인이 필요합니다.

관련 정보