我有一个脚本可以将我的svn repo备份到另一台服务器(设置为每天运行的cronjob)
#!/bin/bash
svnadmin dump /path/to/repo | gzip > /backups/`date +%F`_repo.svn.gz
scp /backups/`date +%F`_repo.svn.gz user@ip:/backups/svn/
示例文件名:
2014-04-30_repo.svn.gz,2014-04-29_repo.svn.gz,2014-04-28_repo.svn.gz
使用bash,如何删除超过7天的备份?
答案 0 :(得分:1)
这应该有效:
find /path/to/files -name '*_repo.svn.gz' -mtime +7 | xargs rm
答案 1 :(得分:0)
如果您试图完全依赖日期的文件名,那么就像这样:
TODAY=$(date '+%s')
for f in /backup/*_repo.svn.gz ; do
DATESTR=$(echo $f | sed "s/^\/backup\/\(.*\)_repo\.svn\.gz/\1/")
FILEDATE=$(date -d "$DATESTR" '+%s')
if ((FILEDATE + 7*24*60*60 < TODAY)) ; then
rm $f
fi
done