tar исключает шаблон файла - PullRequest
8 голосов
/ 21 сентября 2011

Я пытаюсь создать tar с помощью следующей команды:

tar -cvf myFile.tar -X exclude-files.txt myContentDirectory

и мой файл исключений содержит следующие шаблоны для исключения:

**/*.bak
**/*.db
**/*.html

Но я не вижу, чтобы эти типы файлов были исключены из моего tar. Что я здесь не так делаю?

Я обнаружил, что когда у меня есть только один шаблон в моем файле exclude-files.txt, скажем, только

**/*.bak

это работает. Но не с несколькими шаблонами файлов (КАЖДАЯ НА НОВОЙ СТРОКЕ)

Ответы [ 3 ]

6 голосов
/ 21 сентября 2011

Я думаю, что это:

*.bak
*.db
*.html

- правильный формат для файла исключения, если вы хотите исключить конкретный каталог, который вы можете сделать:

some-dir/*.db

Также ваша команда должна выглядеть так:

tar -cvf myFile.tar -X exclude-files.txt myContentDirectory 
1 голос
/ 25 июня 2015

Извините, если этот ответ немного запоздал.

tar -cO --exclude=*.bak myContentDirectory | tar -O --delete '*.db' | tar -O --delete '*.html' > myFile.tar

Посмотрите, что вы здесь делаете, создаете tar, но отправляете его на стандартный вывод вместо файла, а затем отправляете его в tarудалите ненужный материал, один или несколько раз и, наконец, запишите результат в файл.

Вы даже можете сначала протестировать его следующим образом:

tar -cO --exclude=*.bak myContentDirectory | tar -O --delete '*.db' | tar -O --delete '*.html' | tar -tv

, который выложит список всех файлов, оставшихся в архиве.

1 голос
/ 18 декабря 2013

Скорее всего, порядок команды неправильный.

tar -cvf myFile.tar -X exclude-files.txt myContentDirectory

должно быть что-то вроде

tar cv -X exclude-files.txt -f myFile.tar myContentDirectory

PS.Я не изучал сами фильтры.Скорее всего, порядок параметров является проблемой.Если проблемы присутствуют в фильтрах / шаблонах - проще протестировать один за другим с параметром --exclude.

...