
Я хочу выгрузить свою базу данных в spacific дату в spacific каталоге, база данных выгружается нормально со скриптом, но он не выгружается в указанный каталог - выгружается только в каталог "/", а не в spacified каталог. Вот мой скрипт-
#! /bin/bash
now=$(date +%d)
if [ "$now" == 1 ] | [ "$now" == 4 ] | [ "$now" == 7 ]
then
BACKUP_DIR="/backup/database/week1"
elif [ "$now" == 10 ] | [ "$now" == 13 ]
then
BACKUP_DIR="/backup/database/week2"
elif [ "$now" == 16 ] | [ "$now" == 19 ]
then
BACKUP_DIR="/backup/database/week3"
elif [ "$now" == 22 ] | [ "$now" == 25 ] | [ "$now" == 28 ] | [ "$now" == 31 ]
then
BACKUP_DIR="/backup/database/week4"
fi
TIMESTAMP=$(date -u +"%d-%m-%Y")
MYSQL_USER="backupuser"
MYSQL=/usr/bin/mysql
MYSQL_PASSWORD="efeww2"
MYSQLDUMP=/usr/bin/mysqldump
mkdir -p "$BACKUP_DIR/$TIMESTAMP"
databases=`$MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|mysql|information_schema|performance_schema|phpmyadmin)"`
for db in $databases; do
$MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db > $BACKUP_DIR/$TIMESTAMP/$db-$(date +%Y-%m-%d-%H.%M.%S).sql
done
решение1
Я подозреваю, что проблема в OR
операторе, услугами которого вы пользуетесь.
СИНТАКСИС:
if [ condition1 ] || [ condition2 ]
Попробуйте следующий код:
#! /bin/bash
now=$(date +%d)
if [ "$now" == 1 ] || [ "$now" == 4 ] || [ "$now" == 7 ]
then
BACKUP_DIR="/backup/database/week1"
elif [ "$now" == 10 ] || [ "$now" == 13 ]
then
BACKUP_DIR="/backup/database/week2"
elif [ "$now" == 16 ] || [ "$now" == 19 ]
then
BACKUP_DIR="/backup/database/week3"
elif [ "$now" == 22 ] || [ "$now" == 25 ] || [ "$now" == 28 ] || [ "$now" == 31 ]
then
BACKUP_DIR="/backup/database/week4"
fi
....
....
Я не понимаю, почему вы пропускаете несколько дней, например, 2, 3, 5,...
Я предлагаю вам использовать приведенную ниже опцию, если вы пытаетесь работать с месяцем недели по отношению к календарю.
now=`echo $((($(date +%-d)-1)/7+1))`
if [ "$now" -eq 1 ]; then
BACKUP_DIR="/backup/database/week1"
elif [ "$now" -eq 2 ]; then
BACKUP_DIR="/backup/database/week2"
elif [ "$now" -eq 3 ]; then
BACKUP_DIR="/backup/database/week3"
else
BACKUP_DIR="/backup/database/week4"
fi
...
...
или если вы хотите иметь буквально 7-дневную неделю, попробуйте следующее:
now=$(date +%d)
if [ "$now" -le 7 ]; then
BACKUP_DIR="/backup/database/week1"
elif [ "$now" -le 14 ]; then
BACKUP_DIR="/backup/database/week2"
elif [ "$now" -le 21 ]; then
BACKUP_DIR="/backup/database/week3"
else
BACKUP_DIR="/backup/database/week4"
fi