각각 1GB 용량을 가진 두 개의 플래시 장치가 있다고 가정해 보겠습니다. 각 장치에 최대 1GB 크기의 대용량 파일이 포함되어 있다고 가정합니다. RAM(64MB)이 제한되어 있고 하드 드라이브가 없다고 가정하면,이 두 파일을 교환하는 가장 짧은 방법은 무엇입니까?
내 말은: 스왑 작업을 on 에 두고 파일이 a
on the device A
및 b
on the device 에 있으면 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의 크기가 다른 경우 몇 가지 확인이 필요합니다.