7z는 제외 파일에서 디렉터리를 제외하지 않습니다.

7z는 제외 파일에서 디렉터리를 제외하지 않습니다.

Bash 스크립트에서 7z를 사용하여 아카이브를 만들고 일부 디렉터리를 제외하고 싶습니다. 하나의 항목만 포함하는 제외 파일을 만들었습니다.

excl_dir/

내 스크립트:

#!/bin/bash
archiveName="my_archive"
base="/path/to/base"

7z a -mx=9 -t7z [email protected] "${archiveName}.7z" "${base}/files/*"

아카이브가 생성되지만 제외 파일의 디렉터리를 사용합니다.

내가 고려한 것들:

  • 제외된 파일은 UTF-8로 인코딩됩니다.
  • 제외 파일은 내 스크립트와 동일한 디렉터리에 있습니다.
  • 절대 경로와 상대 경로( /path/to/exclude.lst./exclude.lst,
  • 파일 형식 제외: excl_dir/, excl_dir/*, 항목 뒤 줄 바꿈

제외 파일의 항목이 정확합니까? 그렇다면 질문이 있습니까?

편집하다:

7z는 실제로 Except.lst의 항목이 .만 있을 때 excl_dir폴더를 제외합니다 . 이름에 이 문자열이 있는 모든 파일에도 마찬가지입니다.

답변1

7z패턴만 제외하고 후행 슬래시를 무시하는 것처럼 보입니다 . 해결 방법으로 제외하는 대신 포함할 파일 목록을 전달하세요.

find . -not -path './excl_dir/*' -not -path './excl_dir' > /tmp/include.lst
7z a -mx=9 -t7z -i@/tmp/include.lst foo.7z 

이것은 의 버그인 것 같습니다 7z.

관련 정보