Bash Date Usage For Naming
I am recording some scripting I used to create backup classification/retention naming. It can be simplified into one function easily but I kept it like this so I can copy and paste easier which function I need. Script is pretty self explanatory but basically it takes today's date and name my eventual backup file name based on some logic.
# cat test_class.sh |
HOSTNAME=$( hostname -s) |
BACKUP_CLASSIFICATION= "UNCLASSIFIED" |
function retention_date() { |
MM=` date -d ${1} +%m` |
DD=` date -d ${1} +%d` |
DAY=` date -d ${1} +%u` |
if [ $DD == 01 ] |
then |
if [ $MM == 01 ] |
then |
BACKUP_CLASSIFICATION= "YEARLY" |
else |
BACKUP_CLASSIFICATION= "MONTHLY" |
fi |
else |
if (($DAY == 7)); then |
BACKUP_CLASSIFICATION= "WEEKLY" |
else |
BACKUP_CLASSIFICATION= "DAILY" |
fi |
fi |
} |
function retention_today() { |
MM=` date '+%m' ` |
DD=` date '+%d' ` |
DAY=` date +%u` |
|
if [ $DD == 01 ] |
then |
if [ $MM == 01 ] |
then |
BACKUP_CLASSIFICATION= "YEARLY" |
else |
BACKUP_CLASSIFICATION= "MONTHLY" |
fi |
else |
if (($DAY == 7)); then |
BACKUP_CLASSIFICATION= "WEEKLY" |
else |
BACKUP_CLASSIFICATION= "DAILY" |
fi |
fi |
} |
echo "TEST TODAY" |
DATE=` date +%Y-%m-%d` |
retention_today |
echo $HOSTNAME-$BACKUP_CLASSIFICATION-$DATE |
|
echo |
echo "TEST SPECIFIC DATES" |
testD=( |
'2018-01-01' |
'2018-02-02' |
'2018-03-01' |
'2018-02-06' |
'2018-07-14' |
'2018-07-15' |
) |
for D in "${testD[@]}" |
do |
DATE=` date -d ${D} +%Y-%m-%d` |
retention_date $D |
echo $HOSTNAME-$BACKUP_CLASSIFICATION-$DATE |
done |
Run and output.
# ./test_class.sh |
TEST TODAY |
oci04-DAILY-2018-07-20 |
TEST SPECIFIC DATES |
oci04-YEARLY-2018-01-01 |
oci04-DAILY-2018-02-02 |
oci04-MONTHLY-2018-03-01 |
oci04-DAILY-2018-02-06 |
oci04-DAILY-2018-07-14 |
oci04-WEEKLY-2018-07-15 |