%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%B6%94%EC%B6%9C%ED%95%A9%EB%8B%88%EB%8B%A4.%20%EB%A9%94%EB%AA%A8%EB%A6%AC%2F%EB%94%94%EC%8A%A4%ED%81%AC%20%EC%82%AC%EC%9A%A9%EB%9F%89%EC%9D%B4%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
에서 단일 파일을 추출할 수 있는 것으로 알고 있습니다 tar
.
tar -xf file.tar.gz /small/single/file
디스크/램이 제한된 임베디드 시스템에서 이것을 실행하려고 합니다. 이 명령이 대형 타르볼을 어떻게 처리하는지 알고 싶습니다.
단일 파일을 추출하면 전체 타르볼이 메모리로 압축 해제됩니까? 압축을 모두 풀어도 괜찮지만, 작은 버퍼를 사용하면 압축이 풀립니다.
사용 가능한 RAM이 100MB이고 사용 가능한 디스크 공간이 5MB라고 가정해 보겠습니다. 또한 /small/single/file
5MB 미만입니다. 또한 소스 타르볼은 500MB입니다. 안전하게 추출할 수 있나요 /small/single/file
?
답변1
대답은 아마도 사용 중인 구현에 따라 다르지만 tar
현실적으로 대부분의 구현에서는 상대적으로 작은 버퍼를 사용하여 타르볼을 처리할 것으로 예상합니다. tar
2GiB 압축 타르볼에서 GNU를 사용하여 bzip2
단일 파일을 추출하려면 다음과 같은 결과를 얻습니다.
64.07user 4.84system 2:53.45elapsed 97%CPU (0avgtext+0avgdata 4664maxresident)k
4046976inputs+8outputs (0major+1194minor)pagefaults 0swaps
(GNU 사용 time
). 보시다시피 최대 상주 크기는 5MiB 미만입니다.
답변2
RAM/디스크 사용량을 최소화하려면 다음과 같은 파이프를 사용하는 것이 좋습니다.
gzip -dc file.tar.gz| tar -f - /small/single/file