0

私の専用には、バックアップしたい 5 ギガ NAS があります。最終的に各cPanelのMySQLテーブルとpublic_htmlのバックアップを行い、

MySQL テーブル フォルダー (/var/lib/mysql) の内容を読み取り、サブフォルダーが見つかった場合は、見つかったサブフォルダーの tar.gz ファイルを作成し、それらを /mnt/mysql_backup/date にコピーする方法を教えてください。 /dbname.

次に、/home/ に移動し、各フォルダーを調べて、存在する /public_html/ フォルダーをバックアップし、ファイルを /mnt/files_backup/date/cpanelfolir にコピーします。

スクリプトが正常に完了した場合。古いバックアップを削除し、作成したばかりの最後のバックアップのみを保持します。

任意の助けをいただければ幸いです

4

3 に答える 3

0

使用mysqldump:

$ mysqldump my_database > my_database_dump.sql
于 2012-08-08T10:57:40.040 に答える
0

mysql をバックアップするには、mysqldump の使用を検討します。ただし、mysqldump は実行中にテーブルをロックすることに注意してください。データベースにかなりの量のデータがある場合、このプロセスにはかなりの時間がかかる可能性があります。

データベースを長期間ロックする余裕がない場合は、ミラーを作成し、そのミラーでバックアップ スクリプトを実行します。(詳細な手順については、こちらを参照してください: http://www.howtoforge.com/mysql_database_replication )

データベースをバックアップするには、次のようにします。

BACKUPDATE=$(date +"%Y%m%d")
BACKUPDIR='/mnt/backup'

BACKUPUSER='bkpUser'
BACKUPPASS='bkpPassword'

mkdir -p $BACKUPDIR/$BACKUPDATE/databases/

for DATABASE in $(mysql -u$BACKUPUSER -pBACKUPPASS -e "show databases" | grep -v Database | grep -v  information_schema)
  do 
      mysqldump -u$BACKUPUSER -pBACKUPPASS $DATABASE > $BACKUPDIR/$BACKUPDATE/databases/$DATABASE.sql
  done

これにより、毎日新しいフォルダーが作成され、すべてのデータベースがそこにダンプされます。

public_html フォルダーの場合、次のようなものです

tar czvf $BACKUPDIR/$BACKUPDATE/public_html.tar.gz $(find /home/  -type d -name public_html)

少しエラーチェックを追加すると、これでうまくいくはずです。

バックアップについて最後に一言。最後のバックアップ ファイル以外のファイルを保持することを強くお勧めします。すべてのものを 1 週間保持し、1 か月に 1 つずつ保持するようなものは、私にはかなり良いと思います。

于 2012-08-08T12:09:53.047 に答える
0

このスクリプトを試してください:

#! /usr/bin/bash

OK=0          
KO=1

MYSQL_DIR="/var/lib/mysql"
MYSQL_BACKUP_DIR="/mnt/mysql_backup/date/dbname"
HTML_DIR="/home/public_html"
HTML_BACKUP_DIR="/mnt/files_backup/date/cpanelfoler"
LOG_FILE="/tmp/backup_log.log"

function archiving
{
        local return_status=$OK         # Function return status
        local IN_DIR=$1                 # Input directory
        local ARC_DIR=$2                # Archiving directory

        final_arc_dir=$ARC_DIR
        timestamp=`date +%Y%m%d%H%M%S`
        # Archive will be like this : archive_YYYYMMDDHHMMSS
        final_arc_dir=${final_arc_dir}/archive_$timestamp

        if [ ! -d "$final_arc_dir" ]; then
        echo "Creating directory $final_arc_dir"
        mkdir -p $final_arc_dir
        fi

        # More secure : copy then delete instead of moving
        echo "Copying files ... to $ARC_DIR"
        # For each file, or directory we copy than delete
        cp -r $IN_DIR $final_arc_dir
        return_last_command=`echo $?`
        if [ $return_last_command -ne 0 ]
        then
                return_status=KO
                echo "Error copying files ---> $IN_DIR"
        else
                rm -rf $IN_DIR
        fi

        # Archive name
        archive_name=$(echo $final_arc_dir |  awk -F/ '{print $NF}')
        # We can compress
        tar cvf - $final_arc_dir | gzip > $ARC_DIR/$archive_name.tar.gz
        ret=$?
        if [ $ret -ne 0 ]
        then
                echo "Compression failed ---> $final_arc_dir"
                return_status=$KO
        else
                echo "Compression terminated successfully, we can delete original directory"
                rm -rf $final_arc_dir
        fi

        # Cleanup old archives
        for f in `ls -l $ARC_DIR | awk '{print $9}' | grep -v "$timestamp"`
        do
            echo "\nRemove this older backup --------------------> $f\n"
            rm -rf $ARC_DIR/$f
        done


        return $return_status
}

### MAIN ###

### Archiving MYSQL FILES
if ! archiving $MYSQL_DIR $MYSQL_BACKUP_DIR
then
    echo "\nError archiving MYSQL FILES ----> KO" | tee -a $LOG_FILE
    exit $KO
fi

### Archiving HTML FILES
if ! archiving $HTML_DIR $HTML_BACKUP_DIR
then
    echo "\nError archiving HTML FILES ----> KO" | tee -a $LOG_FILE
    exit $KO
fi

# All seems to be ok
echo "\nAll seems to be okay\n"
exit $OK
于 2012-08-08T10:55:40.290 に答える