如何使用rsync编写增量备份脚本



我正在尝试使用rsync实现自定义备份功能。为此,我修改了以下现有代码https://linuxconfig.org/how-to-create-incremental-backups-using-rsync-on-linux,如下所示:

#!/bin/zsh
#https://linuxconfig.org/how-to-create-incremental-backups-using-rsync-on-linux
# A script to perform incremental backups using rsync
set -o errexit
set -o nounset
set -o pipefail
incremental_bckp_rsync_dir(){
readonly SOURCE_DIR="/$1"
readonly BACKUP_DIR="/$2/$1"
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 -av --delete 
"${SOURCE_DIR}/" 
--link-dest "${LATEST_LINK}" 
--exclude=".cache" 
"${BACKUP_PATH}"

rm -rf "${LATEST_LINK}"
ln -s "${BACKUP_PATH}" "${LATEST_LINK}"
}

incremental_bckp_rsync_dir path/to/dir path/to/backup

它成功地备份了dir,但是每次我运行脚本时,备份目录的大小(使用命令du -h path/to/backup获得)似乎都会翻倍(这意味着它不是增量的,据我所知。有办法解决吗?

存在一个使用rsync并将备份文件夹组织到目录中的工具,以便将来方便使用…这个工具就是Butterfly Backup。我发现这篇文章(以及它的文档)解释了它是如何工作的:https://fedoramagazine.org/butterfly-backup/

文档:https://github.com/MatteoGuadrini/Butterfly-Backup

简单的使用:

bb backup --computer pc1 --destination /nas/mybackup --data User Config --type MacOS --mode Full

目录为:

bb list --catalog /nas/mybackup
...
BUTTERFLY BACKUP CATALOG
Backup id: f65e5afe-9734-11e8-b0bb-005056a664e0
Hostname or ip: pc1
Timestamp: 2018-08-03 17:50:36
Backup id: 4f2b5f6e-9939-11e8-9ab6-005056a664e0
Hostname or ip: pc1
Timestamp: 2018-08-06 07:26:46
Backup id: cc6e2744-9944-11e8-b82a-005056a664e0
Hostname or ip: pc1
Timestamp: 2018-08-06 08:49:00

我从来没有尝试过这个,但你可以使用-n|--dry-run选项让rsync只是列出它将传输的所有文件(因此所有更改,删除和新文件),例如:

rsync -an --delete --out-format="%f" src_path/ dst_path

并将其输出存储到一个文件中,然后启动另一个rsync,其中--files-from选项将此列表提供给它,以便仅将这些文件传输到不同的目的地(在其路径中带有时间戳等)。

另一种方法(我主要使用)是让rsync创建备份(镜像),并使用-b|--backup选项在单独的路径中存储修改/删除文件的副本。例如

TIMESTAMP=$(date '+%Y-%m-%d_%H%M%S')
rsync -av --delete --backup --backup-dir=$DEST/DELETED/$TIMESTAMP" $SRC/ $DEST

这将保持你的备份同步,但也创建一个额外的备份旧文件在一个单独的文件夹下。/DELETED/每次运行在你的目标。通常你只想保留最近X天的备份,所以你必须创建一个删除作业来清除$DEST/DELETED/下的旧文件夹。

相关内容

  • 没有找到相关文章

最新更新