tar를 사용하여 패턴이 있는 디렉터리를 재귀적으로 제외

tar를 사용하여 패턴이 있는 디렉터리를 재귀적으로 제외

tar를 사용하여 보관하려는 다양한 Python 패키지가 포함된 디렉터리가 있습니다. __pycache__빌드/테스트 프로세스에서 남겨진 많은 수의 폴더를 제외해야 하는데 --exclude "__pycache__". 이 패턴과 일치하는 모든 하위 디렉터리를 무시하도록 tar에 어떻게 지시할 수 있습니까?

tar -cvf myarchive.tar -C ~/myproject package1/ package2/ --exclude "__pycache__"

재구축:

me@me-laptop:~/myproject$ pwd
/home/me/myproject
me@me-laptop:~/myproject$ tree
.
├── package1
│   ├── include
│   └── __pycache__
└── package2
    ├── include
    └── __pycache__

6 directories, 0 files
me@me-laptop:~/myproject$ tar -cvf myarchive.tar -C ~/myproject package1/ package2/ --exclude "__pycache__"
package1/
package1/include/
package1/__pycache__/
package2/
package2/include/
package2/__pycache__/

답변1

--exclude명령 시작 부분에 스위치를 추가 해야 합니다 .이것. 이 솔루션은 내 openSUSE 컴퓨터에서 작동하지만 현재 사용 가능한 다른 배포판이 없습니다.

host:/tmp # find test*
test1
test1/file1
test1/__pycache__
test1/__pycache__/file1-py
test1/include
test1/include/file1-incl
test2
test2/__pycache__
test2/__pycache__/file2-py
test2/include
test2/include/file2-incl
test2/file2

host: # tar --exclude='__pycache__' -cv test* -f testtar.tar
test1/
test1/file1
test1/include/
test1/include/file1-incl
test2/
test2/include/
test2/include/file2-incl
test2/file2

관련 정보