首页 VPS数据备份与迁移从未如此高效

VPS数据备份与迁移从未如此高效

牛仔抄 2019-7-8 0 868

PS 于20231109:数据库文件最好还是按照正规方法来备份,以防发生神秘不明的错误。毕竟数据库这东西。。。。懂的都懂!

这一切归功于docker技术。
用docker容器运行程序,让程序最大程度地脱离了服务器系统的约束,也最大程度地保持了系统的纯净性。
于是备份和迁移数据就变成了文件的拷贝与和粘贴一样的简单。无须关心数据的保存格式,也无须在意它被保存在系统的哪个位置,在强大的docker面前,无论是数据库,加密文件,抑或是网站资料,设置等等,都与服务器系统脱离了关系。你只需要拷贝它们即可。
你需要做的,只是在新系统里装好docker, 把数据拷贝进去,解压,然后重新用相同的docker镜像把相对应的数据文件夹再次映射进去即可。一切都无须重新安装。

docker安装命令为(注意系统必须为Linux系统64位):

curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh

基本上唯一需要在服务器系统修改的是crontab,并针对自己的服务数据写一个备份脚本。目的是定期备分,并打包传送到网盘上保存以方便下次恢复或者是迁移。
另一个非必须步骤是开启BBR加快服务器的网络进出速度。

基于现在使用的程序,现做一下备份的小结。
备份数据时,最好把相应的服务关停,以防数据损坏。相关指令是:
docker stop +容器名字

1,压缩。非必须但强烈推荐,特别是小文件很多的情况下,直接传送到新服务器耗时太久。
进入相对应文件夹,执行命令:
zip -r -y /path/back1.zip *

2,备份。把上面步骤产生的压缩文件传送到网盘。用到的工具是rclone, 当然这个工具也已经用docker容器实现了,无须在系统上安装。在系统装好docker之后,只需要一个命令:
docker pull cowade/rclone。
然后运行该镜像 by:
docker create \
--name=rclone \
-v /root/dk:/data \
-v /root/dk/rclone:/root/.config/rclone \
cowade/rclone

然后运行以下命令来启动该容器:
docker start rclone

第一个-v后面的路径是压缩文件back1.zip所在的文件夹,/data是容器里创建的一个文件夹,用于在容器里面把数据传送到网盘。
第二个-v 是非必须,在rclone容器里rclone config 即可新建一个。

新建好配置文件,并把网盘连接到Rclone之后,即可运行下面的命令把压缩包备份到网盘上:
rclone move -P /path/back1.zip drive:backup

drive是指配置rclone时给网盘起的名字,backup文件夹是网盘里的一个文件夹。
提示备份完毕就就可以运行以下命令关掉rclone容器以节省服务器资源:
docker stop rclone

然后重新运行开始时停掉的docker容器:
docker start 容器名。

如果懒得自己定期备份文件,可以使用以下脚本来自动备份并打包传送到网盘:

总的思路也跟上面的一致,但是命令有所不同:

!bin/bash

docker stop 容器名 //停掉容器
zip -r -y /path/back1.zip * //压缩要打包的文件数据
docker start rclone //唤醒神兽来接管传送

docker exec rclone rclone move -P /path/back1.zip drive:backup //神兽传送文件开始

docker exec rclone rclone delete --min-age 13d drive:backup
上面这条命令是用于删除之前的备份,比如上面的13d是删除13天前的备份文件

1ms是1毫秒之前

1s是1秒前

1h 1小时前

1d 1天前

1M 1个月前

1y 1年前

docker stop rclone //神兽沉睡命令

docker start 容器名 //重新启动要运行的容器

脚本思路大致如上。可命名为backup.sh并存放于/root文件夹中

最后,需要编辑系统的/etc/crontab来定期运行上面的脚本。

在该文件中加入 0 4 0 root /root/backup.sh
上面指令是指每星期天早上四点运行backup.sh脚本备份并把备份传送到网盘中。

以上只是大概思路小结,有闲情时再详细说明每步骤(估计不大可能会有)

作者: 牛仔抄
牛仔抄

迷途小书童,热衷于电脑与网络技术,自学多年,一事无成。

发表评论: