Z wyłączeniem katalogu podczas tworzenia pliku .tar.gz

119

Mam /public_html/folder, w tym folderze jest /tmp/folder zawierający około 70 GB plików, których tak naprawdę nie potrzebuję.

Teraz staram się stworzyć .tar.gzz /public_html/wyłączeniem/tmp/

Oto polecenie, które wykonałem:

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

Tar wciąż się tworzy, a robiąc to ls -shwidzę, że MyBackup.tar.gzma już około 30 GB, a wiem na pewno, że /public_html/bez /tmp/nie ma więcej niż 1 GB plików.

Co zrobiłem źle?

suresh
źródło
-popcja nie ma znaczenia z punktu widzenia funkcji tworzenia, prawda !?
Martin Schneider,

Odpowiedzi:

201

Spróbuj usunąć ostatni znak / na końcu ścieżki katalogu do wykluczenia

tar -pczf MyBackup.tar.gz /home/user/public_html/ --exclude "/home/user/public_html/tmp" 
Victor Parmar
źródło
7
Aby wykluczyć cały folder i jego zawartość: tar -pczvf MyBackup.tar.gz / home / user / public_html / --exclude "/ home / user / public_html / tmp / *"
Dr.jacky
Dostaję się tar: Error exit delayed from previous errors.w macos
prayagupd
Uzyskiwanie
tarczy
2
Nie działa, musiałem użyć --exclude="/home/user/public_html/tmpzamiast--exclude "/home/user/public_html/tmp
Black
1
Zignoruj ​​mój poprzedni komentarz, którego nie mogę już edytować: excludemusi być najpierw określony jako notatki stackoverflow.com/users/3904223/oussaka . Przynajmniej to jedyna rzecz, która działała dla mnie
kghbln
46

Spróbuj przenieść --excludedo przed dołączeniem.

tar -pczf MyBackup.tar.gz --exclude "/home/user/public_html/tmp/" /home/user/public_html/ 
Martin Algesten
źródło
Dzięki, to zadziałało dla mnie na starym pudełku Ubuntu 14.04 LTS.
Jamsi,
1
Musiałem to zrobić również na OS X.
TheJacobTaylor
16

Tak, usuń końcową /ścieżkę i (przynajmniej w Ubuntu 11.04) wszystkie podane ścieżki muszą być ścieżką względną lub pełną. Nie możesz mieszać ścieżek bezwzględnych i względnych w tym samym poleceniu.

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

nie wykluczy katalogu logów, ale

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

będzie działać

użytkownik
źródło
1
Pracuj dla mnie, gdy usuwam ścieżkę bezwzględną w argumencie wykluczenia.
jruzafa
2
Wskazówka dotycząca miksowania ścieżek bezwzględnych i względnych była dla mnie kluczowa
Dmitri DB,
12

Prawidłowe polecenie wykluczenia katalogu z kompresji to:

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

Pamiętaj, aby wstawić --exclude przed elementem źródłowym i docelowym .

i możesz sprawdzić zawartość pliku tar.gz bez rozpakowywania:

tar -tf backup.tar.gz
oussaka
źródło
3

Spróbuj tego

tar -pczvf advancedarts.tar.gz /home/user/public_html/ --exclude /home/user/public_html/tmp
Yogesh
źródło
2

Możesz również wykluczyć więcej niż jeden, używając tylko jednego --exclude. Jak ten przykład:

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

W --exclude=musisz zakończyć nazwę katalogu bez /i musi między MyBackup.tar.gz a / home / user / public_html /

Składnia jest następująca:

tar <OPTIONS> <TARBALL_WILL_CREATE> <ARGS> <PATH_TO_COMPRESS>
LozanoMatheus
źródło
2

Zaakceptowana odpowiedź nie zadziałała dla mnie, uruchamiając tar unxutils w systemie Windows10. Zamiast tego musiałem umieścić pliki / katalogi do archiwum jako ostatni parametr, jak poniżej:

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

Wtedy zadziałało.

user2081279
źródło
2

To zadziałało dla mnie:

tar -zcvf target.tar.gz target/ --exclude="target/backups" --exclude="target/cache"
czarny
źródło
2

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

Testowane w Ubuntu 19.10.

  1. =Po excludeto opcjonalne. Jeśli chcesz, możesz użyć =zamiast spacji po słowie kluczowym exclude.
  2. Parametr excludenależy umieścić przed źródłem.
  3. Różnica między używaną nazwą folderu (jak pierwszy) a * (jak drugi) jest następująca: drugi będzie zawierał pusty folder w pakiecie, ale pierwszy nie.
scegg
źródło
-2

Opcja wykluczenia musi zawierać =znak i "nie jest wymagana.

--exclude=/home/user/public_html/tmp
Ivan Avery Frey
źródło
1
”jest wymagane, jeśli folder ma miejsce w nazwie
Czarny