LinuxForum.Fans
Тема

Пути при распаковке tar

Автор: antobra 12 сообщений 5911 просмотров
#248070

Подскажите как сделать архив tar таким, чтобы при распаковывании он не вставлялся по тому же пути, с которым был запакован.

Объясню. Это команда для запаковывания:

/bin/tar --create --one-file-system --preserve-permissions --recursion --sparse --totals --wildcards --verbose --gzip --file=/www/files/backup.tar.gz /www/files/list/

Так вот, при распаковывании допустим в папку /www/files2/ он поступит так /www/files2/www/files/list/. И покидает туда все файлы. А мне нужно, чтобы он распаковался куда я укажу.

Какая команда должна быть?

#248072

Было на форуме что-то подобное...
Я обычно делаю так:
— перехожу в каталог, содержимое которого хочу заархивировать:

text

cd /www/files/list/

— создаю архив с содержимым этого каталога:

text

tar cjpvf /tmp/backup.tar.bz2 .

(не пропустите точку в конце команды);
— при необходимости распаковываю по нужному пути:

text

tar xpvf /tmp/backup.tar.bz2 -C /www/files2/
#248074

Для этого есть опция "-C".

Пётр.

#248087
Peter написал:
Для этого есть опция "-C".

Пётр.

А не подскажете как применять?

Описание мне мало о чем сказало:


-C directory В режиме c и r, данная опция меняет директорию прежде чем добавит следующие файлы. В режиме x директория меняется после открытия архива, но прежде распаковки содержимого из архива.

Несколько раз пробывал, менял местами и все время ошибка, что не существует такой директории.

#248088
"antobra" написал:
А не подскажете как применять?
"Lupo Alberto" написал:
tar xpvf /tmp/backup.tar.bz2 -C /www/files2/

Но нужно выполнить предыдущие шаги (переход в каталог и создание архива, находясь в целевом каталоге), иначе созданный архив со всеми путями просто будет распакован в директорию, указанную в качестве аргумента после опции -C.

#248089
Lupo Alberto написал:
[quote="antobra"]А не подскажете как применять?
"Lupo Alberto" написал:
tar xpvf /tmp/backup.tar.bz2 -C /www/files2/

Но нужно выполнить предыдущие шаги (переход в каталог и создание архива, находясь в целевом каталоге), иначе созданный архив со всеми путями просто будет распакован в директорию, указанную в качестве аргумента после опции -C.[/quote]

Аааа. Хорошо, спасибо. Как то разработчики странный метод выбрали. Наверняка многие сталкивались с таким, что не нужно вставлять по тому же пути, что при копировании.

#248090

Вот ещё похожий способ:

text

tar -C '/home/lupo/Desktop' -cjpvf /tmp/test.tar.bz2 .

То есть в каталоге /tmp создастся архив test.tar.bz2 с содержимым каталога /home/lupo/Desktop без абсолютного пути.
В конце команды (после указания имени архива) пробел и точка.
Данный способ у меня очень «капризный» — в отличие от «обычного» требует указания дефиса перед опциями.

#248091
"antobra" написал:
Как то разработчики странный метод выбрали.

Как раз все наоборот, синтаксис у tar'а вылизан до предела, и продуманны все мелочи, то что при первом знакомстве он не привычен для кого-то это ни о чем не говорит.

#248177

newzenon, пытаюсь разбираться)

Lupo Alberto, спасибо. Сейчас запаковывается отлично! Команда для распаковки будет такая: tar xzf primer.tar.gz ?
Я попробывал и он мне покидал все файлы в /root :) хаха)

Наверное там нужно так же указывать адрес распаковки? Или этот файл помещать в папку, где собираюсь распаковать и уже там распаковывать?

#248179
"antobra" написал:
Наверное там нужно так же указывать адрес распаковки? Или этот файл помещать в папку, где собираюсь распаковать и уже там распаковывать?

Распаковывает в текущем каталоге, если только...

"Lupo Alberto" написал:
— при необходимости распаковываю по нужному пути:
text
tar xpvf /tmp/backup.tar.bz2 -C /www/files2/

#248180
"antobra" написал:
Команда для распаковки будет такая: tar xzf primer.tar.gz ?

Опцию z указывать не обязательно — tar сам прекрасно разберётся, чем распаковать, а вот p — сохранить права доступа — лучше установить.

#248215

оооо да) Получилось. Спасибо. Надеюсь эта тема поможет другим админам)

Войдите или зарегистрируйтесь, чтобы ответить.