Backup

製作一個簡單的 MySQL 備份腳本以通過 cron 執行,但存在權限問題

  • November 14, 2015

這是一個非常基本的 mysqldump 腳本,它將執行轉儲並將其儲存在本地。

單獨執行 mysqldump 和 gzip 一樣可以正常執行(即它們需要在我的路徑中)

/usr/bin/mysqldump --database $DBNAME --opt --single-transaction -u $USER -p $PASS

但是,當我嘗試將輸出通過管道傳輸到 gzip,然後將其寫入文件時,我遇到了錯誤:

/var/www/vhosts/meh/mysqlbackup/mysqlbackup.sh: line 18: /var/www/vhosts/meh/mysqlbackup/mehbackup.sql.gz: No such file or directory
mysqldump: Got errno 32 on write

這是錯誤中引用的第 18 行:

/usr/bin/mysqldump --database $DBNAME --opt --single-transaction -u$USER -p$PASS | /usr/bin/gzip -9 > $OUTDIR$OUTFILE

那個錯誤號 32 似乎是一個損壞的管道錯誤所以……我假設,因為 mysqldump 可以正常執行,我在編寫結果時遇到問題?可能是權限問題?

我要寫的目錄的權限是 766 (rwxrw-rw-)

我在超級使用者權限下執行它(su

我想將其設置為通過 cron 執行,但直到我弄清楚為什麼會失敗……不愛。

看看你是否可以這樣做:

$ echo "woo" | gzip > asdf.gz
$ gunzip asdf.gz
cat asdf

這應該告訴你你的 gzip 東西工作正常。如果你沒有像我剛才那樣做你的 gzip 東西,也許可以像我剛才那樣嘗試。

換句話說,試試這個:

/usr/bin/mysqldump --database $DBNAME --opt --single-transaction -u $USER -p $PASS | gzip > /var/www/vhosts/meh/mysqlbackup/dump.gz

檢查路徑:

file /var/www/vhosts/meh/mysqlbackup/
ls -ald /var/www/vhosts/meh/mysqlbackup/

並創建目錄:

mkdir -p /var/www/vhosts/meh/mysqlbackup/

引用自:https://serverfault.com/questions/189797