前提:
一同事接触的客户,初步得到的反馈是现在有服务器,然后有核心数据需要保存备份,并且为了实际安全需求,需要将数据备份到其它地方,问用什么产品合适,能不能自动备份。
后续:
后续接触客户后发现该客户目前有一台线下服务器,然后每天都会产生一些文件到一个文件夹,就是该文件夹数据需要备份,该数据可以放在外网环境,备份数据拒绝外网访问。主要就是做一个数据备份,无分发需求,一般无下载需求,要求能定时自动备份。
该需求实际是一个很简单的数据备份需求,具体产生的是什么文件我们不细谈。由于客户本地就只有一台服务器,所以在客户以及我这边看来,如果只是单独的做一个数据备份到本地的其它盘符,其实还是有一定的风险的,目前市面上的云盘软件也基本无法实现定时自动上传,并且使用网盘还有流量限速等限制,所以放弃,最后决定使用对象存储直接存储。
方案:
Windows(客户系统)
使用对象存储直接处理,利用华为云OBS Browser+软件直接上传整个文档的文件,并设置指定文件夹内容自动上传。
Linux(拓展)
使用对象存储直接处理,利用华为云obsutil软件搭配crontab配置定时任务直接上传整个文档的文件,并设置指定文件夹内容自动上传。
前提:必须在Linux操作系统下,并且正常开启了crond(定时任务计划)服务。
运行service crond status命令可查看是否开启该服务。
配置步骤
-
执行
crontab -e命令,打开编辑定时任务的配置文件。 -
进入Insert模式开始编辑配置文件。
30 21 * * * cd /root && nohup ./obsutil cp /src/src1 obs://bucket-test -r -f -u &>obsutil_crond.log &说明:
假设obsutil工具位于/root目录下,上述配置的定时任务含义为:每天21:30进入/root目录下,执行增量上传/src/src1文件夹到obs://bucket-test桶内并将命令的输出内容重定向到/root下的obsutil_crond.log中。
-
按Esc退出Insert模式,并输入:wq保存并退出。
-
执行命令:
crontab -l,查看当前用户已配置的定时任务,确认配置成功。
常见问题
-
如何确定定时任务是否正在执行?
- 执行命令:
tail /var/log/cron,查看最近的定时任务执行记录。 - 执行命令:
ps -ef | grep obsutil,查看obsutil进程是否正在执行。
- 执行命令:
-
如何强制终止正执行的定时任务?
- 执行命令:
ps -ef | grep obsutil,查看obsutil的进程信息。 - 执行命令:
kill -9 PID,强制终止该进程(PID为查询到的进程号)。
- 执行命令:
实现价值:
基于OBS Browser+会扫描本地文件与桶中对应路径的对象进行对比,仅在对象不存在,或者对象大小与文件大小不一致,或者对象的最后修改时间早于文件的最后修改时间时才会进行上传的产品特性。在实现对该文件夹内容定时备份的需求的同时,有效避免obs存储空间的空间浪费。在低费用的情况下实现了客户重要数据的自动备份。
总结:
线下数据备份是一个非常常见的场景,也是非常重要的,现在很多人其实都会一份数据有多个数据备份,电脑端一份,手机端一份,云端一份甚至还有U盘一份。这个是很正常的,在服务器崩溃的时候能有效找回之前按的数据,让损失最小化。
但是这些操作一般都是需要手动操作执行的,在使用对象存储服务之后,自动定时的增量备份能有效的避免自己因为忙等问题导致哪天忘记做数据备份了。根据墨菲定律,最坏的事情一定会发生?多一个备份都是有好处的。
目前华为云obs存储单AZ资源包 40GB存储空间一年仅需9块,在无数据下载的情况远比网盘会员便宜,正好有需求何不试下呢。
当然,使用云服务器的还是建议直接使用备份服务对服务器进行整体备份,这个也只是一种备份方案。具体问题具体分析。
有对应需求或者类似想法或者云资源需求欢迎交流沟通,