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
.