指令描述
rsync 是一个快速且多功能的文件复制工具,它可以在本地或通过网络复制文件和目录。
样例需求
- 每天早上 2:00 开始进行备份 - crontab
- 备份保留七天
- 备份源路径 /sdd
- 备份至路径 /sysbackup/disk_bk/sdd
指令使用简介
创建 backup.sh 脚本文件
文件名: backup.sh
脚本内容:
#!/bin/bash
# 定义源路径和目标路径
SOURCE="/sdd"
DEST="/sysbackup/disk_bk/sdd"
# 定义日志文件
LOGFILE="/var/log/rsyncbackup.log"
# 获取当前日期和时间,格式为 YYYYMMDDHHMMSS
BACKUP_DATE=$(date +%Y%m%d%H%M%S)
BACKUP_DIR="$DEST/$BACKUP_DATE"
# 检查目标备份目录是否存在,如果不存在则创建
if [ ! -d "$DEST" ]; then
mkdir -p "$DEST"
fi
# 使用 rsync 进行备份,并保留日志
rsync -avh --delete --link-dest="$DEST/current" --log-file="$LOGFILE" "$SOURCE" "$BACKUP_DIR" && \
rm -f "$DEST/current" && \
ln -s "$BACKUP_DIR" "$DEST/current"
# 删除七日前的备份
find "$DEST" -maxdepth 1 -type d -mtime +7 -exec rm -rf {} \;
rsync 命令备注
- -a:归档模式,保留文件属性。
- -v:详细模式,输出更多详细信息。
- -h:可读性高的输出格式。
- --delete:删除目标目录中不存在的源目录中的文件。
- --link-dest="$DEST/current":创建硬链接而不是复制不变的文件。
- --log-file="$LOGFILE":指定日志文件。
- "$SOURCE":源目录。
- "$BACKUP_DIR":目标备份目录。
- &&:如果 rsync 命令成功执行,则执行后续命令。
- rm -f "$DEST/current":删除旧的符号链接。
- ln -s "$BACKUP_DIR" "$DEST/current":创建一个新的符号链接指向最新的备份目录。
find 指令备注
- "$DEST" : 在 DEST 目录中进行查找
- -maxdepth 1:确保搜索仅在 DEST 目录中进行,而不递归查询子目录
- -type d: 指定为目录而不是文件
- -mtime +7: 最后修改时间超过七天
- -exec: 执行指定命令
- rm -rf {} \; : 强制删除 find 指令找到的文件夹,
{}
会被找到的文件夹替换,\
用于在 shell 脚本中转义;
号。
- rm -rf {} \; : 强制删除 find 指令找到的文件夹,
配置 crontab
配置指令:crontab -e
配置内容:
0 2 * * * /path/to/backup.sh
替换 _/path/to/backup.sh_
为你的脚本实际路径。保存并退出编辑器,_crontab_
将自动更新并开始按计划执行备份任务。
以上便是本文的全部内容,感谢您的阅读。