我有一个shell脚本,每晚运行以备份我的EC2站点数据库和html到S3,当它备份文件夹时,它会将日期附加到它以便于查看。但是我希望它能够在3天之前删除相关的备份文件夹。我如何进行计算以获得3天前的日期?
#!/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)
答案 0 :(得分:9)
您可以在日期命令中使用-d标志:
-d, --date=STRING
display time described by STRING, not 'now'
因此,只需将日期变量更改为:
DATE=`date +%m%d%Y -d "3 days ago"`
答案 1 :(得分:2)
为什么不使用目录的修改时间?然后你可以用find搜索它们。例如:
find backups -maxdepth 1 -mtime 3
答案 2 :(得分:0)
在BSD / Mac上有所不同。您需要使用-v
选项:
date -v -3d +%m%d%Y