2014-04-30 3 views
0

У меня есть скрипт, который резервная копия моего SVN репо на другой сервер (настройка как cronjob выполняется ежедневно)Bash Удалить старые файлы Дату имени

#!/bin/bash 

svnadmin dump /path/to/repo | gzip > /backups/`date +%F`_repo.svn.gz 

scp /backups/`date +%F`_repo.svn.gz [email protected]:/backups/svn/ 

Так пример имена файлов:

2014- 04-30_repo.svn.gz, 2014-04-29_repo.svn.gz, 2014-04-28_repo.svn.gz

Использование bash, Как я могу удалить резервные копии старше 7 дней?

ответ

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 
1

Это должно работать:

find /path/to/files -name '*_repo.svn.gz' -mtime +7 | xargs rm 
Смежные вопросы