Я пытаюсь сделать дифференциальную резервную копию из последней резервной копии следующим образом:
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
Наконец, я решил с этим:
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 может быть в нескольких строках
SELECT COUNT(*) FROM my_table WHERE last_backup > 'last_date_backup'
... Но я спрашиваю, возможно ли это в командной строке