سؤال

I have a script that'll backup my svn repo to another server (setup as a cronjob to run daily)

#!/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/

So example filenames:

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

Using bash, How would I go about removing backups older than 7 days old?

هل كانت مفيدة؟

المحلول 2

If you're trying to rely totally on the file name for the date, then something like this:

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

نصائح أخرى

This should work:

find /path/to/files -name '*_repo.svn.gz' -mtime +7 | xargs rm
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top