?

Log in

No account? Create an account

Previous Entry | Next Entry

Про линуксы

О том, как безобидный 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, ты чем переносил? :)

Comments

( 8 comments — Leave a comment )
kiryl
Feb. 12th, 2014 12:32 am (UTC)
Правильный tar -- это cpio ;)
inhate
Feb. 12th, 2014 04:06 am (UTC)
последний раз - rsync -avz
jek_hor
Feb. 12th, 2014 07:01 am (UTC)
Ну там ровно то же самое, вот и причина:

-o, --owner
This option causes rsync to set the owner of the destination file to be the same as the source file, but only if the receiving rsync is being run as the super-user (see also the --super and --fake-super options). With‐
out this option, the owner of new and/or transferred files are set to the invoking user on the receiving side.

The preservation of ownership will associate matching names by default, but may fall back to using the ID number in some circumstances (see also the --numeric-ids option for a full discussion).
poligraph
Feb. 12th, 2014 10:27 am (UTC)
+1
jek_hor
Feb. 12th, 2014 12:42 pm (UTC)
Это и была причина фейла :)
measles
Feb. 12th, 2014 07:43 am (UTC)
Жэня, а я калі пераязджаў у свой час з аднаго дыстра на другі, то як раз так і зрабіў. А як раз лічбавы UID карыстальніка крыху змяніўся. Таксама было цікава і пазнавальна.
abbra
Feb. 12th, 2014 09:15 am (UTC)
cpio же. У tar есть и другие проблемы, например, обрезание имен пользователей и групп для совместимости с HP UX.
jek_hor
Feb. 12th, 2014 12:42 pm (UTC)
Угу. Проверил по коду — лишними интеллектом и инициативностью не страдает.
( 8 comments — Leave a comment )