Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Как распаковать архив tar в отдельную директорию без абсолютных путей?  (Прочитано 5453 раз)

0 Пользователей и 1 Гость просматривают эту тему.

adawdp

  • Автор темы
  • Гость
— Здр.Все!
— Если архивировать вот такой командой:
Код: (=) [Выделить]
tar -zcvf - '/home/HOME/03_ProgramFileStorage/SED' | split -b 500m - /home/HOME/02-2_GoogleDrive/SED.tar.gzто в архиве файлы получаются с полными путями.
— Распаковываем архив в конкретную директорию:
Код: (=) [Выделить]
tar -xzvf SED.tar.gz -C /media/MYCOP— В результате заархивированные данные оказываются по адресу:
Код: (=mysql) [Выделить]
/media/MYCOP/home/HOME/03_ProgramFileStorage/SEDа хотелось бы:
Код: (=) [Выделить]
/media/MYCOP/SED— Для того, чтобы этого избежать рекомендуют в основном архивировать запуская терминал в соответствующей директории, избегая указания полного пути, это, конечно, понятно.
— Но как быть например, если я хочу одной командой архивировать разные директории или файлы, не находящиеся в одной директории?
— Как быть если мне нужно будет распаковать чужой архив запакованный таким образом, из Nautilus'a можно и не распаковать, будет выдавать ошибку?
— Читал я man tar но никаких светлых мыслей у меня не возникло :( , конечно можно переместить распакованные файлы после выполнения команды „вручную“.
— Но хочется сразу получить распакованные файлы или директории без абсолютных путей.

Krjd

  • Автор темы
  • Гость
adawdp,
$ ls -R test
test:
test1  test2  test3

test/test1:
file_1

test/test2:
file_2

test/test3:
file_3  file_4

$ tar -czf tests.tar.gz -C test/test1 . -C ../test2 . -C ../test3 .$ tar ztf tests.tar.gz
./
./file_1
./
./file_2
./
./file_3
./file_4

Пользователь решил продолжить мысль 30 Апреля 2014, 22:33:28:
~/test$ tar xf ../tests.tar.gz
~/test$ ls
file_1  file_2  file_3  file_4
« Последнее редактирование: 30 Апреля 2014, 22:33:28 от D101101 »

adawdp

  • Автор темы
  • Гость
D101101, спасибо, хотя изложенное Вами языком команд для меня не совсем очевидно :), но я всё же попробую разобраться потренировавшись на примерах…

Krjd

  • Автор темы
  • Гость
adawdp,
меняет текущие место нахождения

Пользователь решил продолжить мысль 30 Апреля 2014, 22:52:18:
структура использованная мной для примера
test
        test1
                file_1
        test2
                file_2
        test3
                file_4
                file_5

$ tar -czf tests.tar.gz -C test/test1 . -C ../test2 . -C ../test3 .
-C test/test1 .зайти в папку test/test1 и заархивировать все в ней
-C ../test2 .подняться на одну папку "вверх", зайти в test2 и заархивировать все в ней
-C ../test3 .подняться на одну папку "вверх", зайти в test3 и заархивировать все в ней

в итоге получил архив где все файлы лежат в корне
« Последнее редактирование: 30 Апреля 2014, 22:52:18 от D101101 »

adawdp

  • Автор темы
  • Гость
— Может я недостаточно чётко изложил проблему, я применял ключ -С …
— Вот о таких архивах идёт речь. GEDIT.desktop.tar.gzaa в zip архиве.
« Последнее редактирование: 30 Апреля 2014, 23:06:24 от adawdp »

Krjd

  • Автор темы
  • Гость
adawdp,
не похоже что tar так умеет
http://superuser.com/questions/71846/tar-extract-discarding-directory-structure
способ проще будет сложно найти
кстати это не очень безопасно, если у файлов будут одинаковые имена..

adawdp

  • Автор темы
  • Гость
D101101, спасибо ещё раз ! Я Всё понял и что я в этот tar втупился! :)
— Вот так всё получается!
Код: (=) [Выделить]
tar -tf GEDIT.desktop.tar.gzaa                               ←‖смотрим содержимое
home/HOME/03_ProgramFileStorage/GEDIT.desktop                ←‖видим три „/“
tar -xzvf GEDIT.desktop.tar.gzaa --strip=3 -C /media/MYCOP   ←‖распаковываем в /media/MYCOP без путей
« Последнее редактирование: 01 Мая 2014, 00:35:45 от adawdp »

 

Страница сгенерирована за 0.037 секунд. Запросов: 23.