Игнорировать таблицы MySQL в сценарии резервного копирования
Я следую руководству на этом сайте и пытаюсь исключить базы данных с именем turnkey
в них.
find /var/lib/mysql -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f5 | grep -v ^mysql\$ | tr \\\r\\\n ,\ `
эта команда возвращает все имена баз данных, как я могу удалить их под ключ?
2 ответа
Показанная вами команда является командой оболочки Linux / unix. Если вы добавите еще один шаг
grep -v turnkey
Вы пропустите любые строки со словом "под ключ".
Вот так:
find /var/lib/mysql -mindepth 1 -maxdepth 1 -type d |
cut -d'/' -f5 |
grep -v ^mysql\$ |
grep -v turnkey
tr \\\r\\\n ,\ `
Вы не спрашивали, если это хорошая идея. Я не думаю, что это так, потому что он опирается на определенную структуру ondisk для программного обеспечения демона сервера MySQL, которая не является частью формальной спецификации системы. Другими словами, это может измениться.
Вы могли бы сделать это:
SELECT SCHEMA_NAME FROM `information_schema`.`SCHEMATA`
WHERE SCHEMA_NAME NOT LIKE '%turnkey%'
ORDER BY SCHEMA_NAME
Вы можете использовать немного улучшенный скрипт без каких-либо дополнительных утилит, просто найдите:
find /var/lib/mysql -mindepth 1 -maxdepth 1 -type d ! \( -name turnkey -or -name mysql \) -printf "%f "
Или просто измените свой вариант, чтобы добавить turnkey
в grep -v
Заявление об исключении его из списка:
find /var/lib/mysql -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f5 | grep -v "^mysql\$\|^turnkey$" | tr \\\r\\\n ,\ `