Backup
製作一個簡單的 MySQL 備份腳本以通過 cron 執行,但存在權限問題
這是一個非常基本的 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/