.tar.gz 파일 생성시 디렉토리 제외


119

나는이 /public_html/해당 폴더에있어, 폴더를 /tmp/정말 필요가없는 파일의 70기가바이트처럼이 폴더에 있습니다.

지금은 만들려고하고 .tar.gz/public_html/제외를/tmp/

이것은 내가 실행 한 명령입니다.

tar -pczf MyBackup.tar.gz /home/user/public_html/ --exclude "/home/user/public_html/tmp/" 

타르는 여전히 생성되고, 그리고 작업을 수행하여 ls -sh그 볼 수 MyBackup.tar.gz이미 30기가바이트에 대해 가지고 있으며 나는 것을 확실히 알고 /public_html/없이이 /tmp/파일이 1GB보다 더 없습니다.

내가 뭘 잘못 했어?



-p옵션은 생성 기능 측면에서 의미가 없습니다.
Martin Schneider

답변:


201

제외 할 디렉토리 경로 끝에있는 마지막 /를 제거하십시오.

tar -pczf MyBackup.tar.gz /home/user/public_html/ --exclude "/home/user/public_html/tmp" 

7
전체 폴더와 그 내용을 제외하려면 : 타르 -pczvf MyBackup.tar.gz / 홈 / 사용자 / public_html을 / --exclude "/ 홈 / 사용자 / public_html을 / tmp를 / *"
Dr.jacky

내가 얻을 tar: Error exit delayed from previous errors.맥 OS에서
prayagupd

tar 오류 발생 : 멤버 이름에서 선행`/ '제거
SenG

2
작동하지 않습니다, --exclude="/home/user/public_html/tmp대신 사용 했습니다--exclude "/home/user/public_html/tmp
Black

1
더 이상 편집 할 수없는 이전 주석은 무시하십시오 . exclude먼저 stackoverflow.com/users/3904223/oussaka 메모 로 지정해야 합니다. 적어도 그것은 나를 위해 일한 유일한 것이다
kghbln

46

--exclude포함하기 전에 로 이동해보십시오 .

tar -pczf MyBackup.tar.gz --exclude "/home/user/public_html/tmp/" /home/user/public_html/ 

감사합니다. 이것은 오래된 Ubuntu 14.04 LTS 상자에서 저에게 효과적이었습니다.
Jamsi

1
OS X에서도이 작업을 수행해야했습니다.
TheJacobTaylor 2017-04-28

16

예, 후행을 제거 /하고 (적어도 우분투 11.04에서는) 주어진 모든 경로가 상대 또는 전체 경로 여야합니다. 동일한 명령에서 절대 경로와 상대 경로를 혼합 할 수 없습니다.

sudo tar -czvf 2011.10.24.tar.gz ./start-directory --exclude "home/user/start-directory/logs"

로그 디렉토리를 제외하지는 않지만

sudo tar -czvf 2011.10.24.tar.gz ./start-directory --exclude "./start-directory/logs"

작동 할 것이다


1
제외 인수에서 절대 경로를 제거하면 나를 위해 일합니다.
jruzafa

2
절대 경로와 상대 경로를 혼합하는 방법에 대한 팁이 여기에서 중요했습니다.
Dmitri DB

12

압축에서 디렉토리 제외에 대한 올바른 명령은 다음과 같습니다.

tar --exclude='./folder' --exclude='./upload/folder2' -zcvf backup.tar.gz backup/

소스 및 대상 항목 앞에 --exclude 를 넣어야 합니다 .

압축을 풀지 않고도 tar.gz 파일의 내용을 확인할 수 있습니다.

tar -tf backup.tar.gz

3

이 시도

tar -pczvf advancedarts.tar.gz /home/user/public_html/ --exclude /home/user/public_html/tmp

2

하나만 사용하여 둘 이상을 제외 할 수도 있습니다 --exclude. 이 예와 같이 :

tar -pczf MyBackup.tar.gz --exclude={"/home/user/public_html/tmp","/home/user/public_html/data"} /home/user/public_html/

에서 --exclude=당신은 디렉토리없이 이름을 완료해야합니다 /사이에해야을 MyBackup.tar.gz/ 가정 / 사용자 / public_html을 /

구문은 다음과 같습니다.

tar <OPTIONS> <TARBALL_WILL_CREATE> <ARGS> <PATH_TO_COMPRESS>

2

받아 들인 대답은 Windows10에서 unxutils tar를 실행하여 작동하지 않았습니다. 대신 다음과 같이 보관할 파일 / 디렉터리를 마지막 매개 변수 로 넣어야 했습니다.

tar -pczf MyBackup.tar.gz --exclude "/home/user/public_html/tmp/" /home/user/public_html/

그런 다음 작동했습니다.


2

이것은 나를 위해 일했습니다.

tar -zcvf target.tar.gz target/ --exclude="target/backups" --exclude="target/cache"

2

tar -pczf <target_file.tar.gz> --exclude /path/to/exclude --exclude /another/path/to/exclude/* /path/to/include/ /another/path/to/include/*

Ubuntu 19.10에서 테스트되었습니다.

  1. =후에는 exclude선택 사항입니다. 원하는 경우 =키워드 뒤에 공백 대신 사용할 수 있습니다 exclude.
  2. 매개 변수 exclude는 소스 앞에 있어야합니다.
  3. 사용 폴더 이름 (예 : 첫 번째) 또는 * (예 : 두 번째)의 차이점은 두 번째 폴더는 패키지에 빈 폴더를 포함하지만 첫 번째 폴더는 포함하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.