tar -cvf를 사용하여 파일 압축 조건을 지정하는 방법

tar -cvf를 사용하여 파일 압축 조건을 지정하는 방법

압축 파일을 사용하고 싶은 경우 tar -cvf아래와 같은 조건을 주는 옵션이 있나요?

디스크 0:/centos/user0 - 15G 사용 가능 디스크 1:/centos/user1 - 1G 사용 가능

cd /centos/user0/
 
tar -cvf /centos/user1/test01.tar *

사용 가능한 디스크 공간이 매우 작기 때문에 /centos/user1사용 가능한 디스크 공간이 300M 미만이면 압축을 중지하고 싶습니다./centos/user1

tar기능적으로 그러한 옵션이 있습니까? 아니면 이것을 할 수 있는 방법이 있나요?

답변1

대부분의 Unix 유틸리티와 마찬가지로 tar아카이브를 생성하는 한 가지 기능을 수행합니다. 조건에 따라 아카이브를 생성하거나 조건에 따라 중단하는 기능이 없습니다. 후자는 외부 명령을 주기적으로 폴링하는 작업이 포함될 수 있으므로 일반적인 상황에서는 상대적으로 비효율적입니다.

데이터의 크기를 확인할 수 있습니다앞으로을 사용하여 압축 du한 다음 아카이브 생성 여부를 결정할 수 있습니다. tar디스크 공간이 부족한 것으로 감지되면 프로세스를 종료하고 파일을 삭제하는 하위 셸에서 백그라운드 작업을 생성할 수도 있습니다 . 그러나 후자의 방법은 시스템에 디스크가 부족해지기 전에 작업을 종료할 만큼 빠르지 않을 수 있습니다.

마지막으로 특정 사용자를 생성하고 작은 디스크에 할당량을 추가하면 할당량이 초과되면 작업이 완료되지 않습니다. 여전히 아카이브의 일부를 삭제해야 하지만 이것이 효율적인 접근 방식입니다.

답변2

tar내 예는 이 질문의 원래 문제를 해결하지 못할 수도 있지만 조건문을 간접적으로 사용하는 아이디어를 공유하고 싶습니다.

  1. tar 아카이브를 생성합니다:

    tar cf sample.tar sample.txt
    
  2. findtar예를 들어 CSS 파일만 추가하려면 결합 기능을 사용하세요 .

    find . -name "*.css" -exec tar rf sample.tar {} \;
    

    아니면 그냥 실행 파일을 추가하세요:

    find . -executable -exec tar rf sample.tar {} \;
    
  3. 아카이브 파일을 확인하십시오.

    tar tf sample.tar
    

관련 정보