tarコマンドでファイルをバックアップ・リストアするとき、例えば他のOSで全てのファイルをアーカイブして、Knoppixで展開してchrootしてGRUBをインストールして、リストア先のシステムを起動すると、ファイルのオーナーが変わってしまうことがあります。これは同じユーザー名が存在しつつもUIDが異なると、展開時のユーザーのUIDで展開されてしまうためです。
これを防ぐために–numeric-ownerというオプションがあるのですが、これがどう働くのかいまいちよく分かってなかったので、整理するために実験をしてみました。
手順:
1. ファイルをアーカイブする(–numeric-ownerありとなし)
2. UIDを変更した状態で展開する(–numeric-ownerありとなし)
3. UIDを戻してファイルのオーナーがどうなったか調べる
作成時のoption | 展開時のoption | 異なるUIDで展開した場合 | →元のUID戻すと? |
---|---|---|---|
なし | なし | 同じownerのまま | ownerが替わってしまった |
なし | あり | ownerが入れ替わる | 同じownerに戻った |
あり | なし | ownerが入れ替わる | 同じownerに戻った |
あり | あり | ownerが入れ替わる | 同じownerに戻った |
その結果、–numeric-ownerオプションなし/なしの場合の時だけ、ユーザー名とUIDが入れ替わってしまうことがわかりました。いずれかで–numeric-ownerオプションを付けた場合は、ユーザー名ではなくUIDでファイルの展開がされたため、きちんとUIDの情報が保持されているようです。