从0到1: 一个博客的诞生(五) | 备份篇

分享讨论IT相关的内容
回复
头像
BobMaster
锋芒初露
锋芒初露
帖子: 1207
注册时间: 2020年 12月 7日 08:05
来自: 神秘的东方
我的状态: 🎯
为圈友点赞: 349 次
被赞次数: 189 次
联系:

从0到1: 一个博客的诞生(五) | 备份篇

帖子 BobMaster »

前言

DiskGenius告诉我们“数据无价,谨慎操作”。你应该不希望自己辛辛苦苦写的文章因为各种意外而丢失吧。而定期备份是解决该问题的一种有效手段,下面让我们开始吧。

备份

这里我们采用Crontab定时脚本来定期运行我们写好的备份脚以本实现定期备份功能。
在家目录下创建一个scripts文件夹用来存我们写好的脚本

代码: 全选

# 先回到家目录
cd
# 创建scripts目录
mkdir scripts
图片
创建一个名为wordpress.bak.sh的脚本文件

代码: 全选

vim scripts/wordpress.bak.sh
图片
i键进入编辑模式,然后使用Ctrl+Shift+VShift+Insert将脚本内容粘贴进去
脚本内容如下:

代码: 全选

#!/usr/bin/env bash
NAMEDATE=`date +%F_%H-%M_%s` && echo $NAMEDATE
mkdir -p /root/backup/wordpress/$NAMEDATE -m 0700 && echo "Directory Created"
mariadb-dump -u wordpress -p"wordpress" wordpress | gzip > /root/backup/wordpress/$NAMEDATE/db.sql.gz && echo "Database Dumped"
tar -C /var/www -czf /root/backup/wordpress/$NAMEDATE/files.tar.gz wordpress && echo "Wordpress Files Dumped"
chmod -R 0700 /root/backup/wordpress/$NAMEDATE/* && echo "Directory Permission Restored"
# Remove backups older than 7 days
find /root/backup/wordpress/ -type d -mtime +7 -exec rm -rf {} \; && echo "Old Backups Removed"
exit 0
图片
然后按ESC键进入命令行模式,输入 :wq ,然后回车保存并退出
图片
接着使用下面命令运行一下我们的脚本,看是否有问题

代码: 全选

bash scripts/wordpress.bak.sh
图片
从上面的结果看,脚本正常运行了,没有遇到问题,我们在进入备份路径下看看
图片
配置Crontab定时任务,输入下面的命令

代码: 全选

# 这里选择vim编辑器
crontab -e
图片
图片
按小写字母o键,会将光标指向下一行并进入编辑模式
图片
使用Ctrl+Shift+VShift+Insert粘贴下面的内容

代码: 全选

0 0 * * * /usr/bin/bash /root/scripts/wordpress.bak.sh
图片
ESC键进入命令行模式,输入 :wq ,然后回车保存并退出
图片
然后终端里还会提示 crontab: installing new crontab
图片
将备份下载到本地 Tabby右上角有一个SFTP的选项,点击它,然后依次进入到我们备份的文件路径
图片
图片
图片
图片
图片

还原备份

假设未来你需要搬迁服务器了,或者因为某些原因想要回滚数据,此时可以这样操作。
把前面备份的数据库和wordpress文件通过Tabby的SFTP功能上传到新服务器中,假设文件上传到/root/temp
图片
图片
下面分别将数据库和wordpress文件解压

代码: 全选

# 解压数据库
gunzip db.sql.gz
# 解压wordpress文件
tar xf files.tar.gz
图片
检查一下文件权限
图片
发现没啥问题,使用 mv 指令把wordpress文件夹移动到Nginx配置中root /xxxxx/xxxxx;指定的路径,假设是 root /var/www/wordpress;

代码: 全选

mv wordpress /var/www
接下来是还原数据库,在还原数据库前可以参考上一篇文章,把wordpress数据库创建好,再使用下面的命令还原数据库。

代码: 全选

mariadb  -u wordpress -p"wordpress" wordpress < ./db.sql
图片

完结撒花

感谢你能看到这里,至此,《从0到1: 一个博客的诞生》系列文章算是正式完结了,文章内容不多,省略了很多东西,主要目的是勾起大伙的兴趣以帮助你们更好的克服内心学习和使用Linux的不适感,不知道成功了没有,哈哈~

The Ends! ::f
有任何问题可以加入我们的聊天室或直接回帖。
聊天室注册链接: https://chat.quanquan.space/signup_user ... msetg4xb9a

本系列文章均采用 CC BY-NC-SA 3.0 许可协议,转载请注明出处。
上次由 BobMaster 在 2023年 9月 27日 22:16,总共编辑 1 次。
人生如音乐,欢乐且自由
头像
BobMaster
锋芒初露
锋芒初露
帖子: 1207
注册时间: 2020年 12月 7日 08:05
来自: 神秘的东方
我的状态: 🎯
为圈友点赞: 349 次
被赞次数: 189 次
联系:

Re: 从0到1: 一个博客的诞生(五) | 备份篇

帖子 BobMaster »

人生如音乐,欢乐且自由
头像
ejsoon
圈圈精英
圈圈精英
帖子: 2254
注册时间: 2022年 11月 18日 17:36
为圈友点赞: 99 次
被赞次数: 99 次
联系:

Re: 从0到1: 一个博客的诞生(五) | 备份篇

帖子 ejsoon »

我備份的一個坑是,數據庫不要整個拉下來,要把option表跟其它表分開,先導入其它表,再導入option表,因為option表有不止一個外鍵,不這樣的話,右側欄會失效,此外還不知會有何問題。

此外,當安裝新插件時,要關注它新建了哪些表。有些插件都卸了,表還留著。
https://ejsoon.win/
天蒼人頡:發掘好玩事物
头像
ejsoon
圈圈精英
圈圈精英
帖子: 2254
注册时间: 2022年 11月 18日 17:36
为圈友点赞: 99 次
被赞次数: 99 次
联系:

Re: 从0到1: 一个博客的诞生(五) | 备份篇

帖子 ejsoon »

一般我要把備份的.sql及文件,在本地也能跑起來一個一樣的wordpress項目,這才算是備份成功。

不過因為這樣比較麻煩,所以我很少備份,都直接在線上弄。
https://ejsoon.win/
天蒼人頡:發掘好玩事物
头像
BobMaster
锋芒初露
锋芒初露
帖子: 1207
注册时间: 2020年 12月 7日 08:05
来自: 神秘的东方
我的状态: 🎯
为圈友点赞: 349 次
被赞次数: 189 次
联系:

Re: 从0到1: 一个博客的诞生(五) | 备份篇

帖子 BobMaster »

ejsoon 写了: 2023年 9月 28日 00:48 我備份的一個坑是,數據庫不要整個拉下來,要把option表跟其它表分開,先導入其它表,再導入option表,因為option表有不止一個外鍵,不這樣的話,右側欄會失效,此外還不知會有何問題。

此外,當安裝新插件時,要關注它新建了哪些表。有些插件都卸了,表還留著。
根本不需要这么麻烦,只需要备份还原完整的wordpress数据库即可,files.tar.gz文件包括了除数据库之外的所有文件。我这么多年都是这样过来的,没有遇到任何问题(因为保证了环境一致)。
當安裝新插件時,要關注它新建了哪些表。有些插件都卸了,表還留著。
尽量选择官方测试过的,小众的插件别乱整,可能不规范。
至于表还留着的情况,只要没有影响,不用特别关注的,我18年开始搭建博客到现在也没有遇到过你描述的问题。
ejsoon 写了: 2023年 9月 28日 00:52 一般我要把備份的.sql及文件,在本地也能跑起來一個一樣的wordpress項目,這才算是備份成功。

不過因為這樣比較麻煩,所以我很少備份,都直接在線上弄。
你自己也知道本地麻烦,所以很少备份,真遇到服务商跑路的情况,可能就会丢数据了。这里考虑到有小白,我还没有讲怎么将备份异地存储,我自己实际使用,脚本中还会添加使用rclone将备份存到专门的s3备份节点中的命令。

这里介绍的备份还原流程是我这些年完整实操过至少五六次而总结下来的经验,靠谱且有效我才发上来。

phpbb论坛,nextcloud网盘也都可以这样操作,万变不离其中的。
人生如音乐,欢乐且自由
头像
ejsoon
圈圈精英
圈圈精英
帖子: 2254
注册时间: 2022年 11月 18日 17:36
为圈友点赞: 99 次
被赞次数: 99 次
联系:

Re: 从0到1: 一个博客的诞生(五) | 备份篇

帖子 ejsoon »

文件我只備份wp-content,裏面有媒體庫,插件,主題。

我有幾個自製的插件,後來發現有了snippet之後,完全不必自製插件。正在研究把自製插件退化為上傳媒體庫再用snippet調用。

除了自製插件之外,其它插件及一個主題都能下載到。則真正需要備份的文件只有媒體庫。
https://ejsoon.win/
天蒼人頡:發掘好玩事物
回复
  • 猜你喜欢
    回复总数
    阅读次数
    最新帖子
  • 从0到1: 一个博客的诞生(一) | 引导篇
    BobMaster » » 位于 玩机交流
    1 回复总数
    621 阅读次数
    最新帖子 BobMaster
  • 从0到1: 一个博客的诞生(二) | “破费”篇
    BobMaster » » 位于 玩机交流
    3 回复总数
    1362 阅读次数
    最新帖子 BobMaster
  • 从0到1: 一个博客的诞生(三) | 筑基篇
    BobMaster » » 位于 玩机交流
    2 回复总数
    1469 阅读次数
    最新帖子 ejsoon
  • 从0到1: 一个博客的诞生(四) | 落地篇
    BobMaster » » 位于 玩机交流
    1 回复总数
    1370 阅读次数
    最新帖子 BobMaster

在线用户

正浏览此版面之用户: 没有注册用户 和 9 访客