# dnf install --enablerepo=epel dar
オプション | 内 容 |
−c, −−create [<path>/]<basename> | 作成するバックアップファイルのベースの名前を指定 ※<basename>.1.darのように連番でファイルが作成されます。 |
−x, −−extract [<path>/]<basename> | バックアップファイルを復元 ※カレントディレクトリに復元されます。 |
−R, −−fs−root <path> | ルートディレクトリを指定 ※「-P」、「-g」オプションは相対パスでしか指定できないため、このオプションと組み合わせます。 ※また、「-P」、「-g」オプションが指定されていない場合は、ここで指定されたディレクトリ以下が対象となります。 |
−g, −−go−into <path> | バックアップするディレクトリ名を指定 ※相対パスで指定します。またワイルドカード指定はできません。 |
−P, −−prune <path> | 除外するディレクトリ名を指定 ※相対パスで指定します。 |
−X, −−exclude <mask> | 除外するファイル名のパターン文字列 ※ここで指定するパターンに合致する名前のファイルは除外されます。ワイルドカードも使用できます。 |
−A, −−ref [<path>]/<basename> | 差分バックアップを行う場合の参照元のバックアップファイルを指定 |
−zbzip2[:level] | bzip2で圧縮。 圧縮レベルは1~9まで(デフォルトは9) |
−z[level] | gzipで圧縮。 圧縮レベルは1~9まで(デフォルトは9) |
−w | ファイルを上書きする場合に警告メッセージを表示しない |
−v | 詳細な処理経過を画面に表示 |
-az, --alter=zeroing-negative-dates | 一部のシステムは、特定のファイル(1970年より前の日付のファイル)のUnix時間として負の数を返す場合があり、この場合一時停止し日付をゼロと見なすかどうかをユーザーに質問します。 ただし、-azオプションを使用すると、そのような負の日付を自動的にゼロと見なし、そのまま処理を続行します。(警告は表示される。) |
# dar -c backup-full -R / -g etc -g www -zbzip2:9
# dar -c backup-diff -A backup-full -R / -g etc -g www -zbzip2:9
# dar -x backup-full
# dar -x backup-full
# dar -x backup-diff -wa
dar: error while loading shared libraries: libdar.so.5: cannot open shared object file: No such file or directory
# LD_LIBRARY_PATH=/usr/local/lib
# export LD_LIBRARY_PATH
# dar -c backup-full -R / -g etc -g www -y
# cd dar-2.5.x
# ./configure --prefix=/usr/local --disable-shared
# make
# make install
バックアップ先 | /var/__backup__/daily/backup.0 backup.1~backup.6は世代管理用フォルダ |
バックアップ対象 | /var/www/html /var/www/data |
フルバックアップファイル名 | /var/__backup__/daily/backup-full-html.1.dar /var/__backup__/daily/backup-full-data.1.dar |
差分バックアップファイル名 | /var/__backup__/daily/backup.0/backup-full-html.1.dar /var/__backup__/daily/backup.0/backup-full-data.1.dar |
MySQLバックアップ | mysqldumpでバックアップ ※ユーザID、パスワードはセキュリティのため、「/root/.mysql_config」ファイルに記述。 |
ログファイル | /var/log以下をバックアップ |
#!/bin/bash
#----- backup file save base directory -----
BACKUP_BASE_DIR=/var/__backup__/daily
WWW_BASE_DIR=/var/www
CHECK_BACKUP_FILENAME=apache_log.tar.gz
LOG_DIR=/var/log
BACKUP_MAX_COUNT=7
#-------------------------------------------
cd $BACKUP_BASE_DIR
#----- backup file shift directory -----
SEARCH_FILENAME=backup.$(($BACKUP_MAX_COUNT - 1))/$CHECK_BACKUP_FILENAME
if [ -f $SEARCH_FILENAME ]
then
rm -f backup.$(($BACKUP_MAX_COUNT - 1))/*.*
fi
for (( i=$BACKUP_MAX_COUNT - 2; i>=0; i-- ))
do
PATH1=$BACKUP_BASE_DIR/backup.$i
if [ -f $PATH1/$CHECK_BACKUP_FILENAME ]
then
PATH2=$BACKUP_BASE_DIR/backup.$(($i + 1))
mv $PATH1/*.* $PATH2
fi
done
/usr/bin/sleep 2
#----- MySQL Backup -----
cd $BACKUP_BASE_DIR/backup.0
#----- get serial date value -----
TODAY_DATE_VAL="$(date "+%Y%m%d")"
SERIAL_DATE_VAL="$(date "+%s")"
for DBNAME in `ls -p /var/lib/mysql | grep / | tr -d /`
do
# mysqldump
if [ "$DBNAME" = 'performance_schema' ]
then
/usr/bin/mysqldump --defaults-extra-file=/root/.mysql_config --skip-lock-tables --skip-extended-insert $DBNAME > $DBNAME.dump
else
/usr/bin/mysqldump --defaults-extra-file=/root/.mysql_config --events --skip-lock-tables --skip-extended-insert $DBNAME > $DBNAME.dump
fi
done
if [ -f mysql.dump ]
then
#----- compress log files -----
FILENAME=mysql_dump_${TODAY_DATE_VAL}.tar.gz
if [ -f $FILENAME ]; then
TEMP_FILENAME=${FILENAME}.${SERIAL_DATE_VAL}
mv $FILENAME $TEMP_FILENAME
fi
tar cvfz $FILENAME *.dump
rm -f *.dump
fi
#----- Log Backup -----
# Apache Log
cd /var/log
tar cvfz $BACKUP_BASE_DIR/backup.0/apache_log.tar.gz httpd
# Log
cd /var
tar cvfz $BACKUP_BASE_DIR/backup.0/var_log.tar.gz log
/usr/bin/sleep 2
#----- dar Backup -----
cd $BACKUP_BASE_DIR
# [html][data] Directory Backup
#-------------------
# When dar full backup file does not exist
if [ ! -f backup-full-html.1.dar ]
then
/usr/bin/dar -c backup-full-html -az -R $WWW_BASE_DIR -g html -zbzip2:9
fi
/usr/bin/sleep 2
if [ ! -f backup-full-data.1.dar ]
then
/usr/bin/dar -c backup-full-data -az -R $WWW_BASE_DIR -g data -zbzip2:9
fi
/usr/bin/sleep 10
# Get dar differential backup file
/usr/bin/dar -c backup.0/backup-diff-html -A backup-full-html -az -R $WWW_BASE_DIR -g html -zbzip2:9
/usr/bin/sleep 2
/usr/bin/dar -c backup.0/backup-diff-data -A backup-full-data -az -R $WWW_BASE_DIR -g data -zbzip2:9
バックアップ先 | /var/__backup__/daily/backup.0 backup.1~backup.6は世代管理用フォルダ |
バックアップ対象 | /var/www/html /var/www/data |
フルバックアップファイル名 | /var/__backup__/daily/backup.0/backup-full-html.1.dar /var/__backup__/daily/backup.0/backup-full-data.1.dar |
MySQLバックアップ | mysqldumpでバックアップ ※ユーザID、パスワードはセキュリティのため、「/root/.mysql_config」ファイルに記述。 |
ログファイル | /var/log以下をバックアップ |
#!/bin/bash
#----- backup file save base directory -----
BACKUP_BASE_DIR=/var/__backup__/daily
WWW_BASE_DIR=/var/www
CHECK_BACKUP_FILENAME=apache_log.tar.gz
LOG_DIR=/var/log
BACKUP_MAX_COUNT=7
#-------------------------------------------
cd $BACKUP_BASE_DIR
#----- backup file shift directory -----
SEARCH_FILENAME=backup.$(($BACKUP_MAX_COUNT - 1))/$CHECK_BACKUP_FILENAME
if [ -f $SEARCH_FILENAME ]
then
rm -f backup.$(($BACKUP_MAX_COUNT - 1))/*.*
fi
for (( i=$BACKUP_MAX_COUNT - 2; i>=0; i-- ))
do
PATH1=$BACKUP_BASE_DIR/backup.$i
if [ -f $PATH1/$CHECK_BACKUP_FILENAME ]
then
PATH2=$BACKUP_BASE_DIR/backup.$(($i + 1))
mv $PATH1/*.* $PATH2
fi
done
/usr/bin/sleep 2
#----- MySQL Backup -----
cd $BACKUP_BASE_DIR/backup.0
#----- get serial date value -----
TODAY_DATE_VAL="$(date "+%Y%m%d")"
SERIAL_DATE_VAL="$(date "+%s")"
for DBNAME in `ls -p /var/lib/mysql | grep / | tr -d /`
do
# mysqldump
if [ "$DBNAME" = 'performance_schema' ]
then
/usr/bin/mysqldump --defaults-extra-file=/root/.mysql_config --skip-lock-tables --skip-extended-insert $DBNAME > $DBNAME.dump
else
/usr/bin/mysqldump --defaults-extra-file=/root/.mysql_config --events --skip-lock-tables --skip-extended-insert $DBNAME > $DBNAME.dump
fi
done
if [ -f mysql.dump ]
then
#----- compress log files -----
FILENAME=mysql_dump_${TODAY_DATE_VAL}.tar.gz
if [ -f $FILENAME ]; then
TEMP_FILENAME=${FILENAME}.${SERIAL_DATE_VAL}
mv $FILENAME $TEMP_FILENAME
fi
tar cvfz $FILENAME *.dump
rm -f *.dump
fi
#----- Log Backup -----
# Apache Log
cd /var/log
tar cvfz $BACKUP_BASE_DIR/backup.0/apache_log.tar.gz httpd
# Log
cd /var
tar cvfz $BACKUP_BASE_DIR/backup.0/var_log.tar.gz log
/usr/bin/sleep 2
#----- dar Backup -----
cd $BACKUP_BASE_DIR/backup.0
# [html][data] Directory Backup
#-------------------
/usr/bin/dar -c backup-full-html -az -R $WWW_BASE_DIR -g html -zbzip2:9
/usr/bin/sleep 2
/usr/bin/dar -c backup-full-data -az -R $WWW_BASE_DIR -g data -zbzip2:9