我的使用方式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 创建文件的备份
答案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