2015-10-12 2 views
0

Во время выполнения команды tar сегодня я пытался исключить каталог файлов внутри файловой системы. Я выполнил эту команду -tar-команда не исключает правильные файлы

tar --exclude='./my/directory/here' -zcvf backup.tar.gz docroot/

Однако, когда он был tar'ing каталог, он по-прежнему в том числе файлы из «здесь». Как я могу заставить его правильно исключить файлы?

Шахта не работает правильно - см демо -

$ sudo tar --exclude='./jsmith/testDirectory/' -zcvf backup.tar.gz ./jsmith/ 
[sudo] password for jsmith: 
./jsmith/ 
./jsmith/.bash_logout 
./jsmith/backup2015-9-8.sql.gz 
./jsmith/.mysql_history 
./jsmith/.bashrc 
./jsmith/testDirectory/ 
./jsmith/testDirectory/test4.sh 
./jsmith/testDirectory/test2.sh 
./jsmith/testDirectory/test6.sh 
./jsmith/testDirectory/deploy/ 
./jsmith/testDirectory/test8.sh 
./jsmith/testDirectory/tets12.sh 
./jsmith/testDirectory/test1.sh 
./jsmith/testDirectory/test7.sh 
./jsmith/testDirectory/.sh 
./jsmith/testDirectory/test9.sh 
./jsmith/testDirectory/test11.sh 
./jsmith/testDirectory/test10.sh 
./jsmith/testDirectory/test3.sh 
./jsmith/testDirectory/test5.sh 
./jsmith/.viminfo 
./jsmith/.drush/ 
./jsmith/.drush/cache/ 
./jsmith/.drush/cache/usage/ 
./jsmith/.drush/cache/default/ 
+0

BTW, в будущем ваши демонстрации/репродукторы также должны создавать все файлы, которые им нужны, чтобы выводить результат, чтобы у читателей было все необходимое, чтобы воссоздать проблему и проверить их предлагаемые решения. –

ответ

1

Ваше именование должно быть последовательным!

tar --exclude='./my/directory/here' -zcvf backup.tar.gz docroot/ 

... должно быть, вместо того, что-то вроде:

tar --exclude='docroot/my/directory/here' -zcvf backup.tar.gz docroot/ 

... который должен сказать: Если вы не используете ведущую ./ в имени файла будет включенный в tarball, вы не можете использовать ведущий ./ во имя исключаемых файлов. (Обратное также применяется: если вы сделали, используйте ./docroot в имени файла, вам также необходимо использовать его в шаблоне исключения).


Обратите внимание:

$ mkdir -p docroot/my/directory/here/content docroot/other/content 
$ tar --exclude='./docroot/my/directory/here/' -zcvf backup.tar ./docroot/ 
a ./docroot 
a ./docroot/my 
a ./docroot/other 
a ./docroot/other/content 
a ./docroot/my/directory 

Следует отметить, что в то время как my/directory присутствует, my/directory/here нет, и ни один не my/directory/here/content.

+0

Спасибо за ответ, однако, если я нахожу команду tar -exclude = './docroot/my/directory/here /' -zcvf backup.tar ./docroot/, она по-прежнему включает в себя файлы из «здесь», Справочник – Proximus

+1

@Proximus, см. демонстрацию с поправкой на ответ, показывая, что это работает в соответствии с проектом. –

+0

@Proximus, ... если у вас есть проблемы, я бы предложил добавить тестируемый репродуцируемый вопрос, чтобы другие люди могли их видеть (см. Также http://stackoverflow.com/help/mcve). –

Смежные вопросы