我使用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 {} \;
答案 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"