保留备份

时间:2014-05-01 16:52:45

标签: linux bash

我使用rsync通过bash脚本进行每日备份。

增量备份将基于此行脚本进入日期文件夹

rsync -avz --link-dest=$LinkDest root@123.123.55.90:/data/backup/"$j" /home/backup/website/$f_date --bwlimit=10000 --log-file=/logs/rsync_"$j"_"$r_date".log

所以我最终会得到如下文件夹

2014-05-01 2014年5月2日 2014年5月3日

我想要做的是制作一个脚本,在30天之后删除这些文件夹。

所以我最终没有结束 2014-05-01 2014-06-01

因此给了我30天的保留时间。

[更新] 这是另一种方法的想法,

如果我更改备份脚本以将备份放入名为“月(日期+%B)”/“日期(日期+%F)”的文件夹中

rsync -avz --link-dest=$LinkDest root@123.123.55.90:/data/backup/"$j" /home/backup/website/$m_date/$f_date --bwlimit=10000 --log-file=/usr/local/src/backup/logs/rsync_"$j"_"$r_date".log

我可以使用另一个脚本来检查月份是什么并删除其他文件夹名称?但现在我仍然坚持如何查看文件夹内容并删除所有文件夹但不匹配m_date = $(日期+%B)

#!/bin/bash

LinkDest=/home/backup/website/
m_date=$(date +%B)

find $LinkDest . -maxdepth 1 -not -name "$m_date" -type f -exec rm {} \;

2 个答案:

答案 0 :(得分:0)

您可以将find-mtime标志一起使用来查找这些文件。 E.g:

find . -mtime 30 -exec rm {} \;

答案 1 :(得分:0)

继承我的解决方案

增量备份脚本

#!/bin/bash


r_date=$(date "+%d-%m-%y")
f_date=$(date +%F)
servers=("123.111.178.38" "192.237.38.167" "118.137.95.142)

for j in "${servers[@]}"
do

echo "server:/data/backup/$j /home/backup/website/$j"

rsync -avz root@123.123.123.200:/data/backup/"$j" /home/backup/website/full --bwlimit=10000     --log-file=/usr/local/src/backup/logs/rsync_"$j"_"$r_date".log

done

在网站内创建一个名为“月”的文件夹,因此在4月5月6月等每个月内都会创建一个日常备份。

然后在每个月的28号。 crontab运行保留脚本,如下所示

#!/bin/bash

LinkDest=/home/backup/website/
m_date=$(date +%B)

echo "Deleteing Old Backups Started"

find $LinkDest/ -xdev -depth -mindepth 1 -not -path "*$m_date*" -not -path "*full*" -exec  rm -Rf {} \;

echo "Deleting Old Backups Completed"