バックアップ · 1 min read · Jan 30, 2026

MySQLデータベースのバックアップ用シェルスクリプト、各テーブルを個別のファイルにし、リモートFTPにアップロード

MySQLデータベースのバックアップ用シェルスクリプト、各テーブルを個別のファイルにし、リモートFTPにアップロード

このスクリプトは、すべてのデータベース内の各テーブルのバックアップを作成し(テーブルごとに1ファイル)、圧縮してリモートFTPにアップロードします。

まず、選択およびテーブルロックの権限を持つMySQLユーザーを作成します(またはrootを使用します)。

次に、このスクリプトを毎時のcrontabに使用します:

#!/bin/sh
# システム + MySQLバックアップスクリプト
# 著作権 (c) 2008 Marchost
# このスクリプトはGNU GPLバージョン2.0以上の下でライセンスされています
# ---------------------------------------------------------------------

#########################
######修正が必要#######

### システム設定 ###
BACKUP=YOUR_LOCAL_BACKUP_DIR

### MySQL設定 ###
MUSER="MYSQL_USER"
MPASS="MYSQL_USER_PASSWORD"
MHOST="localhost"

### FTPサーバー設定 ###
FTPD="YOUR_FTP_BACKUP_DIR"
FTPU="YOUR_FTP_USER"
FTPP="YOUR_FTP_USER_PASSWORD"
FTPS="YOUR_FTP_SERVER_ADDRESS"

######以下は修正しないでください#####
#########################################

### バイナリ ###
TAR="$(which tar)"
GZIP="$(which gzip)"
FTP="$(which ftp)"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"

### 今日 + 24時間形式の時間 ###
NOW=$(date +"%d%H")

### 時間ごとのディレクトリを作成 ###

mkdir $BACKUP/$NOW

### すべてのデータベース名を取得 ###
DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
do

### 各データベース用のディレクトリを作成し、個別のファイルにテーブルをバックアップ ###
  mkdir $BACKUP/$NOW/$db

  for i in `echo "show tables" | $MYSQL -u $MUSER -h $MHOST -p$MPASS $db|grep -v Tables_in_`;
do
    FILE=$BACKUP/$NOW/$db/$i.sql.gz
    echo $i; $MYSQLDUMP --add-drop-table --allow-keywords -q -c -u $MUSER -h $MHOST -p$MPASS $db $i | $GZIP -9 > $FILE
  done
 done

### すべてのテーブルを1つのきれいなファイルに圧縮してアップロード ###

ARCHIVE=$BACKUP/$NOW.tar.gz
ARCHIVED=$BACKUP/$NOW

$TAR -cvf $ARCHIVE $ARCHIVED

### FTPを使用してバックアップをダンプ ###
cd $BACKUP
DUMPFILE=$NOW.tar.gz
$FTP -n $FTPS <
Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。