创建一个Shell 脚本,通过 Cron Job 每日自动执行,来实现 Flarum 和 WordPress 网站在每天凌晨 3 点自动生成一个带有日期标记的压缩包,并删除 7 天前的旧备份。
### 创建备份目录
mkdir -p /home/backup
创建定时备份脚本
vi /home/backup/unified_daily_backup.sh
!/bin/bash
# 数据库通用账户 (假设使用同一用户进行备份)
DB_USER="root" # MariaDB 用户名
DB_PASS="你的强密码+" # MariaDB 密码
FLARUM_DB_NAME="flarum"
# 数据库备份文件的存放目录 (此目录应被 Syncthing 监控)
FLARUM_PATH="/var/www/html/flarum" # Flarum 根目录
BACKUP_DIR="/home/backup" # 备份存放目录
# 保留天数 (删除超过 N 天的数据库备份)
RETENTION_DAYS=3
# 备份执行
DATE=$(date +%Y-%m-%d)
LOG_FILE="$BACKUP_DIR/backup_log_$DATE.log"
echo "--- 数据库备份开始于 $(date) ---" > $LOG_FILE
# 导出 Flarum 数据库
mysqldump -u $DB_USER -p"$DB_PASS" $FLARUM_DB_NAME > "$BACKUP_DIR/flarum_db_$DATE.sql" 2>> $LOG_FILE
echo "Flarum 数据库导出完成: flarum_db_$DATE.sql" >> $LOG_FILE
# 清理旧数据库备份 (保留最近 N 天的)
echo "--- 清理旧数据库备份 (保留 $RETENTION_DAYS 天) ---" >> $LOG_FILE
find $BACKUP_DIR -type f -mtime +$RETENTION_DAYS -name "*.sql" -delete 2>> $LOG_FILE
echo "旧数据库备份清理完成。" >> $LOG_FILE
echo "--- 数据库备份结束于 $(date) ---" >> $LOG_FILE
# ---------------- 备份 storage/assets ----------------
echo "正在备份用户上传文件..."
tar czf "$BACKUP_DIR/flarum_assets_$DATE.tar.gz" -C "$FLARUM_PATH/public" assets
if [ $? -eq 0 ]; then
echo "用户上传文件备份成功:$BACKUP_DIR/flarum_assets_$DATE.tar.gz"
else
echo "用户上传文件备份失败!"
exit 1
fi
# ---------------- 备份 config.php ----------------
echo "正在备份配置文件..."
cp "$FLARUM_PATH/config.php" "$BACKUP_DIR/config_$DATE.php"
if [ $? -eq 0 ]; then
echo "配置文件备份成功:$BACKUP_DIR/config_$DATE.php"
else
echo "配置文件备份失败!"
exit 1
fi
echo "Flarum 备份完成!"
给予脚本执行权限:
chmod +x /home/backup/unified_daily_backup.sh
设置 Cron Job 每日自动执行
使用 crontab -e 命令打开您的用户(建议使用非 root 用户)的 Cron 表,并添加以下一行:
0 3 * * * /bin/bash /home/backup/unified_daily_backup.sh
0 3 * * *:表示在 每天、每个月、每周 的 3 点 0 分 执行。
/bin/bash /home/backup/unified_daily_backup.sh:执行您的备份脚本。
安装Syncthing
sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg2 -y
curl -fsSL https://syncthing.net/release-key.txt | sudo gpg --dearmor -o /etc/apt/keyrings/syncthing-archive-keyring.gpg
# 将 Syncthing 存储库添加到 APT 源列表
echo "deb [signed-by=/etc/apt/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing release" | sudo tee /etc/apt/sources.list.d/syncthing.list
sudo apt update
sudo apt install syncthing
配置 Syncthing 自动启动
# 创建一个名为 'syncthing_user' 的用户
sudo adduser syncthing_user
# 密码
# 将 `syncthing_user` 添加到 `www-data` 组
sudo usermod -aG www-data syncthing_user
# Flarum assets 目录
sudo chmod -R g+rX /var/www/flarum
sudo chown -R www-data:www-data /var/www/flarum
sudo find /var/www/flarum -type d -exec chmod 2775 {} \;
sudo find /var/www/flarum -type f -exec chmod 664 {} \;
# WordPress 根目录
sudo chmod -R g+rX /var/www/html/wordpress
sudo chown -R www-data:www-data /var/www/html/wordpress
sudo find /var/www/html/wordpress -type d -exec chmod 2775 {} \;
sudo find /var/www/html/wordpress -type f -exec chmod 664 {} \;
# db
sudo chmod -R g+rX /home/backup
sudo chown -R syncthing_user:www-data /home/backup
# 数据库备份目录(如果由 syncthing_user 创建,则默认有权限)
# 如果数据库备份由其他用户创建,您可能需要调整该目录的权限。
# 假设使用 /home/syncthing_user/db_backups
# 启用服务(设置为开机自启)
sudo systemctl enable syncthing@syncthing_user.service
# 立即启动服务
sudo systemctl start syncthing@syncthing_user.service
# 检查服务状态
sudo systemctl status syncthing@syncthing_user.service
# 配置防火墙 (UFW)
sudo ufw allow 8384/tcp
sudo ufw allow 22000/tcp
sudo ufw allow 21027/udp
sudo ufw reload
# VPS(如阿里云)也要设置防火墙放行
# 允许远程访问 Web GUI
sudo systemctl stop syncthing@syncthing_user.service
## 编辑配置文件, 将 `/home/syncthing_user` 替换为您的实际路径
vi /home/syncthing_user/.config/syncthing/config.xml
# 找到 `<gui>` 部分中的 `<address>` 标签。将其从默认的 `127.0.0.1:8384` **修改**为 `0.0.0.0:8384` 或您的**服务器 IP:8384**,以便从外部网络访问。
<gui enabled="true" debugging="false">
<address>0.0.0.0:8384</address> </gui>
sudo systemctl start syncthing@syncthing_user.service
现在,您可以通过浏览器访问 http://<您的服务器IP>:8384 来打开 Syncthing 的 Web GUI。