Nepoužíváte -numeric-ids
a/nebo -fake-super
pro vaše zálohy (a obnovení). Pokud upravíte rsync
povel trochu, mapování se uloží a obnoví správně.
V těchto příkladech -M
říká rsync
pro použití další možnosti, tedy podvržení, na vzdálené straně připojení. Dalším vedlejším efektem je, že nepotřebujete vzdálenou stranu (kde jsou uloženy zálohy) ke spuštění jako root
Tím se zálohy přesunou z klienta na server záloh
sudo rsync -azh -e 'ssh -pNNNN' --stats --delete --numeric-ids -M--fake-super --exclude-from="${exc_path}" "${src_path}" "${dst_addr}:${dst_path}"
To by vytáhlo zálohy z klienta (tj. obnovilo)
sudo rsync -azh -e 'ssh -pNNNN' --stats --delete --numeric-ids -M--fake-super --exclude-from="${exc_path}" "${dst_addr}:${dst_path}" "${src_path}"
A toto, spuštěné na serveru záloh, přesune zálohy klientovi (tj. obnoví)
sudo rsync -azh -e 'ssh -pNNNN' --stats --delete --numeric-ids --fake-super "${dst_path}" "${src_host}:${src_path}"
Každý soubor ukládá informace o svém vlastníkovi samostatně, neexistuje žádná datová struktura pro indexování souborů na základě jejich vlastníků. Takže, ať děláte cokoli, budete muset hledat soubory a měnit UID u každého z nich jednotlivě. Naštěstí to není příliš těžké; toto by mělo fungovat:
find "$dir" -user olduser -exec chown newuser {} +
Samozřejmě by bylo lepší změnit systém zálohování tak, aby ukládal (a obnovoval) správná UID, zvláště pokud jste možná zálohovali soubory, které patří více uživatelům.