本文介绍如何通过TrueNAS上的rsync任务,以SSH的连接的方式,将远程VPS主机上的数据备份到NAS中。

之前对网站进行备份,我是通过winscp连接到vps,将站点目录打包,再下载到本地。这种方式比较原始,而且麻烦。于是想到利用TrueNAS中的rsync任务对网站内容进行自动备份。现将过程记录下来,分享给大家。

本教程的远程系统为Ubuntu 20.04;本地系统为TrueNAS 12.0 U2.1。

1.在TrueNAS主机上生成密钥对(在TrueNAS系统中操作)

truenas# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):                      //直接按回车保存到默认目录
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):                                   //直接按回车,不要创建密码
Enter same passphrase again:                                                  //直接按回车
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:NZMgbuPvTHeEqi3SA/U5wW8un6AWrx8ZsRQdbJJHmR4 tester@truenas.local
The key's randomart image is:
+---[RSA 2048]----+
|      . o=o+     |
|     . .ooE.     |
|      +.o==.     |
|     o.oo+.+     |
|     ...S+. .    |
|    . ..++o.     |
|     o oB+. .    |
|    . =Bo+.o     |
|     o+==oo      |
+----[SHA256]-----+

现在可以在“/root/.ssh/”目录下看到两个文件,一个是私钥“id_rsa”,一个是公钥“id_rsa.pub”。

2.将远程主机地址添加到known_hosts(在TrueNAS系统中操作)

ssh-keyscan -t rsa 192.168.2.6 >> /root/.ssh/known_hosts      //这里要将192.168.2.6改成你的远程主机IP

3.将公钥导入远程主机(在远程系统中操作)

cd /root/.ssh                                     //如果没有.ssh目录,就使用自己创建一个
touch authorized_keys
chmod 600 authorized_keys
nano authorized_keys
//将TrueNAS中生成的id_rsa.pub里的内容复制到这里

现在可以来测试一下连接

ssh -T -o StrictHostKeyChecking=no root@192.168.2.6 
//如果你的ssh端口不是默认的22,比如是12345,则可以使用以下命令
ssh -T -p 12345 StrictHostKeyChecking=no root@192.168.2.6

4.启用远程主机上的rsync服务(在远程系统中操作)

ubuntu 20.04中已默认安装rsync,不过没有启动。如果你的系统上没有,自己安装一个。

apt install rsync          //如果系统上没有rsync则自己安装一个
systemctl enable rsync
systemctl start rsync

5.添加计划任务(在TrueNAS的web界面中操作)

转到【任务】-【Rsync任务】-【添加】,如下图所示

rsync-task
rsync-task

其中远程路径那里需要自己手动输入,点击目录展开的是本地的目录,不知道是不是一个BUG。另外提示一点,方向千万不要选错了!!!

保存之后在【任务】-【Rsync任务】界面中展开刚添加的任务,点击【立即运行】,即可立即同步。