隐私建议
首先,在配置异地备份前,建议先完善站点规则,向用户明确披露数据的留存期限,即用户删除账户后,TA的数据仍会因为备份文件的存在而被留存一段时间。
创建备份专用 Bucket
依然以 Scaleway 为例,创建一个专用于存储备份的 Bucket:
由于本教程使用 Rclone 进行备份,除了使用 Scaleway 之外,你可以使用其他云存储服务,如 Google Drive, OneDrive 等等。详见官方文档:https://rclone.org/docs/
安装与配置 Rclone
在长毛象服务器 SSH 中,运行以下命令安装 Rclone:
curl <https://rclone.org/install.sh> | sudo bash
运行配置命令:
rclone config
新建配置,起一个 Rclone 配置名称:
选择存储服务商:
配置密钥:
保存配置:
保存配置后,输入 q + 回车,退出配置。
运行以下命令列出储存桶下的文件目录,如果没有报错,则代表配置成功:
rclone lsd 配置名称:储存桶名称
配置备份脚本
新建目录,用于存放备份脚本。
mkdir /opt/mastodon-backup/
mkdir /opt/mastodon-backup/logs
编辑 backup.sh
nano /opt/mastodon-backup/backup.sh
写入以下内容:
#!/bin/bash
# Save this file at /opt/mastodon-backup/backup.sh
# Set a cronjob: 0 19 * * * /bin/bash /opt/mastodon-backup/backup.sh > /opt/mastodon-backup/logs/backup.log 2>&1
#Get the relative path of the backup script
backup_script=$(dirname "$realpath $0")
#Loading the Config
source $backup_script/config.sh
#Clean up old db dump
rm /home/mastodon/live/dbbackup-*
#Generating a database dump backup
su - mastodon -c "cd /home/mastodon/live && pg_dump -Fc mastodon_production > dbbackup-$(date +"%Y_%m_%d_%I_%M_%p").dump"
#Loading the rclone password
#export RCLONE_CONFIG_PASS=$rclone_config_pass
#Moving the database backup
rclone move /home/mastodon/live/dbbackup-* $rclone_config_name:$s3_bucket_name/$backup_folder_name
#Copying important files
rclone copy /home/mastodon/live/.env.production $rclone_config_name:$s3_bucket_name/$backup_folder_name
rclone copy /var/lib/redis/dump.rdb $rclone_config_name:$s3_bucket_name/$backup_folder_name
rclone copy /etc/nginx/sites-available/ $rclone_config_name:$s3_bucket_name/$backup_folder_name
rclone copy /etc/elasticsearch/jvm.options $rclone_config_name:$s3_bucket_name/$backup_folder_name
#Remove dump files
rm /home/mastodon/live/dbbackup-*
编辑完成后,使用 ctrl + X 退出,按 Y 、回车保存。
编辑 config.sh
nano /opt/mastodon-backup/config.sh
写入以下内容,并替换:
- scaleway 替换为你的 Rclone 配置名称
- yourbucketname 替换为你的 Bucket 名称
#!/bin/bash
# Save this file at /opt/mastodon-backup/config.sh
# Replace the values below with your S3 config
rclone_config_name="scaleway"
# rclone_config_pass="yourpassword"
s3_bucket_name="yourbucketname"
backup_folder_name="$(date +"%Y_%m_%d_%I_%M_%p")"
编辑完成后,使用 ctrl + X 退出,按 Y 、回车保存。
运行一次,然后在 Scaleway 面板中查看是否出现了备份文件,检查是否成功备份:
bash /opt/mastodon-backup/backup.sh > /opt/mastodon-backup/logs/backup.log 2>&1
如果遇到错误,可以查询备份错误日志排查问题:
cat /opt/mastodon-backup/logs/backup.log
配置定期备份
编辑定时任务:
crontab -e
写入以下内容,则备份任务会在每天服务器时间的 3:00 执行备份任务
0 3 * * * bash /opt/mastodon-backup/backup.sh > /opt/mastodon-backup/logs/backup.log 2>&1
编辑完成后,使用 ctrl + X 退出,按 Y 、回车保存。
你可以使用 crontab.guru 这个网站来检查定时任务的命令是否写对了。
https://crontab.guru/#0_3_*_*_*
定时备份任务配置完成。
循环销毁备份文件
利用 Scaleway 的 Lifecycle rules,可以简单实现备份文件的保留时限。
创建一个 Lifecycle Rule,随便起一个名字:
Transition 可不设置,留空:
Configure Expiration Options 设置为 7 天,则备份数据会保留 7 天,过期自动删除。
规则创建完成。
本章节完。