用shell 写一个备份回滚脚本
时间: 2023-03-19 16:24:09 浏览: 138
以下是一个备份回滚脚本的示例,它可以备份指定目录下的文件,并在需要时还原到之前的备份版本。
```bash
#!/bin/bash
# 定义备份目录
BACKUP_DIR="/backup"
# 定义需要备份的目录
SOURCE_DIR="/var/www/html"
# 获取当前时间作为备份文件名
TIMESTAMP=$(date +%Y-%m-%d-%H%M%S)
BACKUP_FILE="$BACKUP_DIR/backup-$TIMESTAMP.tar.gz"
# 备份指定目录
tar -czvf "$BACKUP_FILE" "$SOURCE_DIR"
# 打印备份文件名
echo "Backup created: $BACKUP_FILE"
# 定义还原函数
rollback() {
# 获取最新备份文件名
LAST_BACKUP=$(ls -t "$BACKUP_DIR" | head -1)
# 检查备份目录是否为空
if [ -z "$LAST_BACKUP" ]; then
echo "No backup found."
exit 1
fi
# 解压备份文件到指定目录
tar -xzvf "$BACKUP_DIR/$LAST_BACKUP" -C "$SOURCE_DIR"
# 打印还原成功消息
echo "Rollback to backup: $LAST_BACKUP"
}
# 如果第一个参数为 "rollback",则执行还原函数
if [ "$1" = "rollback" ]; then
rollback
fi
```
该脚本首先定义了备份目录和需要备份的目录,并使用 `tar` 命令备份了指定目录。备份文件名使用当前时间戳生成,并打印了备份文件名。
在需要还原备份的情况下,脚本会执行名为 `rollback` 的函数。该函数会获取最新备份文件名,并使用 `tar` 命令将其解压缩到指定目录。解压缩完成后,打印还原成功的消息。
最后,脚本检查第一个参数是否为 "rollback",如果是,则执行还原函数。如果不是,则只进行备份操作。
你可以将该脚本保存为一个文件,比如 `backup.sh`,并通过 `./backup.sh` 命令来执行备份操作。如果需要还原备份,则可以使用 `./backup.sh rollback` 命令来还原最新备份。