Jek (jek_hor) wrote,
Jek
jek_hor

Про линуксы

О том, как безобидный GNU tar может сделать вам большую подлянку...

Представьте себе, что у вас есть два сервера виртуальных машин, и вам надо перетащить корневую ФС со всей ОС одной из виртуалок с одного хоста на другой. Если вы просто сделаете (да-да, из-под root) тар-архив на одной хост-системе, а потом его восстановите на другой — готовьтесь к сюрпризам.

man tar:
"When writing an archive, tar writes the user ID and user name separately. If it can't find a user name (because the user ID is not in ‘/etc/passwd’), then it does not write one. When restoring, it tries to look the name (if one was written) up in ‘/etc/passwd’. If it fails, then it uses the user ID stored in the archive instead. "

Так вот, если у этих двух хостов окажутся разные UID-ы у одинаковых пользователей, то при распаковке он честно проставит принадлежность файлов исходя из имён, а не UID-ов. Соответственно, при загрузке искомой системы вы получите забавные эффекты вида "все файлы postgresql вдруг стали принадлежать www-data".

Так что запомните опцию --numeric-owner и всегда используйте её в случае бэкапов.

inhate, ты чем переносил? :)
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 8 comments