TrueNAS上使用rsync任务备份远程VPS上的数据
本文介绍如何通过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任务】-【添加】,如下图所示

其中远程路径那里需要自己手动输入,点击目录展开的是本地的目录,不知道是不是一个BUG。另外提示一点,方向千万不要选错了!!!
保存之后在【任务】-【Rsync任务】界面中展开刚添加的任务,点击【立即运行】,即可立即同步。
truenas\freenas遵从什么开源协议吗?我可以像修改linux源码一样,把修改后的freenas产品化吗
我也是从网上查的:truenas遵从FreeBSD开源协议。BSD开源协议(original BSD license、FreeBSD license、Original BSD license)是一个给予使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。但”为所欲为”的前提是当你发布使用了BSD协议的代码,或者以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:1.如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。2.如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。3.不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。