아카이브를 추출할 때 압축된 파일을 삭제하는 방법은 무엇입니까?

아카이브를 추출할 때 압축된 파일을 삭제하는 방법은 무엇입니까?

대용량 아카이브의 압축을 풀어야 하는데 문제는 압축하고 추출한 파일을 수용할 만큼 디스크 공간이 부족하다는 것입니다. 압축 해제 후 즉시 아카이브에서 압축 파일을 삭제하는 옵션이 있습니까? 그렇다면 어떻게 해야 할까요? 현재 내 파일은 tar 명령을 통해 압축되어 있지만 다른 서버에서는 다른 유형으로 다시 패키지할 수 있습니다.

답변1

노트. 파일이 압축된 경우에는 작동하지 않습니다! 그것에 대해 생각조차 하지 마세요! !

이 경우 이렇게 해보자.

tar 아카이브를 거꾸로 탐색하고 파일을 추출한 다음 아카이브에서 삭제하는 간단한 스크립트를 만들었습니다. 이 파일이 그 안에 있는 디렉토리 구조와 작동하는지 확실하지 않으며 "플랫" tar 아카이브로만 테스트했습니다.

스크립트는 다음과 같습니다

#!/bin/bash

archive="$1"

while true
do
        file=$(tar --list -f tar.tar | tail -n 1)
        if [ -z "$file" ]; then
                break
        fi
        tar --extract -f "$archive" "$file" && tar --delete -f "$archive" "$file"
done

경고: 나는 이것을 테스트했습니다. 그러나 위의 스크립트가 일부 파일을 건너뛰거나 작동하지 않거나 심지어 컴퓨터를 토스터로 바꾸지 않을 것이라고 보장할 수 없습니다. 자신의 책임하에 사용하십시오!

내 테스트는 다음과 같습니다.

:/mnt$ ls -l
total 2445456
-rwxrwxr-x 1 va va        201 окт 28 08:50 do.sh
-rw-rw-r-- 1 va va 2504140800 окт 28 08:45 tar.tar
:/mnt$ df -h |grep /mnt
tmpfs                     3,0G  2,4G  684M  78% /mnt
:/mnt$ ./do.sh tar.tar
:/mnt$ df -h |grep /mnt
tmpfs                     3,0G  2,4G  684M  78% /mnt
:/mnt$ ls -lh tar.tar 
-rw-rw-r-- 1 va va 10K окт 28 08:53 tar.tar

tar 아카이브에는 마지막에 메타데이터만 포함되어 있으며 삭제할 수 있습니다.

관련 정보