Я использую следующий псевдоскрипт для создания TAR моего установленного программного обеспечения
mkdir tmp
ln -s /path/to/app1/bin tmp/app1
ln -s /and/path/going/to/the-app-2 tmp/app2
tar -c --dereference -f apps.tar tmp
мне нужно --dereference
вариант здесь, чтобы перейти по ссылкам, которые я только что сделал в tmp
. Причина, по которой я делаю ссылки, в первую очередь, состоит в том, чтобы хранить в архиве каталоги с другим именем, чем у них в файловой системе.
До сих пор все работало нормально. Однако теперь у меня ситуация, когда /path/to/app1
также содержит ссылки, и те, по которым я не хочу переходить.
Возможно ли это с некоторыми изменениями в tar
команда? Или мне нужно полностью переключиться на способ создания архива?
Я не думаю, что есть способ сделать только частичное разыменование. Вы могли бы сделать что-то вроде
tar -cf apps.tar /path/to/app1/bin /and/path/going/to/the-app-2
а затем извлечь их в другой корень с помощью -C
-C, --directory = DIR
change to directory DIR
например
mkdir tmp
tar -C tmp -xf apps.tar
что имело бы эффект, аналогичный тому, как вы сейчас создаете свой архив.
Вы также можете использовать -C, чтобы указать на любой существующий каталог.
Вместо ссылки я мог скопировать. К сожалению, это добавило бы дополнительных накладных расходов (файлы довольно большие). Конечно, он вырастет не более чем в два раза, так как таринг сам по себе тоже является формой копирования.
Вам действительно нужно, чтобы структура каталогов в архиве отличалась от структуры на диске?
Если нет, то вы можете просто пометить их как есть:
tar -cf file.tar /path/1 /path/2
Если ты root
тогда лучше всего использовать команду mount bind, чтобы жестко связать каталоги, которые вы хотите настроить tar, а не создавать на них символические ссылки. Тогда вам не нужно будет использовать опцию разыменования.
mkdir tmp
mount --bind /path/to/app-1 tmp/app-1
mount --bind /path/to/app-2 tmp/app-2
tar cf apps.tar tmp
Обязательно размонтируйте эти каталоги, прежде чем с ними что-нибудь случайно произойдет. Видеть эти предупреждения.