我正在将我的基于Linux的networking服务器备份到运行FreeBSD的NAS上。 我在FreeBSD上创build了一个备份用户,并使用以下命令在本地(web服务器)上以root身份运行rsync:
rsync -avz / hsphere / [email protected]:/mnt/tank/web_backup/web01.webhost.net
它适用于所有由root拥有的目录,但是当它开始备份普通用户拥有的目录时,我得到权限被拒绝的错误。
rsync:recv_generator:mkdir“/mnt/tank/web_backup/web01.webhost.net/hsphere/local/home/username/username.com”失败:权限被拒绝(13)
我猜测这是因为“-a”试图保留原始文件的所有权,并且由于这些用户不存在于远程服务器上,所以它拒绝了它。 我试图运行rsync没有-o -g和-p标志认为会解决它,但我得到同样的错误。
rsync -rltDz / hsphere / [email protected]:/mnt/tank/web_backup/web01.webhost.net
如果我使用root用于远程NAS的rsync,它确实成功了,但我宁愿不必在NAS上使用root,如果我能避免它,因为它创build了一个安全漏洞。 freebsd框中的“backup_user”在轮组中,这应该给他足够的权限。
有关如何进行的任何build议?
你可能想尝试--fake-super 。 从rsync 手册页 :
--fake-super
启用此选项时,rsync通过附加到每个文件的特殊扩展属性(根据需要)保存/恢复特权属性来模拟超级用户活动。 这包括文件的所有者和组(如果它不是默认的),文件的设备信息(设备和特殊文件被创build为空文本文件),以及任何我们不允许在真实文件上设置的权限位(例如,为了安全起见,真正的文件得到我们的帮助),或者会限制所有者的访问权限(因为真正的超级用户总是可以访问/更改文件,所以我们创build的文件总是可以由创build用户访问/更改)。
在你的情况下,因为你想在远端使用--fake-super ,你需要通过--rsync-path来调用它,例如:
rsync -avz --rsync-path='rsync --fake-super' /source/ backupuser@remote:/dest/
从备份恢复时,还需要确保--fake-super始终在存储备份的系统上生效。