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
|