8

我有一个每天晚上运行的 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)
4

3 回答 3

11

您可以对 date 命令使用 -d 标志:

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

因此,只需将您的日期变量更改为:

DATE=`date +%m%d%Y -d "3 days ago"`
于 2011-06-20T20:48:48.760 回答
2

为什么不使用目录的修改时间?然后你可以用 find 来搜索它们。例如:

find backups -maxdepth 1 -mtime 3
于 2011-06-20T20:47:48.390 回答
1

在 BSD/Mac 上有所不同。您需要使用以下-v选项:

date -v -3d +%m%d%Y
于 2018-10-17T11:23:07.183 回答