Henry
发布于 2025-01-01 / 10 阅读
0
0

rsync - 增量备份

指令描述

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 脚本中转义 ; 号。

配置 crontab

配置指令:crontab -e

配置内容:

0 2 * * * /path/to/backup.sh

替换 _/path/to/backup.sh_ 为你的脚本实际路径。保存并退出编辑器,_crontab_ 将自动更新并开始按计划执行备份任务。


以上便是本文的全部内容,感谢您的阅读。



评论