Архивирование (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
это сделает