2012-06-28 57 views
0

我按照this站點上的指南進行操作,嘗試排除其中名稱爲turnkey的數據庫。忽略備份腳本中的mysql表

find /var/lib/mysql -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f5 | grep -v ^mysql\$ | tr \\\r\\\n ,\ ` 

此命令返回所有的數據庫名稱,我該如何刪除交鑰匙?

回答

1

您顯示的命令是Linux/unix shell命令。如果您添加另一個步驟

grep -v turnkey 

您將省略其中包含單詞「turnkey」的任何行。

像這樣:

find /var/lib/mysql -mindepth 1 -maxdepth 1 -type d | 
cut -d'/' -f5 | 
grep -v ^mysql\$ | 
grep -v turnkey 
tr \\\r\\\n ,\ ` 

你沒問,如果這是一個好主意。我不認爲這是因爲它依賴於MySQL服務器守護進程軟件的特定ondisk結構,它不是系統正式規範的一部分。換句話說,它可能會改變。

你可以這樣做:

SELECT SCHEMA_NAME FROM `information_schema`.`SCHEMATA` 
WHERE SCHEMA_NAME NOT LIKE '%turnkey%' 
ORDER BY SCHEMA_NAME 
+0

我很欣賞這一點,因爲我也爲這個教程中去,甚至沒有考慮他們的教程之外思考,可恥的是我沒有用'mysql的-e「做....「',哇謝謝你! –

0

你可以用一點點改進的腳本沒有任何額外的事業,只是純粹的發現:

find /var/lib/mysql -mindepth 1 -maxdepth 1 -type d ! \(-name turnkey -or -name mysql \) -printf "%f " 

或者只是修改您的變體在grep -v語句添加turnkey從列表中排除:

find /var/lib/mysql -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f5 | grep -v "^mysql\$\|^turnkey$" | tr \\\r\\\n ,\ `