0

我正在使用以下脚本创建 mysql 备份并将其压缩。但生成的 .GZ 文件总是损坏的。当我尝试提取时,我得到了这个。

root@nix [/mysql_dumps/backup.16021]# tar -zxvf mysql-icme2193_icmedb-201309191523.gz
tar:这看起来不像 tar 存档
tar:跳到下一个标题
tar:由于先前的错误而以失败状态退出

文件损坏的原因可能是什么?5 小时后我的头撞到了墙上。

这是代码。

    #!/bin/sh
# System + MySQL backup script
# Full backup 
# This script is licensed under GNU GPL version 2.0 or above
# Modified from http://bash.cyberciti.biz/backup/wizard-ftp-script.php
# ---------------------------------------------------------------------
### System Setup ###
DIRS=""
BACKUP=/mysql_dumps/backup.$$
NOW=$(date +"%Y%m%d%H%M")
DAY=$(date +"%a")
### MySQL Setup ###
MUSER="root"
MPASS="****"
MHOST="localhost"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
GZIP="$(which gzip)"
### FTP server Setup ###
FTPD="/mysql_dumps/direname"
FTPU="backupf"
FTPP="****"
FTPS="46.xxx.xxx.xxx"
FTP="$(which ftp)"
### Other stuff ###
EMAILID="notify@example.com"


### do not edit below this line unless you know what you are doing ###
### Start Backup for mysql system ###
[ ! -d $BACKUP ] && mkdir -p $BACKUP || :
# Get databases name
DBS="database_name"
FILE=$BACKUP/mysql-$DBS-$NOW.gz
$MYSQLDUMP --no-tablespaces --skip-lock-tables --add-drop-table -u $MUSER -h $MHOST -p$MPASS $DBS | $GZIP -9 > $FILE

### Dump backup using FTP ###
#Start FTP backup using ftp
$FTP -inv $FTPS << END_SCRIPT
user $FTPU $FTPP
cd $FTPD
mkdir $FTPD
mkdir $FTPD/$NOW
cd $FTPD/$NOW
lcd $BACKUP
mput *
quit
END_SCRIPT

## remove temporary backups from local server
 rm -fR $BACKUP/
### Find out if ftp backup failed or not ###
if [ "$?" == "0" ]; then 
 T=/tmp/backup.pass
 echo "Date: $(date)">$T
 echo "Hostname: $(hostname)" >>$T
 echo "mySQL database backup done. Transferred backup to remote FTP site: $FTPS" >>$T
 mail  -s "[mysql $(hostname)] BACKUP Succeeded" "$EMAILID" <$T
 rm -f $T 
else
 T=/tmp/backup.fail
 echo "Date: $(date)">$T
 echo "Hostname: $(hostname)" >>$T
 echo "Backup failed" >>$T
 mail  -s "BACKUP FAILED" "$EMAILID" <$T
 rm -f $T
fi
4

2 回答 2

0

您的文件只有扩展名 .gz,因此无需解压 tar。仅使用:

 gzip -d yourfile.gz

使用 tar 您的文件将具有 tar.gz 扩展名或 tgz 扩展名

看看下面的链接:

http://www.cyberciti.biz/faq/howto-compress-expand-gz-files/

于 2013-09-19T11:36:53.293 回答
0

您的脚本显然只是压缩文件,它不会先将其归档到 tarball 中。您要么需要创建一个 tarball,要么只使用 gzip 来“解压缩”文件。

tar其视为 like zipor rar,它只是将您传递的所有数据放入一个存档文件中,就像一个文件夹。gzip 是压缩它以使其更小的东西。

注意:在收到的文件上,您应该:

root@nix [/mysql_dumps/backup.16021]# gzip -d mysql-icme2193_icmedb-201309191523.gz
于 2013-09-19T11:04:02.530 回答