增量备份脚本
时间: 2023-06-28 20:03:50 浏览: 106
一个简单的增量备份脚本可以使用 rsync 命令。rsync 可以快速同步两个目录,只传输修改的文件,而不是整个文件。以下是一个基本的增量备份脚本:
```bash
#!/bin/bash
# 定义源和目标目录
src='/path/to/source'
dest='/path/to/dest'
# 执行 rsync 命令进行增量备份
rsync -avz --delete --link-dest=$dest/current $src $dest/$(date +%Y-%m-%d_%H-%M-%S)
# 更新 current 符号链接
rm -f $dest/current
ln -s $dest/$(date +%Y-%m-%d_%H-%M-%S) $dest/current
```
上面的脚本将源目录 `/path/to/source` 的内容备份到目标目录 `/path/to/dest` 中,每次备份将创建一个新的子目录,目录名包含当前日期和时间(例如 `2021-07-01_14-30-00`)。`--link-dest` 选项指定备份时使用前一个备份作为基础,以便只备份更改的文件。最后,脚本会更新一个名为 `current` 的符号链接,指向最新的备份目录。这样,您就可以轻松地将最新备份的内容复制到其他位置。
请注意,这只是一个简单的脚本示例,您可能需要根据自己的需求进行修改。例如,您可能需要添加更多的选项来排除某些文件或目录,或者您可能需要使用其他工具来创建备份。
相关问题
mysqldump增量备份脚本
以下是一个mysqldump增量备份脚本的示例:
```shell
#!/bin/bash
# 定义备份目录和日志文件路径
backup_dir="/data/backup/mysql"
log_file="/data/backup/mysql/backup.log"
# 获取当前时间
now=$(date +"%Y-%m-%d-%H-%M-%S")
# 定义全量备份函数
function full_backup() {
# 创建备份目录
mkdir -p $backup_dir/full
# 使用mysqldump备份所有数据库
/usr/local/mysql/bin/mysqldump -uroot -p123456 --all-databases > $backup_dir/full/all-databases-$now.sql
# 记录备份日志
echo "[$now] Full backup success" >> $log_file
}
# 定义增量备份函数
function incremental_backup() {
# 创建备份目录
mkdir -p $backup_dir/incremental
# 获取上次备份的binlog文件名和位置
last_binlog=$(tail -n 1 $backup_dir/last_binlog)
last_binlog_file=$(echo $last_binlog | awk '{print $1}')
last_binlog_pos=$(echo $last_binlog | awk '{print $2}')
# 获取当前binlog文件名和位置
current_binlog=$(mysql -uroot -p123456 -e "show master status\G" | grep -E "File|Position")
current_binlog_file=$(echo $current_binlog | awk '{print $2}')
current_binlog_pos=$(echo $current_binlog | awk '{print $4}')
# 复制上次备份到当前备份之间的binlog文件到备份目录
if [ "$last_binlog_file" != "$current_binlog_file" ]; then
for file in $(ls /usr/local/mysql/data/mysql-bin.0*); do
if [ "$file" \> "/usr/local/mysql/data/$last_binlog_file" ] && [ "$file" \<= "/usr/local/mysql/data/$current_binlog_file" ]; then
cp $file $backup_dir/incremental/
fi
done
else
cp /usr/local/mysql/data/$current_binlog_file $backup_dir/incremental/
fi
# 记录备份日志
echo "$current_binlog_file $current_binlog_pos" > $backup_dir/last_binlog
echo "[$now] Incremental backup success" >> $log_file
}
# 判断当前时间是否为周日凌晨3点,如果是则执行全量备份,否则执行增量备份
if [ $(date +%w) -eq 0 ] && [ $(date +%H) -eq 3 ]; then
full_backup
else
incremental_backup
fi
```
该脚本会在周一到周六凌晨3点执行增量备份,将mysql-bin.00000*文件复制到指定目录;在周日凌晨3点执行全量备份,使用mysqldump将所有的数据库导出,并删除上周留下的备份文件。备份文件会保存在指定的备份目录中,并记录备份日志。
rsync增量备份脚本
以下是rsync增量备份脚本的介绍和使用方法:
1. rsync增量备份脚本是一种基于rsync命令的备份脚本,可以实现增量备份,即只备份修改过的文件,而不是所有文件。
2. 使用方法:
- 首先将rsync-incremental-backup-remote脚本复制到A机器的/usr/bin目录。
- 配置免密登入,即在A机器上生成公钥和私钥,并将公钥复制到B机器上的authorized_keys文件中,这样就可以在A机器上执行rsync命令备份B机器上的文件了。
- 在A机器上执行rsync-incremental-backup-remote脚本,指定备份的源目录和目标目录,例如:
```
rsync-incremental-backup-remote /data/backup/ user@192.168.1.100:/data/backup/
```
这个命令会将A机器上的/data/backup/目录备份到B机器上的/data/backup/目录中。
阅读全文