Я поддерживаю резервную копию своих учетных записей электронной почты с помощью этой команды:
sudo rsync -av --delete --progress -e "ssh -p pNumber" --rsync-path="/usr/bin/rsync" /vmail/ user@my_backup_server:/home/user/backups/vmail/
Источник: большинство почтовых папок принадлежат пользователю. vmail
.
Место назначения (сервер резервного копирования): в системе нет пользователя с именем vmail
.
Мой вопрос, сохранит ли указанная выше команда права доступа к файлам и каталогам, даже если на конечном компьютере нет пользователя с именем vmail
? Можно ли полностью восстановить файлы и разрешения из места назначения в источник, даже если имена пользователей между двумя машинами не совпадают (некоторые отсутствуют на сервере резервного копирования).
Как rsync сохраняет права собственности на файлы, зависит от двух вещей:
Вы суперпользователь (root) на месте назначения?
В противном случае вы не сможете создавать файлы и каталоги с другим пользователем, кроме вашего собственного.
Какие флаги опций вы используете?
В -a
вариант включает -o, --owner
, -g, --group
варианты, предназначенные для сохранения права собственности.
На уровне файловой системы права собственности пользователя и группы хранятся в UID, соответственно. Номера GID. Когда нет сопоставления UID / GID с именами пользователей и именами групп, инструменты вместо этого просто отображают эти числа.
Пользователи и группы с одинаковыми именами могут иметь разные номера UID / GID в разных системах.
По умолчанию rsync будет пытаться сопоставить право собственности по имени пользователя, соответственно. Название группы. Другими словами, когда пользователь vmail
является владельцем файла в источнике, rsync заставит пользователя vmail
также владелец в пункте назначения (даже если у них разные номера UID / GID).
Обычно это довольно устойчиво и наиболее предсказуемо для людей, поскольку мы обычно не рассматриваем право собственности в форме номеров UID / GID.
Когда нет подходящего пользователя vmail
присутствует в удаленном месте назначения, то произойдет резервный сценарий. Затем Rsync сохранит фактические базовые номера UID / GID и номер UID vmail
Пользователь в источнике будет использоваться для установки владельца.
Это должно сохранить правильное владение, когда вы измените направление rsync и восстановите резервную копию.
-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). Without 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).
--numeric-ids
With this option rsync will transfer numeric group and user IDs rather than using user and group names
and mapping them at both ends.
By default rsync will use the username and groupname to determine what ownership to give files. The
special uid 0 and the special group 0 are never mapped via user/group names even if the --numeric-ids
option is not specified.
If a user or group has no name on the source system or it has no match on the destination system, then
the numeric ID from the source system is used instead. See also the comments on the "use chroot" set‐
ting in the rsyncd.conf manpage for information on how the chroot setting affects rsync’s ability to
look up the names of the users and groups and what you can do about it.
какой rsync
copy - это числовой идентификатор пользователя файла, независимо от того, существует ли он в целевой системе. Если пользователя с таким идентификатором не существует, ls
и т. д. просто покажет это число вместо имени. Если этот идентификатор пользователя принадлежит другому имени пользователя в целевой системе, этот пользователь теперь будет владельцем файла.
В этом сценарии резервное копирование и восстановление будут работать без проблем.
Конкретно в вашем случае настоящая проблема возникает, когда приходит время восстановить файлы. Ключевым моментом было бы указать желаемого владельца / группу, когда вы вернете файлы. --chown=vmail:vmail
Предполагая, что вы уже создали пользовательский vmail на новом компьютере, на котором вы будете выполнять восстановление, вы должны выдать что-то вроде следующего:
sudo rsync -av --chown=vmail:vmail --force --delete --progress user@my_backup_server:/home/user/backups/vmail/ /vmail/
Это означает, что не имеет значения, кому принадлежат файлы на сервере резервного копирования, если вы можете выполнить rsync с / от этого пользователя (что подразумевается как уже верное в вашем примере).