欢迎访问shiker.tech

请允许在我们的网站上展示广告

您似乎使用了广告拦截器,请关闭广告拦截器。我们的网站依靠广告获取资金。

小站点如何做到服务冷备?
(last modified Nov 8, 2022, 8:45 PM )
by
侧边栏壁纸
  • 累计撰写 176 篇文章
  • 累计创建 61 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

小站点如何做到服务冷备?

橙序员
2022-10-30 / 0 评论 / 0 点赞 / 421 阅读 / 1,538 字 / 正在检测百度是否收录... 正在检测必应是否收录...
文章摘要(AI生成)

如题,本文就探讨本站点如何实现网站冷备来介绍实现方式。本站的环境为:机器:阿里云ECS站点:博客主站以及众多子站本文中所用的工具为服务端运维工具:宝塔面板文件同步工具:rclone

如题,本文就探讨本站点如何实现网站冷备来介绍实现方式。重点是讨论如何0成本或者低成本的方式来实现(白嫖为主~)

正式开始前,首先介绍下前期背景。

本站的环境为:

机器:阿里云ECS
站点:博客主站以及众多子站

本文中所用的工具为

服务端运维工具:宝塔面板
文件同步工具:rclone

服务冷备的实现思路

通过宝塔将整站备份,最后通过FTP将备份文件同步到异地机器上。

image-1667103221099

宝塔的备份功能

宝塔默认是开启了站点的数据库、网站静态页、网站日志等信息的,这个过程我们不做过多介绍。相应设置项如下:
image-1667104011174

这里我们主要讲后续由备份目录同步到ftp的操作。

首先,我们需要从应用商店下载ftp软件:
image-1667104097937

下载好之后,需要修改ftp的配置文件, 这里需要着重注意以下几个属性:

PassivePortRange          39000 40000
ForcePassiveIP            ***.***.***.***

这两个属性解释如下:

  1. PassivePortRange: 被动连接回复的端口范围,这需要我们该端口范围进行开放,上述配置中即对39000到40000的ip端进行开放:
    image-1667104644412 另外我们也需要在ECS控制台中对相应端口进行开放。或者使用nginx做反向代理,对nginx不了解的可以看上一篇文章: 同一机器,不同端口的泛域名解析如何做到?
  2. ForcePassiveIP: 在 PASV/EPSV/SPSV 回复中强制使用 IP 地址,这里需要注意的是,如果我们想使用ip直连,那就直接填写对应的ECS外网IP;如果是想用nginx反向代理,那就填写我们反向代理的域名

配置好之后我们启动ftp服务,在ftp选项中添加一个新的ftp站点,这个根目录即是我们服务备份需要同步到的目录:
image-1667104985133
配置之后:
image-1667105041578

服务端的最后一步操作即是我们添加一个shell指令。将我们网站的备份拷贝到ftp中,以便自己的本地机器或者其他ip去ftp下载。
image-1667105180698
对应的shell脚本如下:


rm -rf /www/wwwroot/shiker/backup
cp -R /www/backup/. /www/wwwroot/shiker/backup
chmod -R 755  /www/wwwroot/shiker/backup

这里我们拷贝时,需要注意文件的权限必须是755才对ftp用户可读。默认拷贝的文件权限只对root账户可用,我们直接访问ftp是看不到的。保存编辑后,我们手动执行此任务,即可看到ftp文件夹下已有backup备份目录. 此时我们从本地机器上访问远程ftp文件,可以看到我们的备份目录。
image-1667105535283

本地同步–rclone

接下来,我会介绍本地如何同步我们已经备份的ftp文件。市面上现成的软件大多收费,且破解版或多或少无法正常使用部分功能,有的甚至会导致备份文件缺失。所以我们这里使用的是一个开源的文件同步软件rclone,在github的地址: https://github.com/rclone/rclone,官网地址:https://rclone.org/install/

这个软件安装也非常简单,我们上官网下载安装包即可傻瓜安装。

安装完成之后我们打开cmd使用rclone version命令测试是否安装完成:
image-1667105964040

rclone可以从远程服务端复制、同步、剪切到我们本地客户端上。使用rclone sync即可同步远程文件到本地。我们可以使用如下指令 rclone sync -n --log-file=D:\网站冷备脚本\info.log remote:backup D:\shiker-tech来看下远程到我们本地文件的变更目录:

PS C:\Users\18846> rclone sync -n remote:backup D:\shiker-tech
2022/10/30 13:02:55 NOTICE: site/web_random.shiker.tech_20220924_013008.tar.gz: Skipped copy as --dry-run is set (size 2.590Ki)
2022/10/30 13:02:55 NOTICE: site/web_博客_20221019_013001.tar.gz: Skipped copy as --dry-run is set (size 83.458Mi)
2022/10/30 13:02:55 NOTICE: site/web_博客_20221020_013001.tar.gz: Skipped copy as --dry-run is set (size 83.458Mi)
2022/10/30 13:02:55 NOTICE: site/web_博客_20221021_013002.tar.gz: Skipped copy as --dry-run is set (size 83.458Mi)
2022/10/30 13:02:55 NOTICE: site/web_博客_20221022_013001.tar.gz: Skipped copy as --dry-run is set (size 83.458Mi)
2022/10/30 13:02:55 NOTICE: site/web_博客_20221024_013001.tar.gz: Skipped copy as --dry-run is set (size 83.458Mi)
2022/10/30 13:02:55 NOTICE: site/web_博客_20221023_013001.tar.gz: Skipped copy as --dry-run is set (size 83.458Mi)
2022/10/30 13:02:55 NOTICE: site/web_博客_20221025_013001.tar.gz: Skipped copy as --dry-run is set (size 83.458Mi)
2022/10/30 13:02:55 NOTICE: site/web_halo-1_20220718_013005.tar.gz: Skipped copy as --dry-run is set (size 80.790Mi)

... ...

2022/10/30 13:03:17 NOTICE:
Transferred:        1.839 GiB / 1.839 GiB, 100%, 29.733 MiB/s, ETA 0s
Checks:               256 / 256, 100%
Deleted:              119 (files), 41 (dirs)
Transferred:           19 / 19, 100%
Elapsed time:        27.0s

由此,我们可以编写本地同步脚本了,由于博主自己用的windows电脑,所以编写bat脚本如下:

@echo off
SET logPath=D:\backup-log
SET  logFile=D:\backup-log\info.log
if not exist %logPath% md %logPath%
if exist %logFile%  del %logFile%
type nul> %logFile%
rclone sync -n --log-file=%logFile% remote:backup D:\shiker-tech
rclone sync -v --progress --log-file=%logFile% --stats=3m remote:backup D:\shiker-tech

我们的目的是让我们的脚本可以后台启动,所以需要写一个vb脚本:

createobject("wscript.shell").run "D:\backupScript\backup.bat", 0 

通过控制面板中的计划任务(具体路径:控制面板\系统和安全\Windows 工具),可以将我们的脚本设置为启动执行:
image-1667911519194
立即执行后可以在本地看到备份文件:
image-1667106832536

由此我们便大功告成,整个过程中只有本地同步这里需要因人而异,服务端部署步骤相同。

0

评论区