폴더 구조:
etc (dir)
deploy (dir)
src (dir)
config (dir)
dist
├- config (dir)
├- index.js
내가 원하는 것은 루트 구성 폴더를 제외한 모든 것을 패키지화하여 .tar 파일에 넣는 것입니다 deploy
. 이 dist/config
폴더가 출력에 나타나는 것이 매우 중요합니다. 다음으로 시작하세요:
tar -czf deploy/deploy.gz --exclude=deploy --exclude="./config/" ./*
$ l ./deploy/deploy0/dist
index.js
router.js
test
그러나 이로 인해 dist/config
. 내가 할 수 있는 유일한 방법 dist/config
은 config라는 이름의 항목을 제외하지 않는 것입니다.
tar -czf deploy/deploy.gz --exclude=deploy ./*
$ l ./deploy/deploy1/dist
config
index.js
router.js
test
OSX 및 CentOS(개발 및 빌드). 그 사람을 위해아스팔트이것이 불가능하다고 생각하게 만듭니다.
빌드 환경에 있고 파일은 일회용이므로 불필요한 폴더를 삭제하여 이 문제를 해결했습니다.
답변1
find
약간 길기는 하지만 다음을 사용하여 인수를 만들 수 있습니다 .
find -mindepth 1 ! -wholename './config' ! -wholename './config/*'
mindepth 1
제외 .
및 wholename
디렉토리 자체와 해당 내용에 대한 두 가지 제외.
tar -xzf deploy/deploy.gz --exclude="deploy" \
$( find -mindepth 1 ! -wholename './config' ! -wholename './config/*' )
답변2
현재 디렉토리에 대한 점 참조를 아카이브 루트로 사용하는 것이 앵커입니다.
tar --exclude='./deploy' --exclude='./config' -cvf deploy/deploy.tar .
그러나 디렉터리 이름이나 와일드카드를 사용하는 경우 이 --anchored
플래그가 도움이 됩니다.
tar --anchored --exclude=deploy --exclude=config -cvf deploy/deploy.tar *
답변3
--exclude
소스 및 대상 매개변수 앞에 옵션을 넣어야 합니다.
tar --exclude=deploy --exclude="./config" -cvz deploy/deploy.gz .
답변4
./
제외된 파일의 시작 부분에 태그를 사용할 수 있습니다 .
나는 이것을 다음과 같이 사용합니다 :
tar --exclude='./build.tar.gz' --exclude='./config' -czf build.tar.gz .