2011-06-20 6 views
6

Tengo un script de shell que se ejecuta todas las noches para hacer una copia de seguridad de mi base de datos de sitios EC2 y html en S3, y cuando respalda las carpetas, le agrega la fecha para facilitar su visualización. Pero también quiero que elimine las carpetas de respaldo relevantes de 3 días antes. ¿Cómo puedo hacer los cálculos para obtener la fecha hace 3 días?¿Cómo hacer la fecha de los cálculos en Shell Scripting?

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

Respuesta

7

Usted puede utilizar la opción -d del comando fecha:

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

lo tanto, sólo cambiar su variable de fecha a:

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

¿Por qué no utiliza el tiempo de modificación de los directorios? Luego puedes buscarlos con find. Para exmaple:

find backups -maxdepth 1 -mtime 3 
Cuestiones relacionadas