#!/bin/bash
# A script to perform incremental backups using rsync
set -o errexit
set -o nounset
set -o pipefail
readonly SOURCE_DIR="你要备份的文件夹路径"
readonly BACKUP_DIR="你要将这个文件夹备份到什么路径下"
readonly DATETIME="$(date '+%Y%m%d_%H%M%S')"
readonly BACKUP_PATH="${BACKUP_DIR}/${DATETIME}"
readonly LATEST_LINK="${BACKUP_DIR}/latest"
mkdir -p "${BACKUP_DIR}"
rsync -avc --delete \
"${SOURCE_DIR}/" \
--link-dest "${LATEST_LINK}" \
"${BACKUP_PATH}"
rm -rf "${LATEST_LINK}"
ln -s "${BACKUP_PATH}" "${LATEST_LINK}"
这段代码是一个用来执行增量备份的 Bash 脚本,它使用 rsync 命令来实现本地增量备份。每次执行的时候,脚本会对比现在的源目录里的文件和上一次备份出来的文件的区别,只把其中和上次备份不一样的文件拷贝出来,和上次备份一样的就建立一个硬链接,避免重复复制文件造成一模一样的文件复制多次。
脚本首先定义了一些变量,包括源目录 SOURCE_DIR,备份目录 BACKUP_DIR,当前日期和时间 DATETIME,备份路径 BACKUP_PATH 和最新链接 LATEST_LINK。
接下来,脚本使用 mkdir -p 命令创建备份目录。
然后,脚本使用 rsync 命令执行增量备份。它使用 -avc 选项来保留文件属性并进行校验,(如果要只根据修改时间来判定文件是否相同就去掉c),使用 --delete 选项来删除目标目录中多余的文件,并使用 --link-dest 选项来指定上一次备份,以便只备份改变的文件。
最后,脚本删除最新链接并创建一个新的指向当前备份路径的链接作为最新备份。