执行Macbook的远程备份时,Rsnapshot权限问题


2

我在家用服务器上使用rsnapshot来通过SSH备份Macbook。一切都已配置且正常运行,但是权限存在问题。

由于我的Macbook和家庭服务器上有不同的用户,因此家庭服务器上的备份文件将按以下方式保存:

-rw-------  16  501 dialout  1650 Jun 24 21:09 .bash_history
...

我认为501是与我的Macbook Pro上的用户相关联的ID,并且由于该用户不存在于我的家庭服务器上,因此我只是看到用户ID。我不确定拨出组。

这些权限意味着当我通过网络共享浏览备份的文件时,会遇到权限问题。

是否可以将备份文件保存在我的家庭服务器用户和组下,而不是持久保存macbooks用户和组?如果是这样,对此有何影响?

Answers:


2

听起来这是正在发生的事情:

  • rsnapshot将Mac的数字uid和gid复制到服务器
  • 您的Mac帐户和服务器帐户的uid不同
  • 复制文件的权限不允许您的服务器uid访问它们

有一些可能的解决方案。

解决方案1:使用rsync --usermap--groupmap

rsnapshot使用rsync来完成大部分工作,并且最新版本的rsync可以选择映射uid和gid。我不知道rsnapshot是否可以配置为将这些选项传递给rsync,但是如果可以,则可以解决您的问题。

解决方案2:同步您的用户ID和组ID。

如果您的工作站和服务器运行相同的操作系统,这可能是可能的,但是如果它们的配置已经不同,则可能不值得更改。如果他们运行不同的操作系统,则它们可能具有不兼容的uid分配方案,尽管有可能您只能为用户同步uid。(除非其中一个是Windows,否则根本不可能。)更改帐户uid不会更改任何文件上的所有者ID,因此,您必须单独执行此操作。更改用户的uid没什么大不了的,但是更改服务的uid可能很麻烦。

解决方案3:分开复制步骤

如果在运行rsnapshot之前将所有内容复制到服务器作为一个单独的步骤,则可以使用将使用字符串名称而不是数字uid的程序进行复制。这将转换任何匹配的用户名的uid。 我知道的唯一的双向文件同步工具Unison会做到这一点;它包含在大多数Linux发行版中(但默认情况下未安装),并且可通过MacPorts或作为App Bundle用于macOS 。如果您使用scp复制文件(Windows几乎所有内容都默认包含和安装了scp),则所有者将是登录接收系统的用户。

解决方案3:添加uid / gid转换步骤

您可以在rsnapshot完成后更改uid / gid。如果您只关心一个或两个uid,则可以根据以下答案调整解决方案:

find /your/rsynced/path -user 1000 -exec chown 505 {} \;
find /your/rsynced/path -user 1001 -exec chown 700 {} \;

这将修复您的uid / gid,但会破坏未更改文件的rsnapshots硬链接-rsnapshot不会以任何方式(包括对元数据的更改)硬链接文件。它不会硬链接具有不同所有者的文件,甚至不会具有不同时间戳的文件。(这是rsnapshot使用但未修改的rsync行为。)

当然,您可以添加另一个步骤来重做硬链接。


看起来rsnapshot可以配置为使用rsnapshot.conf中的rsync_long_args选项将--usermap和--groupmap传递给rsync。参见rsnapshot.org/rsnapshot.html
ShadSterling 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.