当然,可以遵循以下脚本来实现备份多个数据库、压缩打包并删除 10 天前备份的功能。这里我们使用的是 mysqldump
来备份 MySQL 数据库,tar
进行压缩,并利用 find
命令删除旧文件。假设你使用的是 Linux 环境,可以编写一个 Bash 脚本如下:
#!/bin/bash
# 配置项
BACKUP_DIR="/path/to/backup" # 备份存储的路径
DATABASES=("db1" "db2" "db3") # 要备份的数据库列表
MYSQL_USER="yourusername" # MySQL 用户名
MYSQL_PASSWORD="yourpassword" # MySQL 密码
DATE=$(date +%Y-%m-%d) # 获取当前日期
# 创建备份目录如果不存在的话
mkdir -p "$BACKUP_DIR/$DATE"
# 备份每个数据库并压缩
for DB in "${DATABASES[@]}"; do
FILENAME="$BACKUP_DIR/$DATE/${DB}_$DATE.sql"
mysqldump -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" "$DB" > "$FILENAME"
tar -czvf "${FILENAME}.tar.gz" "$FILENAME" --remove-files
done
# 删除 10 天前的备份
find "$BACKUP_DIR" -type d -mtime +10 -exec rm -rf {} \;
echo "备份完成,位于 $BACKUP_DIR/$DATE"
请 根据下述步骤进行操作:
-
将上述脚本复制到一个文件中,比如
backup.sh
。 -
修改脚本中的配置项,如
BACKUP_DIR
,DATABASES
,MYSQL_USER
, 和MYSQL_PASSWORD
。 -
给脚本添加执行权限,例如
chmod +x backup.sh
。 -
你可以手动执行脚本
./backup.sh
,或者通过cron job
设置自动备份。例如每天凌晨 2 点运行备份(编辑crontab
文件):crontab -e
添加以下行:
0 2 * * * /path/to/backup.sh
这样,这个脚本将按预期备份多个数据库,压缩备份文件并删除 10 天前的备份。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于