Автор Тема: Особенности работы с tar  (Прочитано 6812 раз)

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Особенности работы с tar
« : 06.10.2015 21:14:57 »
проблем достаточно, но в тоже время их не так много

:-) Одной хватит чтобы за 2 секунды развалить всю систему если в альтах буквально следовать русскому переводу с английского:
# tar --help|grep '\-C,'
  -C, --directory=КАТАЛОГ   перейти в КАТАЛОГ
# LC_ALL=C tar --help|grep '\-C,'
  -C, --directory=DIR        change to directory DIR
# rpm -qf $(which tar)
tar-1.26.90-alt1

Выловлено совершенно случайно.
change - изменять, сменить {cambridge dictionary}
Но никак не перейти.
Буквально:
change to directory DIR - [из|c]менить на каталог DIR [для распаковки]
В контексте -xvf, опция -C применяется для выбора каталога для распаковки содержимого архива. Но никак не для перехода в каталог.

Вот так оно и бывает: ищешь одно, а находишь другое...
« Последнее редактирование: 08.10.2015 07:54:10 от ruslandh »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Особенности tar
« Ответ #1 : 07.10.2015 13:21:30 »
Отправлен баг-репорт на неверный перевод опции tar в help
https://bugzilla.altlinux.org/show_bug.cgi?id=31333

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Особенности tar
« Ответ #2 : 07.10.2015 14:38:29 »
Отправлен баг-репорт на неверный перевод опции tar в help
https://bugzilla.altlinux.org/show_bug.cgi?id=31333

Поступило предложение не исправлять.
Тогда me уберёт у себя к чёртовой матери все русскоязычные мессаги чтобы ничего и никогда не ловить:
$ locale > ~/.i18n
$ sed -i 's/MESSAGES="ru_RU.UTF-8"/MESSAGES="en_US.UTF-8"/' ~/.i18n

Или/и вкрутит алиас EN или RU с полным выносом русской локализации из системы.

У мана однозначное мнение:
$ man tar|col -bfx|sed -n '83,84p'
       -C, --directory DIR
              меняет каталог на указанный
$ LC_ALL=C man tar|col -bfx|sed -n '119,120p'
       -C, --directory DIR
              change to directory DIR
что по смыслу одно и то же.

Теперь вопрос:
- Куда именно после комбинации Esc+i я переместился (перешёл, скриншот 2), если команда pwd до хоткея и после него покажет одно и то же.
- Может быть менял? (каталог на альтернативной панели не переходя никуда)
С многозначительным русским языком со множеством значений одного и того же слова, можно вольно обращаться в литературе, но не в докуменации.
« Последнее редактирование: 07.10.2015 17:23:09 от Speccyfighter »

Оффлайн stranger573

  • Мастер
  • ***
  • Сообщений: 1 554
    • Email
Re: Особенности tar
« Ответ #3 : 07.10.2015 19:15:02 »
У мана однозначное мнение:
$ man tar|col -bfx|sed -n '83,84p'
       -C, --directory DIR
              меняет каталог на указанный
$ LC_ALL=C man tar|col -bfx|sed -n '119,120p'
       -C, --directory DIR
              change to directory DIR
что по смыслу одно и то же.
И тут сразу возникает вопрос — меняет на указанный какой? каталог. Причём из контекста никакого ответа на этот вопрос не следует.

Тем более "перейти в каталог" ни разу не соответствует. Нет, оно, конечно, может быть при извлечении временно переходит в указанный каталог, но сие никак не объясняет смысла параметра.

Там и вовсе лучше привычное для всех архиваторов — извлечь в каталог "DIR".

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Особенности tar
« Ответ #4 : 07.10.2015 23:44:21 »
Там и вовсе лучше привычное для всех архиваторов — извлечь в каталог "DIR".

И это было бы абсолютно однозначно.
Что для help'а правильно.
У 7z и unzip приблизительно так же. Т.е. однозначно.

Короче:
Помню что у 7z опция -o без пробела, но на tar меня замкнуло.
help на опцию tar выдал комментарий после которого на автомате вырвалось: зачем? Тем более под root'ом.
Англоязычный help выдал прямо противоположный комментарий.
Поскольку один help прямо противоречил другому, судьёй для разрешения спора был избран man.
И только после этого, до меня начало доходить предположение, что м.б. переводчик имел в виду алгоритм работы? Но сейчас он меня интересует меньше всего. Ибо root я, и другим быть нельзя.

В общем оно так:
help для меня, это мини-man с набором однозначно трактуемых действий.
А не угадай сам. Тем более под root.

Оффлайн stranger573

  • Мастер
  • ***
  • Сообщений: 1 554
    • Email
Re: Особенности tar
« Ответ #5 : 08.10.2015 00:44:02 »
Там и вовсе лучше привычное для всех архиваторов — извлечь в каталог "DIR".
И это было бы абсолютно однозначно.
   Только тут есть один нюанс — эта опция может назначать каталог для извлечения (при распаковке), и может назначать каталог (или несколько каталогов) из которых брать файлы (при создании архива).
   Корни проблемы растут не из перевода, а из чрезмерного сокращения man-а идущего с пакетом. Что называется — выплеснули в водой младенца. :-)

В более другой документации:
Из http://www.gnu.org/software/tar/manual/tar.html:

`--directory=dir'
`-C dir'

  When this option is specified, tar will change its current directory to
dir before performing any operations. When this option is used during
archive creation, it is order sensitive. See section Changing the Working
Directory.


Из man FreeBSD:

