mysqldump избежать создания файла, если нет результатов

0

Я пытаюсь сделать дифференциальную резервную копию из последней резервной копии следующим образом:

mysqldump --no-create-info --replace --skip-comments --skip-triggers --hex-blob  
testdb mytable --where="last_backup > '$last_backup'" | gzip -c > backup_file.gz

Все нормально, но если никакие изменения из последней резервной копии mysqldump не получают один пустой файл (только строки заголовка и нижнего колонтитула, относящиеся к mysql)

Есть ли способ избежать создания файла backup_file.gz, если никаких изменений?

НЕКОТОРЫЕ КАК:

IF ((SELECT COUNT(*) FROM my_table WHERE last_backup > '$last_backup') > 0) THEN 
mysqldump --no-create-info --replace --skip-comments --skip-triggers --hex-blob  
testdb mytable --where="last_backup > '$last_backup'" | gzip -c > backup_file.gz
  • 0
    Нет. Спасибо ... приведенный выше код является частью моего собственного инструмента резервного копирования (потому что у меня особый случай ...) Моя проблема не в том, как сделать резервную копию ... что мне нужно, если без результатов нет файла создания. Я знаю также, что я могу сначала попробовать запрос MySQL SELECT COUNT(*) FROM my_table WHERE last_backup > 'last_date_backup' ... Но я спрашиваю, возможно ли это в командной строке
Теги:

1 ответ

0
Лучший ответ

Наконец, я решил с этим:

if [[ "$(mysql -sse 'USE my_bd; SELECT COUNT(*) FROM my_table WHERE last_backup > '$last_backup'" -gt "0" ]]; then 
mysqldump --no-create-info --replace --skip-comments --skip-triggers --hex-blob  
testdb mytable --where="last_backup > '$last_backup'" | gzip -c > backup_file.gz 
fi

Команда mysqldump должна быть в одной строке. Я разделился, чтобы быть более читаемым. Но условие If может быть в нескольких строках

Ещё вопросы

Сообщество Overcoder
Наверх
Меню