【问题标题】:Corrupt mysqldump tarball损坏的 mysqldump 压缩包
【发布时间】:2013-09-19 10:58:28
【问题描述】:

我正在使用以下脚本创建 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

【问题讨论】:

    标签: zip mysql-backup


    【解决方案1】:

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

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

    注意:在收到的文件上你应该这样做:

    root@nix [/mysql_dumps/backup.16021]# gzip -d mysql-icme2193_icmedb-201309191523.gz
    

    【讨论】:

      【解决方案2】:

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

       gzip -d yourfile.gz
      

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

      看下面的链接:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多