Назад | Перейти на главную страницу

Сохранение разрешений для файлов и папок с помощью rsync

Я поддерживаю резервную копию своих учетных записей электронной почты с помощью этой команды:

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 и восстановите резервную копию.

man 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 с / от этого пользователя (что подразумевается как уже верное в вашем примере).