2011-06-20 21 views
6

Mam skrypt powłoki, który działa co noc, aby wykonać kopie zapasowe bazy danych witryn EC2 i html do S3, a kiedy zarchiwizuje foldery, dołącza do niej datę, aby ułatwić przeglądanie. Ale chcę, aby był w stanie usunąć odpowiednie foldery kopii zapasowej z 3 dni wcześniej. Jak mogę wykonać obliczenia, aby uzyskać datę 3 dni temu?Jak wykonać obliczenia daty w Skrypcie powłoki?

#!/bin/bash 
DATE=`date +%m%d%Y` 

s3cmd put -r /var/lib/mysql/mydb/ s3://mybucket/mydb-$DATE/ 
s3cmd put -r /home/ec2-user/public_html/ s3://mybucket/public_html-$DATE/ 
s3cmd del -r s3://mybucket/mydb-(date 3 days ago) 

Odpowiedz

7

Można użyć -d flagi dla polecenia date:

-d, --date=STRING 
    display time described by STRING, not 'now' 

Tak, wystarczy zmienić datę zmienną:

DATE=`date +%m%d%Y -d "3 days ago"` 
2

Dlaczego nie używasz czasu modyfikacji katalogów? Następnie możesz po prostu wyszukać je za pomocą find. Dla exmaple:

find backups -maxdepth 1 -mtime 3 
Powiązane problemy