%ED%95%A9%EB%8B%88%EB%8B%A4..png)
각각 1GB 용량의 두 개의 플래시 메모리 장치가 있다고 가정해 보겠습니다. 또한 각 장치에 최대 1GB 크기의 하나의 큰 파일이 포함되어 있다고 가정해 보겠습니다. RAM이 제한되어 있고(64MB) 하드 디스크 드라이브가 없다고 가정하면,이 두 파일을 바꾸는 가장 짧은 방법은 무엇입니까?
내 말은, 파일이 a
device 에 있고 A
device b
에 있는 경우 스왑 작업을 계속 해서 수행 하고 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의 크기가 다른 경우 몇 가지 확인이 필요합니다.