当前服务器上了满速的nvme(970 EVO Plus(MZ-V7S1T0B),但却不敢把重要应用(比如gitlab)放在上面跑,因为这玩意一旦哪天罢了工,数据的可恢复性为0。
或许我们可以使用nvme的raid1卡来解决这个问题,但又不好确认raid1卡是否能成功的被vmware esxi识别,同时价格也是需要考虑的因素。
顺便说一句:970 EVO Plus在vmware esxi 6.7.0上表现良好,即插即用。
rsync
而rsync恰好能够解决这个问题,基本的思路很简单:
- 在nas端开启rsync服务
- 在客户端启用rsync,并设置需要同步的文件夹
nas端
nas我们可以使用群晖或是FreeNAS,或是使用FreeBSD的zfs系统来打造。本文以群晖为例。
群晖的官方网站有关于如何启用rsync的说明这为我们实现此功能降低了难度。
按上文我们创建一个备案专用文件夹(比如bak),然后创建一个只有当前文件夹读写权限的用户(用户组建议先选择为管理员,避免一些ssh认证问题),设置一个复杂点的密码,在应用设置上,仅勾选rsync。
另外建议使用个非22端口,这个应该是更安全一点。
客户端
nas就绪后,我们开始在客户端上安装rsync服务。
debian
系统不重要,重要的是是否可以成功安装rsync服务。
# su -
# bash
# apt install sshpass
# pat install rsync
接下来我们先使用ssh
连接一下主机,避免产生rsync Host key verification failed
错误。
# ssh -p yoursshport rsyncuser@your.nas.domain.name
安装完毕后,开始尝试进行同步:
# sshpass -p "rsyncpassword" rsync -av -e 'ssh -p yoursshport' --progress /home/panjie rsyncuser@your.nas.domain.name::bak/foldername
FreeBSD
首先按官网指导安装rsync
客户端
[root@nfs /yzpool/data/hosts]# pkg install sshpass
[root@nfs /yzpool/data/hosts]# pkg install rsync
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
--
Some scripts provided by rsync such as rrsync requires
python which is not installed by default
最后提示我们还需要安装python
# pkg install python
定时任务
rsync有个非常大的优点在于其同步的时候,会进行差异化同步,这极好的保证了备份的效率。
结合定时任务,我们便可以实现按一定周期进行同步的目的。
debain
我先建议个批处理文件(比如为: rsync.sh
),并保存在/home/username
下,内容就是我们前面执行的命令:
#!/bin/bash
sshpass -p "rsyncpassword" rsync -av -e 'ssh -p yoursshport' --progress /home/panjie rsyncuser@your.nas.domain.name::bak/foldername \
> /home/panjie/rsync.log
echo "done at $(date)" >> /home/panjie/rsync.log
cat /home/panjie/rsync.log
保存后为其增加执行权限:#chmod -x rsync.sh
,然后执行一遍看是否报错:#./rsync.sh
。没有错误的话把nas中的同步用户用户组设置为普通用户后再执行一遍#./rsync.sh
。
最后执行crontab -e
便可以设置定时任务了:
# crontab -e
然后输入以下内容:
0 */1 * * * /home/panjie/rsync.sh
上述定义了一个每1小时执行一次的策略。可以借助crontab.gura来快速生成相关的计划任务。
FreeBSD
我先建议个批处理文件(比如为: rsync.sh
),并保存在/home/username
下,内容就是我们前面执行的命令:
#!/bin/bash
/usr/local/bin/sshpass -p "rsyncpassword" /usr/local/bin/rsync -av -e 'ssh -p yoursshport' --progress /home/panjie rsyncuser@your.nas.domain.name::bak/foldername \
> /home/panjie/rsync.log
echo "done at $(date)" >> /home/panjie/rsync.log
cat /home/panjie/rsync.log
注意:一定在要.sh中使用命令的全路径,所以其不会自动执行成功。如果我们只为sshpass使用了全路径,却忘了给rsync全路径,则会出现Failed to run command: No such file or directory
错误.
保存后为其增加执行权限:#chmod -x rsync.sh
,然后执行一遍看是否报错:#./rsync.sh
。没有错误的话把nas中的同步用户用户组设置为普通用户后再执行一遍#./rsync.sh
。
最后执行crontab -e
便可以设置定时任务了:
# crontab -e
然后输入以下内容:
0 */1 * * * /home/panjie/rsync.sh
上述定义了一个每1小时执行一次的策略。可以借助crontab.gura来快速生成相关的计划任务。
FreeBSD系统要求自动任务中的命令是全路径,为了保证计划任务顺利被执行,需要使用$ env -i SHELL=/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin HOME=/home/panjie NAME=panjie /home/panjie/rsync.sh
来测试。注意上述命令中的panjie
应该换成你自己的用户名。
本机备份
其rsync
虽然是remote rsync
,但是也可以适用于本地文件夹备份,比如我们在计算机安装两块硬盘,一主一备,则可以使用rsync
完成从主备份任务.
选定源目标文件夹与目标文件夹后,我们执行进行测试:
# rsync -anv <source> <destination>
测试没问题后,使用sudo crontab -e
将其添加到定时任务:
0 */1 * * * rsync -a <source> <destination>
NEXT
FreeBSD启用ZFS快照功能
FreeBSD系统打造安全可靠的ZFS存储池
FreeBSD系统安装NFS(Network File System)服务并启用基于 IP 认证的机制
FreeBSD启用ZFS快照功能
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。