2011-10-31 56 views
1

因此,我有一個腳本,它嘗試在服務器上創建一個sql文件,然後將該文件拉上。在寫入文件之前,我遇到了GZip調用正在執行的問題。奇怪的是,當我在我的虛擬機實例上運行它時,它完全沒問題。但是當我在其中一臺服務器上測試它時,只會失敗。Bash腳本不同步運行

echo "Backing up $DB..." 
$PROG_MYSQLDUMP -u $USERNAME -p${PASSWORD} -h $HOST $DB $IGNORES > ${DEST_FILE} 

echo "Zipping file...${DEST_FILE}" 
$PROG_GZIP $DEST_FILE 

我唯一的想法就是gzip的呼叫時,對於文件檢查之前增加一個檢查,只有那張是它的存在,否則後像X檢查失敗。我不喜歡這個解決方案。有什麼我錯過讓腳本自行等待?

謝謝。

+0

無論你看到的我向你保證,'$ PROG_GZIP'不會執行,直到'$ PROG_MYSQLDUMP'已經退出,這意味着該文件已被寫入(或沒有)。 – Sorpigal

回答

4

在寫入轉儲之前,gzip程序無法啓動。無論如何,你爲什麼不用gzip來轉儲轉儲?這應該節省時間和臨時磁盤空間。而且,它會減少磁盤上的負載。

$PROG_MYSQLDUMP -u $USERNAME -p${PASSWORD} -h $HOST $DB $IGNORES | 
$PROG_GZIP > $DEST_FILE.gz 
+0

哈哈,幾乎同時。有+1 :) – Konerak

+0

@Konerak:也有+1,:) – thejh

4

還是管道?消除臨時文件。

$PROG_MYSQLDUMP -u $USERNAME -p${PASSWORD} -h $HOST $DB $IGNORES | $PROG_GZIP > ${DEST_FILE}