하위 디렉터리를 사용하여 디렉터리를 압축할 때 특정 파일의 압축을 건너뛰도록(포함하지는 않음) 7z에 명령할 수 있습니까?

하위 디렉터리를 사용하여 디렉터리를 압축할 때 특정 파일의 압축을 건너뛰도록(포함하지는 않음) 7z에 명령할 수 있습니까?

WinRAR(Windows용) 아카이버에서 제가 정말 좋아하는 기능 중 하나는 특정 파일을 압축된 아카이브에 포함하면서 확장자(이름 패턴)를 기반으로 특정 파일을 압축하려는 시도를 건너뛰도록 설정할 수 있다는 것입니다. 사용자 홈 디렉토리를 백업할 때 많은 시간을 절약하고 mp3, jpg, zip 등과 같은 파일 압축을 포기하고 텍스트 압축 시 영향을 받지 않는 (비고체) 아카이브에 추가하기만 하면 됩니다. , xls, 데이터베이스 등의 파일이 추가되고 있습니다.

Linux로 전환한 후 내 편의상의 이유로(tar.gz 옹호자들은 권리/소유권 정보 및 링크를 저장해야 한다고 말하지만 시스템 파일이 아닌 경우에는 그 어떤 것도 사용하지 않습니다).

하지만 특정 파일의 압축을 건너뛰는 WinRAR의 기능이 정말 그리워요. 아마도 당신은 7z의 팬일 수도 있습니다. 이 효과를 얻는 방법을 알고 계십니까?

답변1

일반적으로 이는 를 사용하여 수행되지만 tar압축을 건너뛰려면 압축 수준을 0으로 설정하십시오.

저는 GUI가 없고 실제로 그것을 사용하지 않기 때문에 필요한 작업을 수행하려면 스크립트를 작성해야 할 수도 있습니다. 예를 들어 저는 PERL을 사용하지만 원하는 방식으로 이를 수행할 수 있습니다. 이 특정 파일은 이러한 파일을 건너뜁니다 jpg.

my $archive = "/home/user/archive.zip";
for $file @filenames
{
    my $compression_level = 9;
    $compression_level = 0 if($file =~ /jpg$/);
    `7za a -tzip -mx=$compression_level $archive $file`;
}

스크립트를 사용하면 원하는 만큼 복잡해질 수 있지만 이는 사용자에게 달려 있습니다.

답변2

나는 단지 같은 문제를 찾고 있었고 그것이 오래된 질문이라는 것을 깨달았지만 방법을 찾은 것 같습니다.

아카이브에 파일을 개별적으로 추가(예: 업데이트)합니다.

예를 들어, 먼저 최적의 압축으로 모든 텍스트 파일을 추가합니다.

7z a archive.7z "*/*.txt" -mx9

그런 다음 압축되지 않은 모든 mp3 파일을 업데이트합니다.

7z u archive.7z "*/*.mp3" -m0=copy

관련 정보