Blog Nodeloc

记录一些NodeLoc发展中遇到的问题及解决方法

一键定时将网站备份到S3(Minio)


脱离面板后,有一件事就是备份没有那么方便了。

不过用宝塔备份也经常出错。其实自己写一个脚本定时备份并不是什么复杂的事情。

用GPT写了一个一键备份的脚本

#!/bin/bash

# 配置MinIO连接信息
MINIO_ACCESS_KEY="YOUR_MINIO_ACCESS_KEY"
MINIO_SECRET_KEY="YOUR_MINIO_SECRET_KEY"
MINIO_ENDPOINT="https://YOUR_MINIO_SERVER_ENDPOINT:9000"
MINIO_BUCKET="YOUR_MINIO_BUCKET_NAME"

# 要备份的本地目录
SOURCE_DIRECTORY="/var/www/www.nodeloc.com"

# 获取当前日期和时间作为时间戳
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")

# 压缩文件的名称和路径(包括时间戳)
BACKUP_FILE="/tmp/www.nodeloc.com_backup_$TIMESTAMP.tar.gz"

# 打包目录
echo "Creating tar archive of $SOURCE_DIRECTORY..."
tar -czf "$BACKUP_FILE" -C "$(dirname "$SOURCE_DIRECTORY")" "$(basename "$SOURCE_DIRECTORY")"

# 使用MinIO客户端上传备份文件
echo "Uploading backup file to MinIO bucket..."
mc alias set minio "$MINIO_ENDPOINT" "$MINIO_ACCESS_KEY" "$MINIO_SECRET_KEY" --api S3v4
mc cp "$BACKUP_FILE" "minio/$MINIO_BUCKET/"

# 删除临时备份文件
echo "Cleaning up..."
rm "$BACKUP_FILE"

echo "Backup completed successfully."

可以根据需求修改一下在Minio中的目录位置。

将代码保存为 backup.sh,然后使用 bash backup.sh 执行脚本即可。

执行结果如下

root@nl-ols:/home/scripts# bash backup.sh 
Creating tar archive of /var/www/www.nodeloc.com...
Uploading backup file to MinIO bucket...
Added `minio` successfully.
...24-03-20_09-37-50.tar.gz: 86.16 MiB / 86.16 MiB ┃▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓┃ 10.83 MiB/s 7sCleaning up...
Backup completed successfully.

可以看到,已经正常备份到远程Minio中了。

需要自动执行的,将命令放到 Crontab 中,间隔一定的时间运行即可。


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注