2010-06-28 11 views
0

我創建一個片段在我的Mac OS X終端(bash)的,這將讓我做下面的一個步驟中使用:創建一個從服務器的MySQL備份,與SCP本地下載和替換MAMP數據庫

  1. 通過ssh
  2. 登錄到我的服務器上創建我的WordPress數據庫
  3. 的mysqldump的備份下載備份文件到我的本地硬盤
  4. 更換我的本地MAMP臨mysql數據庫

這個想法是創建一個當前在線網站的本地版本來進行開發。到目前爲止,我有這個:

ssh server 'mysqldump -u root -p'mypassword' --single-transaction wordpress_database > wordpress_database.sql' && scp [email protected]:~/wordpress_database.sql /Users/me/Downloads/wordpress_database.sql && /Applications/MAMP/Library/bin/mysql -u root -p'mylocalpassword' wordpress_database < /Users/me/Downloads/wordpress_database.sql 

很明顯,我對這個有點新,而且我覺得在這裏有很多不必要的冗餘。但是,它確實有效。哦,並且ssh命令ssh server正在工作,因爲我已經在本地.ssh文件中創建了一個別名來執行此操作。

這裏是想我的幫助:

  1. 這能縮短?做得更簡單?
  2. 我在做這個很好的方法嗎?有沒有更好的辦法?
  3. 我該如何添加gzip壓縮?

我很欣賞這方面的任何指導。謝謝。

+1

它的安全性差的做法,通過在命令行上的密碼。將密碼放在一個文件中,執行'chmod 400 passwordfile'並使用'... -p $( 2010-06-29 04:40:14

回答

0

這就是我也會這樣做的方式。

要回答你的問題#3:

問:我怎麼能gzip壓縮到這個?

答:你可以在mysqldump命令後立即運行gzip wordpress_database.sql然後scp gzip壓縮文件,而不是(wordpress_database.sql.gz)

+0

如果我這樣做了,那麼我想我需要在本地之前解壓縮它數據庫覆蓋? – 2010-06-28 19:04:12

+0

這是正確的。這可以通過'gunzip wordpress_database.sql.gz'來完成 – ryanprayogo 2010-06-28 19:06:42

1

您可以在一個步驟需要導出你的服務器和你的本地數據庫(用gzip的壓縮暗示):

ssh server "mysqldump -u root -p'mypassword' --single-transaction wordpress_database | gzip -c" | gunzip -c | /Applications/MAMP/Library/bin/mysql -u root -p'mylocalpassword' wordpress_database

的雙引號是這裏的關鍵,因爲你要gzip在服務器上執行,並gunzip在本地執行。

我還將我的mysql密碼存儲在〜/ .my.cnf(和chmod 600該文件)中,這樣我就不必在命令行上提供它們(系統上的其他用戶可以看到它們) :

[mysql] 
password=whatever 

[mysqldump] 
password=whatever 
+0

請注意,如果您使用這種方法,如果您的連接在中間斷開(斷開連接等),您的本地數據庫將以不一致的狀態結束(只有一些創建的表格) – ryanprayogo 2010-06-28 19:09:39

+1

哦,這真的很棒。服務器上的〜/ .my.cnf文件是?還是本地機器? – 2010-06-28 19:12:36

+0

@ryanprayogo我很好,實際上,因爲本地副本只用於開發,而且我是唯一一個有權訪問的人。 – 2010-06-28 19:18:22

相關問題