以下是一个使用 bash 脚本备份 Halo 博客的示例。这个脚本使用 rsync 命令复制文件到远程服务器上,并压缩备份文件。

请注意,以下脚本仅供参考。在使用之前,您需要根据自己的需求修改变量和设置。

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
# 设置变量
BACKUP_DIR="/path/to/backup/directory" # 备份目录
LOG_FILE="/path/to/backup/log/file.log" # 日志文件
RSYNC_USER="remote-username" # 远程服务器用户名
RSYNC_HOST="remote-hostname" # 远程服务器主机名或 IP 地址
RSYNC_PATH="/path/to/remote/directory" # 远程服务器目录
EXCLUDE_FILE="/path/to/exclude/file.txt" # 排除文件列表

# 创建备份目录
mkdir -p "$BACKUP_DIR"

# 生成备份文件名
BACKUP_FILENAME="halo-$(date +%Y-%m-%d-%H%M%S).tar.gz"

# 备份博客文件到备份目录
tar -czf "$BACKUP_DIR/$BACKUP_FILENAME" /path/to/halo/blog

# 使用 rsync 命令将备份文件上传到远程服务器
rsync -avz -e ssh --exclude-from="$EXCLUDE_FILE" "$BACKUP_DIR/$BACKUP_FILENAME" "$RSYNC_USER@$RSYNC_HOST:$RSYNC_PATH"

# 记录备份信息到日志文件
echo "$(date +%Y-%m-%d-%H%M%S) - Backup created: $BACKUP_FILENAME" >> "$LOG_FILE"

# 删除旧的备份文件
find "$BACKUP_DIR" -type f -name "*.tar.gz" -mtime +7 -delete

您需要修改的变量是:

BACKUP_DIR: 备份文件存放的目录。
LOG_FILE: 日志文件的路径和文件名。
RSYNC_USER: 远程服务器的用户名。
RSYNC_HOST: 远程服务器的主机名或 IP 地址。
RSYNC_PATH: 远程服务器存放备份文件的目录。
EXCLUDE_FILE: 排除不需要备份的文件列表。
在此脚本中,我们使用了 tar 命令将博客文件打包成备份文件,并使用 rsync 命令将备份文件上传到远程服务器。我们还记录了备份信息到日志文件,并删除了七天前的旧备份文件。

请注意,此脚本需要定期运行,以自动备份您的博客。您可以使用 cron 作业或其他定时工具来实现自动运行。