-C directory, --cd directory, --directory directory
  In c and r mode, this changes the directory before adding the
  following files. In x mode, change directories after opening the
  archive but before extracting entries from the archive.


Из man OpenBSD:

-C directory
  This is a positional argument which sets the working directory for the
following files. When extracting, files will be extracted into the specified
directory; when creating, the specified files will be matched from the
directory.

« Последнее редактирование: 08.10.2015 00:55:11 от stranger573 »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Особенности tar
« Ответ #6 : 08.10.2015 03:32:46 »
...

Спасибо за цитаты.

Про gnu.
Это и имел в виду, что изменение директории, это только изменение, а действие в целом зависит от набора других опций.

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

Свои мысли отталкиваясь от Линукс, сначала написал, потом удалил, - цитаты говорят сами за себя.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Особенности tar
« Ответ #7 : 08.10.2015 05:37:42 »
...

Кстати, у нас ман(ы) по tar до предела куцые.
Они не упоминают, в отличие от gnu.org, что для запаковки, при использовании опции -C требуется формат:
$ tar -rf архив.tar -C где что [что что]
$ tar -rf arch-probe5.tar -C ./.elinks bookmarks globhist gotohist
$ tar -tf arch-probe5.tar
bookmarks
globhist
gotohist

Да и косяков в ALT'ах хватает.

gnu.org:
$ tar -c -f jams.tar grape prune -C food cherry
$ tar -c -f foo.tar -C /etc passwd hosts -C /lib libc.a

ALT:
$ tar -cf arch-probe7.tar
tar: Робкий отказ от создания пустого архива
Try 'tar --help' or 'tar --usage' for more information.

При создании пустого архива замена create на append срабатывает:
$ tar -cf arch-probe9.tar
tar: Робкий отказ от создания пустого архива
Try 'tar --help' or 'tar --usage' for more information.
$ tar -rf arch-probe9.tar
$
$ ll arch-probe9.tar
-rw-r--r-- 1 user user 10240 окт  8 05:22 arch-probe9.tar
$ tar -tf arch-probe9.tar
$
$ tar -rf arch-probe9.tar .bashrc
$ tar -tf arch-probe9.tar
.bashrc

Из чего как бы следует, что при создании архива без добавления файлов, применять опцию -c, с текущей версией tar, в ALT'ах не рекомендуется.
В скриптах тем более.
Иначе будет вылет с ошибкой.
« Последнее редактирование: 08.10.2015 06:24:42 от Speccyfighter »

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 316
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: Особенности tar
« Ответ #8 : 08.10.2015 05:42:20 »
tar: недопустимый параметр -- «�»
Что-то мне подсказывает, что у вас кириилическая с, а не латинская c ?

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 316
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: Особенности tar
« Ответ #9 : 08.10.2015 05:43:26 »
$ tar -cf arch-probe9.tar
tar: Робкий отказ от создания пустого архива
Try 'tar --help' or 'tar --usage' for more information.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Особенности tar
« Ответ #10 : 08.10.2015 06:05:03 »
tar: недопустимый параметр -- «�»
Что-то мне подсказывает, что у вас кириилическая с, а не латинская c ?

:-) Спасибо, мой слепой глаз, исправил

$ tar --create --file=empty-archive.tar
tar: Робкий отказ от создания пустого архива
Try 'tar --help' or 'tar --usage' for more information.
$ tar --append --file=empty-archive.tar

$ ls empty-archive.tar
empty-archive.tar

tar робко, но послал:
$ tar --create --file=myarch.tar
tar: Робкий отказ от создания пустого архива
Try 'tar --help' or 'tar --usage' for more information.
« Последнее редактирование: 08.10.2015 06:26:09 от Speccyfighter »

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 316
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: Особенности tar
« Ответ #11 : 08.10.2015 06:20:22 »
$ tar -cf arch-probe7.tar .bash_history -C ./tmp
$ ls -l  arch-probe7.tar
-rw-r--r-- 1 user user 10240 окт  8 06:17 arch-probe7.tar

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 316
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: Особенности tar
« Ответ #12 : 08.10.2015 06:32:53 »
$ pwd
/home/writer/test1
$ tar -cf arch-probe7.tar $HOME/.bash_history -C $HOME/tmp
tar: Удаляется начальный `/' из имен объектов
$ tar -cf arch-probe7.tar $HOME/.bash_history -C /tmp
tar: Удаляется начальный `/' из имен объектов
$ pwd
/home/writer/test1
$ tar -tf arch-probe7.tar
home/writer/.bash_history
$ pwd
/home/writer/test1
$ ls -l /tmp/a*
ls: невозможно получить доступ к /tmp/a*: Нет такого файла или каталога
$ ls -l $HOME/tmp/a*
ls: невозможно получить доступ к /home/writer/tmp/a*: Нет такого файла или каталога

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 316
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: Особенности tar
« Ответ #13 : 08.10.2015 06:37:30 »
man -a tar

Цитировать
EXAMPLES
       tar -xvf foo.tar
              verbosely extract foo.tar

       tar -xzf foo.tar.gz
              extract gzipped foo.tar.gz

       tar -cjf foo.tar.bz2 bar/
              create   bzipped   tar  archive  of  the  directory  bar  called
              foo.tar.bz2

       tar -xjf foo.tar.bz2 -C bar/
              extract bzipped foo.tar.bz2 after changing directory to bar

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 316
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: Особенности tar
« Ответ #14 : 08.10.2015 06:41:09 »
Т.e. в примерах приведено только одно применение параметра -С:
   tar -xjf foo.tar.bz2 -C bar/извлечь сжатые bzip'ом foo.tar.bz2 после изменения каталога на bar