Виключення каталогу під час створення файлу .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 -shI, я можу побачити, що він MyBackup.tar.gzвже має близько 30 ГБ, і я точно знаю, що /public_html/без /tmp/не більше 1 ГБ файлів.

Що я зробив не так?



-pопція не має ніякого значення з точки зору функції створення, вірно!?
Мартін Шнайдер

Відповіді:


201

Спробуйте видалити останній / в кінці шляху до каталогу, щоб виключити

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

7
Щоб виключити всю папку та її вміст: tar -pczvf MyBackup.tar.gz / home / user / public_html / --exclude "/ home / user / public_html / tmp / *"
Dr.jacky

Я потрапляю tar: Error exit delayed from previous errors.в macos
prayagupd

Отримання тар за помилки: Видалення провідної `/ 'з імен учасників
SenG

2
Не працює, мені довелося використовувати --exclude="/home/user/public_html/tmpзамість--exclude "/home/user/public_html/tmp
Чорний

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.
Джамсі

1
Мені це потрібно було зробити і на OS X.
TheJacobTaylor

16

Так, видаліть трейлінг /(і, принаймні, в 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"

буду працювати


1
Працюйте для мене, коли я видаляю абсолютний шлях у аргументі виключення.
jruzafa

2
Підказка про змішування абсолютних та відносних шляхів була для мене ключовою тут
Дмитро БД

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

Прийнята відповідь не спрацювала для мене, запустивши unxutils tar на windows10. Натомість мені довелося помістити файли / dirs в архів як останній параметр, наприклад:

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. Різниця між ім'ям використання папки (наприклад, 1-ї) або * (як 2-я) полягає в тому, що 2-я буде містити порожню папку в пакеті, а перша - не.

-2

Параметр виключення повинен містити =знак і "не обов'язковий.

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

1
"обов'язковий, якщо в папці є пробіл у назві
Чорний
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.