Исключение каталога при создании файла .tar.gz - PullRequest
108 голосов
/ 27 ноября 2010

У меня есть папка /public_html/, в этой папке есть папка /tmp/, которая содержит 70 ГБ файлов, которые мне на самом деле не нужны.

Сейчас я пытаюсь создать .tar.gz из /public_html/, исключая /tmp/

Я выполнил команду:

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

tar все еще создается, и, выполнив ls -sh, я вижу, что MyBackup.tar.gz уже имеет около 30 ГБ, и я точно знаю, что /public_html/ без /tmp/ не имеет более 1 ГБ файлы.

Что я сделал не так?

Ответы [ 9 ]

182 голосов
/ 27 ноября 2010

Попробуйте удалить последний / в конце пути к каталогу, чтобы исключить

tar -pczf MyBackup.tar.gz /home/user/public_html/ --exclude "/home/user/public_html/tmp" 
37 голосов
/ 27 ноября 2010

Попробуйте переместить --exclude до включения.

tar -pczf MyBackup.tar.gz --exclude "/home/user/public_html/tmp/" /home/user/public_html/ 
15 голосов
/ 24 августа 2011

Да, удалите завершающий / и (по крайней мере, в Ubuntu 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"

будет работать

8 голосов
/ 07 октября 2016

Правильная команда для исключения каталога из сжатия:

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

Обязательно поставьте - исключать перед исходным и целевым элементами .

и вы можете проверить содержимое файла tar.gz без разархивирования:

tar -tf backup.tar.gz
3 голосов
/ 30 ноября 2012

Попробуйте это

tar -pczvf advancedarts.tar.gz /home/user/public_html/ --exclude /home/user/public_html/tmp
1 голос
/ 05 декабря 2018

Это сработало для меня:

tar -zcvf target.tar.gz target/ --exclude="target/backups" --exclude="target/cache"
1 голос
/ 15 июня 2018

Принятый ответ у меня не сработал, запустив unxutils tar на windows10. Вместо этого мне пришлось поместить файлы / каталоги в архив как параметр last , например:

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

Тогда это сработало.

0 голосов
/ 10 мая 2018

Вы также можете исключить более одного, используя только один --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 и / home / user/ public_html /

Синтаксис:

tar <OPTIONS> <TARBALL_WILL_CREATE> <ARGS> <PATH_TO_COMPRESS>
0 голосов
/ 05 мая 2015

Параметр исключения должен включать знак =, а " не требуется.

--exclude=/home/user/public_html/tmp
...