在尝试解决这个问题几天后,我想在这里寻求帮助:
我想使用 rsnapshot 进行备份,它通常在服务器上运行并管理本地备份。就我而言,我想在我的计算机上运行 rsnapshot 并让 rsnapshot 管理我在外部硬盘驱动器上的备份。这个外部硬盘连接到我的树莓派并使用以下命令安装到我的计算机上:
sudo sshfs -o default_permissions,allow_other,idmap=user,IdentityFile=/home/user/.ssh/id_rsa pi@192.168.0.1:/mnt/externelHdd /mnt/backupHdd
这里,/mnt/backupHdd 是 rsnapshots 备份目录的本地根。
此外,我想将外部硬盘驱动器直接连接到我的计算机上以进行更大的备份作业。为此,我编写了一个脚本,它使用上层命令在本地或通过网络安装外部硬盘驱动器。之后,它使用 .rsnapshot 启动 rsnapshot 作业sudo rsnapshot daily
。当硬盘在本地连接时,一切正常。当它通过 sshfs 连接时,我收到权限被拒绝的错误。
当文件/目录是通过物理连接(不同用户:本地和 rasppi)创建时,Rsnapshot 显然不允许管理每个 sshfs 的文件。我想与选项来解决这个allow_other
和idmap=user
,但我认为还有更多的事情要做。所以我问你们:我如何授予 rsnapshot 的权限?
谢谢你的帮助!
编辑:
我收到以下错误:
/bin/cp: cannot create directory '/mnt/backupHdd/daily.1': Permission denied
----------------------------------------------------------------------------
rsnapshot encountered an error! The program was invoked with these options:
/usr/bin/rsnapshot daily
----------------------------------------------------------------------------
ERROR: /bin/cp -al /mnt/backupHdd/daily.0 /mnt/backupHdd/daily.1 failed (result 256, exit status 1).
ERROR: Error! cp_al("/mnt/backupHdd/daily.0/", "/mnt/backupHdd/daily.1/")
Daily.0 是在硬盘连接到我的本地计算机时创建的。Daily.1 应该使用我的硬盘安装在 sshfs 上创建。
我假设你以 root 身份运行 rsnapshot,并且 root 拥有远程备份目录。该命令:
sudo sshfs -o default_permissions,allow_other,idmap=user,IdentityFile=/home/user/.ssh/id_rsa pi@192.168.0.1:/mnt/externelHdd /mnt/backupHdd
不会像我认为的那样成功。即使你sudo
在连接的本地端使用,你仍然以“pi”身份进行 SSH 连接,这意味着在连接的远端所做的一切都是由用户 pi 完成的。没有选择sshfs
可以改变这个事实。你需要启用 root 登录,然后以 root 身份或至少某些对该驱动器具有完全 R/W 访问权限的用户身份 ssh 登录。
我认为这与 root 权限有关。这就是为什么我试图通过添加
PermitRootLogin yes
到我的 pi 上的 /etc/ssh/sshd_config来允许 root 用户访问用户pi。这并没有解决它。不过我想出了另一种方法,不确定这是否是一个好的解决方案:我将我的公钥添加到我的 pi 上的 /root/.ssh/authorized_keys 。现在我可以使用 root@IP sshfs 并且一切正常...