服务器有时间限制 Orz,万一哪天忘记续费全部木大完蛋。还是早点做个备份好。毕竟上面写了蛮多东西也不想丢弃。(想起 QQ 上写好多说说,当年….. 啊 黑历史 之后看见写的简直无语凝噎,都是无病呻吟的一些什么鬼东西啊!😧
准备
安装好 rclone已经配置完 mastodon ps:当然看着教程随便设置同步位置也可以的
编写备份脚本
注意 : 这是源代码模式安装 Mastodon 后的执行备份脚本,因为最近迁移至 Docker-Arm64,所以重新写了下 Docker 下的备份脚本,在下面。
编辑 backup.sh
1
| sudo nano /opt/onedrive_thy/mastodon-backup/backup.sh
|
Copy
我直接放在 Onedrive 的 mastodon 备份目录下咯
写入下面这么多东西:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| #!/bin/bash
# Save this file at /opt/onedrive_thy/mastodon-backup/backup.sh
# Set a cronjob: 0 19 * * * /bin/bash /opt/onedrive_thy/mastodon-backup/backup.sh > /opt/onedrive_thy/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:$onedrive_folder_name/$backup_folder_name
#Copying important files
rclone copy /home/mastodon/live/.env.production $rclone_config_name:/$onedrive_folder_name/$backup_folder_name
rclone copy /var/lib/redis/dump.rdb $rclone_config_name:/$onedrive_folder_name/$backup_folder_name
#rclone copy /etc/elasticsearch/jvm.options $rclone_config_name:$onedrive_folder_name/$backup_folder_name
#Remove dump files
rm /home/mastodon/live/dbbackup-*
|
Copy
编写完成后使用 Ctrl+X 退出,按 Y 保存。
- PS : 因为我没有开全文搜索引擎 elasticsearch 所以注释掉咯
- PSS : 每个人的路径不一样,自己找找呗 😆
编辑 config.sh
1
| sudo nano /opt/onedrive_thy/mastodon-backup/config.sh
|
Copy
写入以下内容:
1
2
3
4
5
6
7
8
9
| #!/bin/bash
# Save this file at /opt/onedrive_thy/mastodon-backup/config.sh
# Replace the values below with your onedrive config
rclone_config_name="thy_disk"
# rclone_config_pass="yourpassword"
onedrive_folder_name=Data/Linux/VPS/Backups/TencentCloud/mastodon-backup
backup_folder_name="$(date +"%Y_%m_%d_%I_%M_%p")"
|
Copy
编写完成后使用 Ctrl+X 退出,按 Y 保存。
脚本检查
全部编写完成后运行一次:
1
| bash /opt/onedrive_thy/mastodon-backup/backup.sh > /opt/onedrive_thy/mastodon-backup/logs/backup.log 2>&1
|
Copy
这一步会卡一会儿执行程序,在执行完成后查询日志 :
1
| cat /opt/onedrive_thy/mastodon-backup/logs/backup.log
|
Copy
或者直接登录网页或者 win 上的 Onedrive 查看(这好方便!
配置定期备份
编写定时任务:
Copy
写入下面这一坨,以后每天的凌晨 5 点(5 点不是凌晨了叭)自动执行备份任务:
1
| 0 5 * * * bash /opt/onedrive_thy/mastodon-backup/backup.sh > /opt/onedrive_thy/mastodon-backup/logs/backup.log 2>&1
|
Copy
编写完成后使用 Ctrl+X 退出,按 Y 保存。
Docker 下的备份脚本 | 2022-02-18 update
首先要明确自己需要备份哪些内容
按照优先级如下分类
- .env.production 文件
- 数据库备份
- 嘟文图片
- 站点图片
- 外站数据
编写脚本 mastodon-docker-backup.sh
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| #!/bin/bash
#Get the relative path of the backup script
backup_script=$(dirname "$realpath $0")
#Loading the Config
#source $backup_script/config.sh
rclone_config_name="thy_disk"
# rclone_config_pass="yourpassword"
onedrive_folder_name=Data/Linux/VPS/Backups/OracleCloud/mastodon-backup
backup_folder_name="$(date +"%Y_%m_%d_%I_%M_%p")"
mastodon_folder=/home/mastodon/mastodon
#docker ps | grep mastodon_db | awk '{print $1}'
nowtime=$(date +%F)
SQL_FILE=sql_$nowtime.dump
cp ${mastodon_folder}/.env.production ${mastodon_folder}/backup/.env.production
#Clean up old db dump
rm ${mastodon_folder}/backup/sql*
#Generating a database dump backup
cd ${mastodon_folder} && docker exec -it mastodon-db-1 /bin/bash -c "pg_dump -U postgres -Fc mastodon_production -f /home/${SQL_FILE}" && docker cp mastodon-db-1:/home/${SQL_FILE} ${mastodon_folder}/backup/${SQL_FILE}
rclone move ${mastodon_folder}/backup/${SQL_FILE} $rclone_config_name:$onedrive_folder_name/$backup_folder_name
rclone copy ${mastodon_folder}/.env.production $rclone_config_name:/$onedrive_folder_name/$backup_folder_name
rclone copy ${mastodon_folder}/redis/dump.rdb $rclone_config_name:/$onedrive_folder_name/$backup_folder_name
echo 'OK'
|
Copy
因为暂时对图片备份没有需求所以先咕咕 (太大了叭!!
完成咯
这写完之后,大概服务器上任意什么位置的文件都可以使用 Onedrive 来备份了叭。尤其是我那些经常忘记的小容量 VPS 上的文件,那天不注意就没了。
赞美巨硬!!🎉🎉🎉