用的这篇文章里的脚本→「 用duplicacy备份Pleroma | sevic.me 」,不过duplicacy异地备份的部分还没弄以后再看…(才刚来摸服务器级别的东西仍未能驯服linux的逻辑)(系统是Debian)
脚本本身是Pleroma用的不过改改路径和细节Akkoma也能用。
按照原过程在相应目录下把脚本拉过来
sudo curl -L https://github.com/Sevichecc/pleroma-backup-script/releases/download/1.0.1/backup-script.zip -o backup-script.zip
sudo unzip backup-script.zip
sudo rm -rf backup-script.zip
形成 /自定义目录/backup-script 文件夹。先不考虑线上备份的话在这个文件夹里面需要关注的文件就只有 .env 配置文件和脚本文件本身 backup.sh。
因为自己服务器把图片上传的部分都塞到线上s3桶里了所以本地没有要备份的图…备份upload文件夹的部分就删掉了。但是有个数据库备份的时候脚本默认postgres用户不知道为什么没法拷文件的问题(原po好像直接用的是root用户弄的不过我看了些神秘的装机必做安全性文章后跟着把单独的root用户禁用掉了…)…试着在脚本里换成了akkoma用户又发觉要强制输密码,又问LLM找补,最后加了个数据库密码的值传进来好像就可以了……
最后文件这样 ↓
.env 配置文件:(akkoma路径是源码安装的…问就是眼残看机翻文档的时候看串了或许吃了更多不应该吃的苦)(脚本默认的值都是PLEROMA我用的时候也懒得一个个改成akkoma了,linux改文件好麻烦的)
PLEROMA_DB=akkoma
PLEROMA_PATH=/opt/akkoma/instance/
PLEROMA_CONFIG_PATH=/opt/akkoma/config/prod.secret.exs
BACKUP_PATH=/home/akkoma/akkoma-backup-files/
backup.sh :↓ 但是再懒得改也起码要把停止和启动akkoma的命令给改了(…),然后中间因为数据库的那个问题相关命令也改了。
#!/bin/bash
source /etc/profile
source /opt/akkoma-backup/backup-script/.env
export PGUSER=akkoma
export PGPASSWORD="数据库密码"
echo `date +"%Y-%m-%d %H:%M:%S"` " now starting backup"
echo "1.stop pleroma"
sudo systemctl stop akkoma
echo "2.dump database"
pg_dump -d "$PLEROMA_DB" --format=custom -f "${BACKUP_PATH}/akkoma_$(date +%Y%m%d).pgdump"
echo "3.pack uploads & static folder"
tar -czf "${BACKUP_PATH}/static.tar.gz" --absolute-names ${PLEROMA_PATH}/static
echo "4.copy config file"
cp ${PLEROMA_CONFIG_PATH} ${BACKUP_PATH}
echo "5.restart pleroma"
sudo systemctl start akkoma
echo "6.Deleting backups older than 7 days"
find ${BACKUP_PATH} -type f -name '*.pgdump' -mtime +7 -exec rm {} \;
echo `date +"%Y-%m-%d %H:%M:%S"` " done!"
手动运行脚本靠 sudo bash backup.sh (在脚本所在目录下)(有时测试用)
打开crontab定时任务设置自动化的命令 sudo crontab -e
加入备份设置(凌晨两点三天一次) 0 2 */3 * * /bin/bash /opt/akkoma-backup/backup-script/backup.sh >> /opt/akkoma-backup/backup.log 2>&1
(前面路径是脚本所在地后面是运行日志所在地)
应该就没问题了…