로 시작할 수 있다는 것을 알고 있습니다 tar
.
tar -xf file.tar.gz /small/single/file
디스크/메모리가 제한된 임베디드 시스템에서 이것을 실행할 계획입니다. 이 명령이 대형 타르볼을 어떻게 처리하는지 알고 싶습니다.
단일 파일을 추출하면 전체 타르볼이 메모리에 압축 해제됩니까? 버퍼가 더 작다면 모두 압축을 풀어도 괜찮습니다.
100MB의 여유 RAM과 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