Как сделать вычисления даты в Shell Scripting? - PullRequest
7 голосов
/ 21 июня 2011

У меня есть сценарий оболочки, который запускается каждую ночь для резервного копирования базы данных сайтов 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)

Ответы [ 3 ]

9 голосов
/ 21 июня 2011

Вы можете использовать флаг -d для команды даты:

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

Итак, просто измените переменную даты на:

DATE=`date +%m%d%Y -d "3 days ago"`
2 голосов
/ 21 июня 2011

Почему вы не используете время модификации каталогов? Тогда вы можете просто искать их с помощью find. Для примера:

find backups -maxdepth 1 -mtime 3
0 голосов
/ 17 октября 2018

На BSD / Mac все по-другому. Вам необходимо использовать опцию -v:

date -v -3d +%m%d%Y
...