USA
루트 폴더 와 하위 폴더가 있고 . 은 제외된 하위 폴더 California
이지만 그 안에 tar 백업에 포함하려는 특정 파일이 있습니다. 이 파일을 이라고 부르자 .Texas
Texas
Austin
어떻게 해야 하나요?
답변1
순서가 중요합니다. tar를 두 번 실행할 필요가 없습니다.
tar cvf dest.tar USA/Texas/Austin --exclude=USA/Texas USA
GNU tar 1.29에서 테스트되었습니다.
답변2
tar를 두 번 실행 하시겠습니까? 먼저 텍사스를 제외하고 파일을 추출하시겠습니까?
답변3
BSD나 GNU tar를 사용하여 이 작업을 편리하게 수행하는 방법을 모르겠습니다. (불편한 점은 디렉터리 자체를 제외하는 것이 아니라 포함하려는 파일을 제외한 디렉터리의 모든 파일을 제외하는 것입니다.)
비교적 쉽게 할 수 있어요공원, 이는 POSIX의 cpio 및 tar를 대체합니다. Pax는 어디에서나 사용할 수 있지만 일부 Linux 배포판에는 기본 설치의 일부로 포함되어 있지 않습니다.
Pax는 동일한 도구인 옵션을 통해 제외 및 이름 변경을 관리합니다 -s
. 파일 이름을 빈 문자열로 바꾸면 제외됩니다. 옵션은 -s
순차적으로 처리되며, 파일이 일치하면 해당 파일에 대한 후속 옵션은 처리되지 않습니다( g
접미사가 사용되지 않는 한). 따라서 일치하는 제외 규칙 이전에 파일 이름을 자체 이름으로 변경하여 파일 제외를 취소할 수 있습니다.
pax -w >foo.tar -s '!^USA/Texas/Austin$!&!' -s'!^USA/Texas/.*!!' USA
답변4
다음과 같이 tar
및 명령을 조합하여 수행할 수 있습니다 .find
tar cf USA.tar $(find USA/* -type d ! -path "*Texas*" -o -path "USA/Texas/Austin")