2011-10-31 92 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}