архивирование (ubuntu tar) скрытые каталоги
tar на директории mydir
будет архивировать скрытые файлы и скрытые подкаталоги, но tar из внутри mydir
с *
подстановки не будет. Это давняя и известная несогласованность или ошибка?
Edit (дополнительная информация): tar изнутри mydir
с подстановочным знаком не будет "видеть" ни архивировать скрытые файлы и скрытые подкаталоги в немедленно. Однако, в скрытых подкаталогах mydir
скрытые файлы и скрытые подкаталоги будут заархивированы.
6 ответов
С подстановочным знаком это не сработает. Вы должны уточнить . (текущий каталог) если вы имеете в виду полный каталог, включая скрытые файлы. Вы можете сделать
tar -cvpzf test.tgz .
вы можете использовать:
tar -cvpzf test.tgz * .??*
но это работает только для скрытых файлов с именами > 2 (чтобы предотвратить '.' и.' .')
ответ *
подстановочный знак обрабатывается оболочкой, и он просто не расширяется до вещей, которые начинаются с точки. Другой подстановочный знак ?
также не расширяется до вещей, которые начинаются с точки. Спасибо Киту за указание, что это оболочка, которая делает расширение, и поэтому она не имеет ничего общего с tar
.
если вы используете shopt -s dotglob
тогда расширение будет включать такие вещи, как .filename
. Благодаря Энди.
использовать shopt -u dotglob
, чтобы включить его выключено.
включение dotglob
опция не меняется . Скорее это просто изменяет поведение расширения, как показано в чем-то вроде ls *
.
Edit: мои рекомендации приведены в комментарии ниже.
оболочка расширяет подстановочные знаки, так что tar даже не видит его. Вы должны добавить их явно, если хотите это сделать. (.*
). Тем не менее, чаще всего tar один каталог, так что когда вы untar все это идет в одно и то же место.
вы можете сжать все файлы / папки в текущем каталоге (в том числе .скрытый) с помощью:
tar -zcvf compressed.tgz `ls -A -1`
последний аргумент-это папки, которые вы хотите сжать. Если вы пройдете его ls -A -1
, вы передаете все папки в текущем каталоге, но .
и ..
.
Когда дело доходит до подкаталогов .скрытые файлы уже включены в сжатие по умолчанию.