Добавление даты в Mysqldump при запуске cmd из Java и оболочки

#mysql #linux #shell #java-8 #centos

#mysql #linux #оболочка #java-8 #centos

Вопрос:

Я хотел бы добавить дату в имя файла при создании резервной копии с использованием mysqldump. Я сохраняю команду в файле свойств и запускаю ее через ProcessBuilder и сценарий оболочки. Я пробовал несколько способов добавления даты (кстати, все ответы здесь были только в том случае, если мы запускали команду непосредственно в Linux)

mysqldump -u <user> -p <database> | gzip > <backup>$(date %Y-%m-%d-%H.%M.%S).sql.gz Ошибка: не найдена таблица для » %Y-%m-%d-%H.%M.%S»

mysqldump -u root -ppassword dbName --result-file=/opt/backup/`date -Iminutes`.dbName.sql Получена ошибка: неизвестная опция -I

Есть ли способ добавить дату в саму команду? Я не могу добавить дату в метод Java или сценарий оболочки.

Ответ №1:

Из вашего вопроса я не могу сказать, работаете ли вы в оболочке. Если это так, попробуйте эти три строки для создания файла резервной копии.

  DATE=`date  %Y-%m-%d-%H.%M.%S`
 FILENAME=backup${DATE}.sql.gz
 mysqldump -u user -p database | gzip > ${FILENAME}
  

Обратите внимание, как вы должны окружить команду date в первой строке обратными метками, а не ${} , чтобы получить ее результат в переменной оболочки DATE.

Комментарии:

1. Я также попытался запустить команду с обратными ссылками: mysqldump -u root -ppassword dbName —result-file=/opt//backup/ date %Y-%m-%d-%H.%M.%S .dbname.sql Я получил сообщение об ошибке: не удалось найти таблицу: » %Y-%m-%d-%H.%M.%S`.dbname.sql»

2. Я не могу изменить команду в оболочке, я сохраняю эту команду в файле, а затем должен запускать ее напрямую через сценарий оболочки. Итак, я надеялся добавить дату и время выполнения команды