Tar в Linux и BSD.

Tar в Linux и BSD системах могут оказаться не совместимы друг с другом, это может привести к разного рода ошибкам. Один из самых частых случаев рассмотрим ниже в заметке.

При попытке распаковать созданный на FreeBSD архив в Linux, клиент получал вот такие сообщения:

tar: Ignoring unknown extended header keyword `SCHILY.dev'
tar: Ignoring unknown extended header keyword `SCHILY.ino'
tar: Ignoring unknown extended header keyword `SCHILY.nlink'

tar linux bsd

В данном случае есть несколько вариантов решения вопроса. Первый, самый простой — не делать ничего. Распаковать как есть, проверить всё ли в порядке, и если всё в порядке, продолжить работу. Порадоваться, если всё распаковалось хорошо.

Второй — добавить при распаковке на Linux машине специальные параметры, получив которые архиватор будет игнорировать некоторую информацию. Можно попробовать распаковать, например, так:

# tar --pax-option="delete=SCHILY.*" -xvfz file.tar.gz

Третий — пожалуй, самый верный, но не всегда доступный — использовать идентичные версии tar на Linux и BSD серверах. Для этого:

  • Смотрим какая версия tar установлена на Linux сервере:
# tar --version
tar (GNU tar) 1.26
  • Идём на сервер с FreeBSD и ставим там аналогичную версию:
# mkdir /usr/local/src/
# cd /usr/local/src/
# wget http://ftp.gnu.org/gnu/tar/tar-1.26.tar.bz2
# tar -xjf tar-1.26.tar.bz2
# cd tar-1.26
# FORCE_UNSAFE_CONFIGURE=1 ./configure
# make
# make install
# mv /bin/tar /bin/bsdtar
# ln -s /usr/local/bin/tar /bin/tar

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

Теперь остаётся заново запаковать архив, и можно переносить его на Linux сервер, где он распакуется без проблем и ошибок.

@SysadminNotes | https://sysadmin.pm

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *