1

Я пытаюсь скопировать содержимое корневой файловой системы, расположенной в $rootfs . Проблема в том, что когда я пытаюсь выполнить tar -c $rootfs > $dest , каталоги между моим текущим каталогом и реальной файловой системой остаются. Поэтому вместо etc/fstab меня есть fun/rootfs/path/etc/fstab когда rootfs=fun/rootfs/path , для каждого отдельного файла.

Я знаю о --strip , но проблема в том, что $rootfs является переменной относительного пути, поэтому я не знаю, сколько каталогов находится между файловой системой и моим текущим каталогом. Я не могу cd по той же причине; $dest - это переменная относительного пути, и мне нужно остаться в текущем каталоге, чтобы создать архив в нужном месте.

Есть ли способ, которым я могу игнорировать путь rootfs при создании архива?

2 ответа2

2

Вы можете сгенерировать список файлов относительно пути $rootfs а затем использовать -C $rootfs -T <file-of-filenames> для создания архива. Вы не можете использовать подстановочный знак для генерации списка файлов в командной строке tar, так как он не будет заполнен правильно. Вы можете использовать что-то вроде find или ls для этого.

1

Я не уверен, что понимаю вопрос, но как насчет

(cd "$rootfs"; tar -c .) > "$dest"

поэтому tar работает в каталоге $rootfs , но $dest создается относительно текущего каталога.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .