简单的 rsync 增量备份,为已删除的文件添加时间戳

简单的 rsync 增量备份,为已删除的文件添加时间戳

我的使用方式rsync如下:

rsync -a --backup --suffix="."$(日期 +"%Y%m%d%H%M")源备份

转储整个文件夹来源进入文件夹备份,还有一个附加功能,如果我修改了某个文件来源,旧版本的备份中的文件将重命名,并在新的复制到备份

这个简单的程序对我来说就可以了,只是我想要一个删除文件改名加上日期后缀,而不是从备份也就是说,如果从源中删除,然后重命名备份带有日期后缀。

我尝试过实现这一点,但目前还没有成功。有什么想法吗?

答案1

添加--backup-dir选项应该可以实现您想要的功能:

--backup-dir=DIR 与 --backup 选项结合使用,这会告诉 rsync 将所有备份存储在接收端的指定目录中。这可用于增量备份。您还可以使用 --suffix 选项指定备份后缀(否则在指定目录中备份的文件将保留其原始文件名)。

例如

rsync -ab --backup-dir=versions --suffix="."$(date +"%Y%m%d%H%M") --delete /source/folder/ /destination/folder

这将在 /destination/versions 创建文件的备份

来源:https://linux.die.net/man/1/rsync

答案2

将选项添加--delete到您的rsync命令中。 --delete告诉 rsync,当它看到目标中存在但不在源中的文件时,它应该从目标中删除它 - 除非您也在使用--backup,否则它不会删除该文件,而是重命名和/或移动它,具体取决于您是否指定了--suffix和/或--backup-dir

在您的情况下,由于您指定了每次运行都会更改的后缀,因此您需要添加一个保护过滤规则,以便以前使用后缀备份的文件不会再次被重命名:

--filter='P *.[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'

该过滤模式会查找以点号和 12 位数字结尾的文件名,这是日期后缀的格式。该后缀有点含糊,因此我建议使用其他格式,并在后缀中添加一些特殊字符或唯一字符串,这样普通文件就不会被误认为是备份文件。

答案3

对于增量 rsync 备份使用 rsnapshot 工具。

示例 rsnapshot.conf

snapshot_root   /backup

cmd_cp          /bin/cp

cmd_rm          /bin/rm

cmd_rsync       /usr/bin/rsync

cmd_ssh /usr/bin/ssh

cmd_logger      /usr/bin/logger

cmd_du          /usr/bin/du

cmd_rsnapshot_diff      /usr/bin/rsnapshot-diff

retain          daily   7
retain          weekly  4

verbose         2

loglevel        3

logfile /var/log/rsnapshot.log

lockfile        /var/run/rsnapshot.pid

backup  root@localhost:/etc/                   localhost/
backup  root@localhost:/home                   localhost/
backup  root@localhost:/var/www/               localhost/

设置 Cronjobs 进行自动备份:

# m     h   dom mon dow command
#Run Rsnapshot At 02:00 Everyday
00      02      *       *       *       /usr/bin/rsnapshot daily
#Run Rsnapshot At 06:00 Every Sunday 
00      06      *       *       0       /usr/bin/rsnapshot weekly

相关内容