Command-Line

如何通過管道使用 7z 壓縮 mysql 轉儲?

  • January 10, 2018

我一直在嘗試使用管道運算符通過 7z 壓縮我的 mysqldump 輸出(我見過這個問題,但它的答案使用 xz 而不是 7z)。這是我到目前為止所嘗試的:

mysqldump -u root -p Linux_Wiki | 7z > backup.sql.7z

和:

mysqldump -u root -p Linux_Wiki | 7za > backup.sql.7z

和:

mysqldump -u root -p Linux_Wiki | '7za a' > backup.sql.7z

和:

mysqldump -u root -p Linux_Wiki | `7za a` > backup.sql.7z

所有四個都失敗了,但我確信我已經p7zip安裝了,畢竟最後一次嘗試給出了這個輸出:

Enter password: bash: 7-Zip: command not found
mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) when trying to connect

.my.cnf首先將密碼儲存在使用者主目錄中呼叫的文件中,格式如下:

[mysqldump]
password=secret

然後,您必須使用mysqldump不帶-p標誌來轉儲 mysql 數據庫(它現在使用文件中的密碼):

mysqldump -u root database | 7z a -si backup.sql.7z
  • 添加到存檔的a標誌7z
  • -si表示從標準輸入(從匿名管道)讀取。

有些人可能不贊成這種做法,但您可以將密碼放在命令行上,如下所示:

mysqldump -u root -pmyrootpassword database | 7z a -si backup.sql.7z

它必須緊跟在-p參數之後。

引用自:https://unix.stackexchange.com/questions/232006