архивирование (ubuntu tar) скрытых каталогов - PullRequest
16 голосов
/ 01 января 2011

tar в каталоге mydir будет архивировать скрытые файлы и скрытые подкаталоги, но tar из в mydir с подстановочным знаком * не будет. Это давно известное несоответствие или ошибка?

Редактировать (дополнительная информация): tar из mydir с подстановочным знаком не будет «видеть» и архивировать скрытые файлы и скрытые подкаталоги в каталоге немедленный . Однако в скрытых подкаталогах mydir скрытые файлы и скрытые подкаталоги будут архивироваться.

Ответы [ 6 ]

27 голосов
/ 01 января 2011

С подстановочным знаком он не будет работать.Вы должны указать.(текущий каталог), если вы имеете в виду полный каталог, включая скрытые файлы.Вы можете сделать

tar -cvpzf test.tgz .
6 голосов
/ 28 января 2014

Вы можете использовать:

tar -cvpzf test.tgz * .??*

Но это работает только для скрытых файлов с именами> 2 (для предотвращения '.' И '..')

5 голосов
/ 21 января 2012

Ответ заключается в том, что подстановочный знак * обрабатывается оболочкой, и он просто не распространяется на элементы, начинающиеся с точки.Другой подстановочный знак ? также не распространяется на то, что начинается с точки.Спасибо Киту за то, что он указал, что это оболочка выполняет расширение, и поэтому она не имеет ничего общего с tar.

. Если вы используете shopt -s dotglob, то расширение будет включать такие вещи, как .filename.Спасибо Энди.

Используйте shopt -u dotglob, чтобы отключить его.

Переключение параметра dotglob само по себе ls не изменится.Скорее это просто изменяет поведение расширения, как показано в чем-то вроде ls *.

Редактировать: мои рекомендации в комментарии ниже.

3 голосов
/ 01 января 2011

Оболочка расширяет символы подстановки, поэтому tar даже не видит их.Вы должны добавить их явно, если вы хотите это сделать.(.*).Тем не менее, чаще всего используется tar для одного каталога, чтобы при распаковке он находился в одном месте.

2 голосов
/ 02 января 2016

Вы можете сжать все файлы / папки в вашем текущем каталоге (включая .hidden), используя:

tar -zcvf compressed.tgz `ls -A -1`

Последний аргумент - это папки, которые вы хотите сжать.Если вы передаете его ls -A -1, вы передаете все папки в текущем каталоге, кроме . и ...Когда речь идет о подкаталогах, скрытые файлы уже включены в сжатие по умолчанию.

1 голос
/ 21 ноября 2011
shopt -s dotglob

это сделает

...