我多年来一直使用 rsync 在 Server1 上保留 /home/User1 (Client1) 的备份副本(在文件夹 /mnt/Server1/Backup 中)。这些不是生产机器。此文件夹在启动时通过 NFS 挂载在 /mnt/Server1/Backup 文件夹中的 Client1 上(因此 Server1 上的 /mnt/Server1/Backup 与 Client1 上的 NFS 一起挂载在 /mnt/Server1/Backup 中)。
在两台机器上,/mnt/Server1/Backup 属于 User1/Group1,权限为 770。
我在 Client1 上安装了 rsnapshot,目的是让它每天备份到文件夹 (/mnt/Server1/Backup) 中。 User1 已存在于 Client1 和 Server1 上,并且可以使用密钥且无需密码进行 SSH。
我已将以下内容添加到 /etc/rsnapshot.conf 中:
##############################
### SNAPSHOT ROOT DIRECTORY ##
##############################
snapshot_root /mnt/Server1/Backup/
##############################
### BACKUP POINTS/ SCRIPTS ###
##############################
# LOCALHOST
backup /home/User1 Client/
当我启动“rsnapshot configtest”时,我得到“语法正常”。
当我运行“rsnapshot -t alpha”时,我得到以下信息:
[dom ott 14, 01:12 ][user1@client1:~]rsnapshot -t alpha
echo 23033 > /var/run/rsnapshot.pid
mkdir -m 0755 -p /mnt/Server1/Backup/rsnapshot/alpha.0/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
/home/Client1/ /mnt/Server1/Backup/rsnapshot/alpha.0/Client1/
touch /mnt/Server1/Backup/rsnapshot/alpha.0/
[dom ott 14, 01:12 ][user1@client1:~]
似乎一切都很好。但是,当我在没有选项的情况下启动时,我得到以下信息:
[dom ott 14, 01:12 ][user1@client1:~]rsnapshot alpha
----------------------------------------------------------------------------
rsnapshot encountered an error! The program was invoked with these options:
/usr/bin/rsnapshot alpha
----------------------------------------------------------------------------
ERROR: Could not write lockfile /var/run/rsnapshot.pid: Permission denied
rsnapshot 正在抱怨,因为它没有足够的权限在 Client1 的主文件系统上写入 PID。
我认为我不应该使用 sudo 否则如何创建一个 cronjob 而不询问密码?
我可以使用临时 debian 用户“备份”...但是如何解决 PID 问题?
答案1
事实上,sudo 选项本身不起作用,因为它说无法在 /mnt/Server1/Backup 文件夹上写入
[dom ott 14, 01:15 ][antonio@gaia:~]sudo rsnapshot alpha
[sudo] password di User1:
----------------------------------------------------------------------------
rsnapshot encountered an error! The program was invoked with these options:
/usr/bin/rsnapshot alpha
----------------------------------------------------------------------------
ERROR: Could not mkpath("/mnt/Server1/Backup/rsnapshot/alpha.0/", 0, 0755);
我找到了一个解决方法。 rsnapshot 有一个选项可以设置 PID 文件的写入位置。我是这样设置的:
lockfile /mnt/Server1/Backup/rsnapshot
我还将备份组分配给了上述文件夹。最后,我还意识到 rsnapshot 甚至没有使用 SSH,因为我通过 NFS 将远程文件夹安装在 Client1 上。