Jon LaBadie wrote:
> On Tue, Jan 31, 2006 at 04:48:31PM +0100, Geert Uytterhoeven wrote:
>> On Tue, 31 Jan 2006, Jon LaBadie wrote:
>>> On Tue, Jan 31, 2006 at 10:56:13AM +0100, Geert Uytterhoeven wrote:
>>>> I saw a similar thing when the disk of my backup server died last month.
>>>> The machine ran Debian testing, and I used an Ubuntu Live CD (the Knoppix 
>>>> I had
>>>> lying around didn't support SATA) to do the restore.
>>>>
>>>> After the restore, some services didn't work because some configuration 
>>>> files
>>>> were owned by the wrong user.
>>>>
>>>> I ended up comparing the uids and gids in /etc/passwd and /etc/group on the
>>>> restored image and on the Ubuntu Live CD, and for all differences, manually
>>>> verifying all uids and gids of all restored files and directories. 
>>>> Fortunately
>>>> this took much less time than expected :-)
>>>>
>>>> I noticed one very strange thing though: uids and gids were not changed in 
>>>> a
>>>> consistent way: some files had the incorrect uid or gid from Ubuntu, while
>>>> other related files that should have the same uid/gid had the one from the
>>>> original system. So sometimes uids/gids were remapped during restore, but 
>>>> not
>>>> always...
>>> My understanding, subject to correction, is that by default guntar
>>> restores by trying to match text names (user and group) between the
>>> archive and the recovery system.  If a match is found, then the
>>> restore is to the numeric uid/gid of the recovery system, thus
>>> matching the names, but not the necessarily the numeric ids in the
>>> archive.  If matching text names are not found, then the archive's
>>> numeric ids are used.
>> Exactly my understanding as well.
>>
>>> So you could easily get a real hodge-podge of names and numeric ids
>>> by recovering to a different system.
>>>
>>>    Archived System       Recovery System        Result of Recovery
>>>      name   id #          name     id #            name    id #
>>>
>>>      AAA    111           AAA      111              AAA    111
>>>      BBB    222           BBB      234              BBB    234
>>>      CCC    333          (no CCC) (no 333)         (none)  333
>>>      DDD    444          (no DDD) (EEE is 444)      EEE    444
>>>
>>> Note, 3 of the 4 cases result in a recovery that doesn't match the
>>> originally archived system.  May or may not be what was wanted.
>> But as soon as /etc/passwd and /etc/group have been restored from backup as
>> well and you boot from the restored medium, CCC and DDD become correct again,
>> right?
>>
>> But this is not what I saw. Some files that should be owned by user BBB had
>> uid 222, while others had 234. It was not consistent.
>>
>>> If the --numeric-owner option was used, only the second case would
>>> change, the recovered result using an id of "222" rather than "234"
>>> with a text name of either "none" or whatever name matchs id "222".
>> Which is what you want (assumed you backup OS files, instead of doing a clean
>> reinstall of the OS)...
>>
> 
> In such a case, a temporary workaround during restore could be to wrap gnutar:
> 
>       # mv /bin/tar /bin/tar.real
>       # echo 'exec /bin/tar --numeric-owner "$@"' > /bin/tar
>       # chmod +x /bin/tar
> 
Since you renamed the real /bin/tar, perhaps you meant:
echo 'exec /bin/tar.real --numeric-owner "$@"' > /bin/tar

Also, a reminder to restore the original after you're done might be
worth noting (as someone whose done tricks like that in the past and
forgot to undo them).

Frank

Reply via email to