Архивирование (ubuntu tar) скрытых каталогов

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

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

Ответы

Ответ 1

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

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

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

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

Изменение: мои рекомендации в комментарии ниже.

Ответ 2

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

tar -cvpzf test.tgz .

Ответ 3

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

tar -cvpzf test.tgz * .??*

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

Ответ 4

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

Ответ 5

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

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

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

Ответ 6

shopt -s dotglob

это сделает