刚开始使用,在Ubuntu 14.04(源计算机,因为已更新到 Ubuntu 16.04)znapzend
上编译良好。目标计算机是 Ubuntu 16.04(“备份服务器”)。我已经使用/设置了一个无密码的 ssh 密钥对。我可以不用密码就正常使用。问题是,由于某种原因似乎无法访问备份服务器。两台机器上的 mbuffer 都处于 状态。这是我在源机器上运行的命令和输出:ssh-keygen
ssh-copy-id [destination]
ssh backupserver
znapzend
/usr/bin/mbuffer
znapzendzetup
sudo znapzendzetup create --recursive --mbuffer=/usr/bin/mbuffer --tsformat='%Y-%m-%d-%H%M%S' SRC '1y=>1d' pool/Documents DST '1y=>1d' jon@backupserver:pool/Documents
Host key verification failed.
Host key verification failed.
*** WARNING: executable '/usr/bin/mbuffer' does not exist on jon@backupserver
*** backup plan: pool/Documents ***
dst_0 = jon@backupserver:pool/Documents
dst_0_plan = 1year=>1day
*** WARNING: destination 'jon@backupserver:pool/Documents' does not exist, will be ignored! ***
enabled = on
mbuffer = /usr/bin/mbuffer
mbuffer_size = 1G
post_znap_cmd = off
pre_znap_cmd = off
recursive = on
src = pool/Documents
src_plan = 1year=>1day
tsformat = %Y-%m-%d-%H%M%S
Do you want to save this backup set [y/N]?
感谢您提供的任何见解!
更新 #1
我得到的是:
Host key verification failed.
或者
Permission denied the ZFS utilities must be run as root.
取决于我是否使用 sudo 运行 znapzendzetup,或者在命令中使用 --sudo:
sudo znapzendzetup create ...
或者
znapzendzetup create --sudo ...
我将这一行添加到 /etc/sudoers(通过 visudo):
jon ALL=(ALL) NOPASSWD:ALL
并在主机和目标机器上执行此行:
sudo zfs allow -u jon create,mount,send,receive,snapshot,destroy pool/Documents
我可以尝试启用无密码 root 登录,但我明白不建议这么做。谢谢您的关注!
更新 #2
我通过更改目标计算机上的 /etc/ssh/sshd_confg 中的以下行来启用通过 ssh 进行的远程 root 登录:
#PermitRootLogin prohibit-password
PermitRootLogin yes
然后,在源机器上:
sudo passwd root
su
ssh-keygen
ssh-copy-id BACKUPSERVER
znapzend 命令现在可以作为 sudo 工作,并且不需要 --sudo 参数!
接下来,我启动了一个 znapzend 命令,输出如下:
jon@FILESERVER:~$ sudo znapzend --debug --runonce=pool/Documents
[Wed Apr 27 17:54:42 2016] [info] znapzend (PID=6388) starting up ...
[Wed Apr 27 17:54:42 2016] [info] refreshing backup plans...
[Wed Apr 27 17:54:42 2016] [info] found a valid backup plan for pool/Documents...
[Wed Apr 27 17:54:42 2016] [info] znapzend (PID=6388) initialized -- resuming normal operations.
[Wed Apr 27 17:54:42 2016] [debug] snapshot worker for pool/Documents spawned (6391)
[Wed Apr 27 17:54:42 2016] [info] creating snapshot on pool/Documents
# zfs snapshot pool/Documents@2016-04-27-175442
[Wed Apr 27 17:54:42 2016] [debug] snapshot worker for pool/Documents done (6391)
[Wed Apr 27 17:54:42 2016] [debug] send/receive worker for pool/Documents spawned (6393)
[Wed Apr 27 17:54:42 2016] [info] starting work on backupSet pool/Documents
# zfs list -H -o name -t snapshot -s creation -d 1 pool/Documents
[Wed Apr 27 17:54:42 2016] [debug] cleaning up snapshots on pool/Documents
# zfs destroy pool/Documents@2016-04-27-174027
[Wed Apr 27 17:54:43 2016] [info] done with backupset pool/Documents in 1 seconds
[Wed Apr 27 17:54:43 2016] [debug] send/receive worker for pool/Documents done (6393)
它似乎已成功运行,但到目前为止,它尚未将数据集备份到目标。它什么时候复制文件?
另外,仅供参考,我添加了 znapzend 作为服务:
sudo cp ~/znapzend-0.15.5/init/znapzend.service /etc/systemd/system
sudo chown root:root /etc/systemd/system/znapzend.service
systemctl enable znapzend.service
sudo systemctl enable znapzend.service
sudo systemctl start znapzend.service
sudo service znapzend status
谢谢!
更新 #3
好的,我现在已经解决了这个问题。我没有在目标机器上设置使用“root”登录的配置,这导致发送/接收无法运行。这是我更新的 znapzendzetup 命令:
sudo znapzendzetup create --mbuffer=/usr/bin/mbuffer --tsformat='%Y-%m-%d-%H%M%S' SRC '7d=>1h,1y=>1d' pool/Documents DST '7d=>1h,1y=>1d' root@BACKUPSERVER:pool/Documents
备份在以下之后成功完成:
sudo znapzend --debug --runonce=pool/Documents
感谢这个出色的 ZFS 快照+备份工具!!!
答案1
由于您正在使用,sudo
我假设您设置的密钥对于正确的用户无效...尝试
sudo ssh backuphost ls
验证你的设置
答案2
Tobi 为我指明了正确的方向(谢谢!)。我的解决方案是通过 ssh 启用无密码 root 登录,这可能不是理想的选择,但我在家庭局域网中,所以应该没问题。问题是,出于某种原因,我无法让非 root 用户通过 ssh 使用 sudo 运行 zfs 命令,即使无密码 ssh 登录可以完全以该非 root 用户身份运行。'znapzendzetup create --sudo ...' 可以工作,但 'znapzend --noaction --debug ' 给出:'权限被拒绝,ZFS 实用程序必须以 root 身份运行'出于某种原因(我猜想 znapzend 命令没有 --sudo 选项)。因此我设置了 ssh 登录为 root(更新 #2)。为了检查它,我做了:
sudo ssh BACUPSERVER 'zfs list'
然后我必须记住将 znapzendzetup 命令更改为以 root 身份登录(请参阅更新 #3):
sudo znapzendzetup ... root@BACKUPSERVER:pool/Documents
昨晚我为所有三个数据集添加了“1 周=>30 分钟”快照间隔,今天早上它们已完美备份到我的备份服务器。太棒了!