正在召唤神秘力量
导航

萌即是正义!时不时分享一些ACG活动记录与有趣代码的小站!

通过BorgBackup自动化备份网站到远程服务器

作者:广树·时间:2024-03-18 21:16:37·分类:其他

BorgBackup(或简称为 Borg)是一个开源的、去重的、压缩的、加密的备份程序。它提供了高效、安全的方式来备份数据。

此次是以两台服务器之间进行文件备份为场景,简单的记录一下BorgBackup自动化备份网站的过程。


A为网站服务器,B为备份用的服务器。

B服务器前提:防火墙开放SSH端口给A服务器。


AB服务器安装BorgBackup

sudo apt-get update
sudo apt-get install borgbackup


B服务器创建一个用户

sudo adduser backupuser


B服务器创建一个repo

borg init --encryption=repokey /path/to/repo

这里以repokey为例,此时会要求设定密码。


A服务器设置SSH密钥对

ssh-keygen

因为是自动化需要,这个密钥对不设置密码。


将 A 服务器的公钥复制到 B 服务器

ssh-copy-id backupuser@B服务器域名或者IP

输入前面B服务器的backupuser的密码。


配置sh脚本

#!/bin/bash
# 启动 ssh-agent
eval "$(ssh-agent -s)"

# 添加你的私钥到 ssh-agent
ssh-add /root/.ssh/id_rsa

# 定义备份源和目标
SOURCE="/A/path/to/repo"
TARGET="backupuser@domain.com:/path/to/repo"

# 设置 BORG_PASSPHRASE 环境变量,Borg 将使用这个变量作为密码
export BORG_PASSPHRASE='xxxxxxxxxxx'

# 使用 Borg 创建新的备份,exclude 排除文件夹
borg create --exclude '/A/excludePath' "${TARGET}::{now:%Y%m%d%H%M%S}" "${SOURCE}"

# 删除 30 天前的备份,防止空间不足
borg prune -v --list --keep-within 30d "${TARGET}"


打开当前用户的 crontab 文件

crontab -e


添加一行来定义你的 cron 任务

0 1 * * * /path/to/your/script.sh

例如,如果你想要每天凌晨 1 点运行你的脚本

请注意,你的 sh 脚本需要有执行权限。你可以使用 chmod 命令来给它添加执行权限:

chmod +x /path/to/your/script.sh


从B服务器提取备份文档并打包成zip

borg extract --strip-components 3 /path/to/repo::my-backup

在 borg extract 命令中,--strip-components 选项用于移除从备份中提取的文件路径的前缀部分。这个选项的参数是你想要移除的路径组件的数量。

例如,假设你的备份中有一个文件,其路径为 /www/wwwroot/test/myfile.txt。如果你使用 --strip-components 3,那么在提取备份时,这个文件的路径将变为 myfile.txt。这是因为 --strip-components 3 移除了路径的前三个组件,即 /www/、wwwroot/ 和 test/。

然后可以通过指令压缩成zip文件

zip -r backup.zip .


同理也可以直接在A服务器拉取档案

eval "$(ssh-agent -s)" && ssh-add /root/.ssh/id_rsa && export BORG_PASSPHRASE='xxxxxxxxxxx' && borg extract ssh://backupuser@domain.com:/path/to/repo::my-backup /path/to/restore


侧边栏
最新评论
广树
2024-04-19
@粽叶加米:心态好,哈哈哈。我现在也随缘了,但是还是要研究研究现在搜索引擎都什么情况。
广树
2024-04-19
@r:哈哈哈,生动
r
2024-04-19
百度=互联网反诈集训中心
粽叶加米
2024-04-19
我是随缘了,没有在意,刚搜了一下也没啥收录 (ㆆᴗㆆ)
广树
2024-04-19
@MoeNya:现在绝大多数搜索引擎都会抓取前端渲染后的页面信息。但是像推特脸书这些社交平台的爬虫则不会,仍然是抓取静态页面。所以如果想要实现社交平台上动态展示标题封面图等信息的话,还是需要服务器渲染的支持。这就是我的博客没有选择纯前端渲染的原因。
正在攻略

圣兽之王.jpg

传颂之物

PSN奖杯卡

PSN奖杯卡

赞助商广告