LINUX.ORG.RU

Архивация zip без сохранения полного пути

 ,


0

1

Мне надо архивировать несколько директорий с помощью команды zip. Пусть этими директориями будут /home/user/dir1 и /home/user/dir2. В команду я вставляю полные пути (это важно, т.к. команду я хочу вставить в скрипт). После архивации я открываю архив и вижу там директорию home, в ней директорию user и лишь в ней нужные мне dir1 и dir2. Как сделать чтобы лишние директории не сохранялись и при открытии сразу были dir1 и dir2, прямо в корне архива? Я понимаю, что можно в скрипте сохранить текущую директорию, перейти туда где лежит архивируемая директория и архивировать от туда, но неужели у zip нет подходящего аргумента, чтобы не усложнять скрипт?

Заменил zip на 7z. Теперь всё работает как я хочу, хотя я немного разочарован, что в zip не нашлось такого аргумента.

Arksunix
() автор топика
Ответ на: комментарий от Arksunix

-j --junk-paths Store just the name of a saved file (junk the path), and do not store directory names. By default, zip will store the full path (relative to the current directory).

просто читать надо уметь. разочарован он.

vedowi6419
()
Ответ на: комментарий от vedowi6419

просто читать надо уметь. разочарован он.

–junk-paths вывалит в архив фарш из файлов вообще игнорируя пути. А ТСу нужно отсечь префикс пути, но сохранить структуру каталогов.

Похоже, поучиться читать нужно не ТСу.

wandrien ★★
()
Ответ на: комментарий от vedowi6419

Так сам бы попробовал этот аргумент. Он просто удаляет ВСЕ директории и скидывает все файлы со всех директорий в корень архива. Мне не надо убирать иерархию совсем, я просто хочу чтобы она начиналась нужного места, а не от корня.

Arksunix
() автор топика
Ответ на: комментарий от vedowi6419

Прежде чем что-то писать, сам бы почитал, что оно делает, неуч. ТСу нужен переход в директорию перед архивированием, так же как с tar -C, но в zip такой нет, поэтому только костылять предварительный переход по абсолютному пути с cd, а потом архивация.

anonymous
()
Ответ на: комментарий от Arksunix

то есть ты хочешь магическую опцию, которая отрежет тебе /home/user/ от /home/user/dir1 и /home/user/dir2, иными словами чтобы ты смог запустить zip --option=/home/user/ blah-blah. волшебная опция в таком случае – cd &&.

нет смысла передавать zip ровно то, что ты можешь передать cd.

vedowi6419
()
Ответ на: комментарий от anonymous

tar -C – это лучший способ выстрелить себе в ногу, какой только можно придумать с таром, единственное её допустимое использование -C /

vedowi6419
()
Последнее исправление: vedowi6419 (всего исправлений: 1)
pushd /home/user > /dev/null 2>&1
zip -r archive.zip dir1 dir2
popd > /dev/null 2>&1
anonymous
()
Ответ на: комментарий от vedowi6419

Но почему в 7z всё работает как мне надо, при том без доп аргументов? Зачем усложнять и выполнять множество команд, если можно обойтись одной?

Arksunix
() автор топика
Ответ на: комментарий от vedowi6419

Ты понимаешь, что у тебя репутация идиота? Все, что ты пишешь, это какая то хрень из первой ссылки в гугле, где сидят такие же идиоты как ты.

anonymous
()
Ответ на: комментарий от Arksunix

потому же, почему в мире есть гном и прочие хиги – многим кажется, что неочевидные допущения это нормально. после нескольких выстрелов в ногу обычно проходит.

vedowi6419
()
Ответ на: комментарий от Arksunix

Зачем усложнять

Заучивание 100500 ключей и их порядка, которые у разных архиваторов разные, а в особо запущенных случаях еще и меняются от версии к версии - это совсем не упрощение по сравнению с командой cd /home/user/dir1 которая всегда вылядит и работает одинаково.

pinus_nigra
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.