バックアップスクリプトに奇妙な問題があります。
まず、バックアップスクリプトは次のようになります。
###########################################################
# CODE BEGINS HERE
###########################################################
#!/bin/bash
# SERVER DATA BACKUP V1.0
#########################
# BACKUP CONFIG
#########################
#Configure the month, date, and day
YEAR=`date +"%Y"` # 2014
MONTH=`date +"%m"` # 10
TODAY=`date +%Y-%m-%d` # 2008-11-14
TODAY_DATE=`date +%d` # 14
# directories to backup to
DATA_BACKUP_PARENT_DIR=/home/user/backups
# Apache Document Root Directory
APACHE_DOCROOT=/var/www/
# MySQL Database config
DB_IP="localhost"
DB_USER="auser" #
DB_PASS="apass" #
PUBLIC_HTML=/home/user/public_html
# Config Dir
CONFIG_DIR="/etc/" # <-- Change this to the path data directory
# Mail report address
EMAIL_ID="[email protected]"
###########################################################
# DATA BACKUP
###########################################################
# Create and go into backup directory
cd $DATA_BACKUP_PARENT_DIR
if [ ! -d "$TODAY" ]; then
mkdir $TODAY
fi
cd $TODAY
# Database backup
databases=`mysql --user=$DB_USER --password=$DB_PASS -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`
echo "Backing up databases"
for db in $databases; do
if [[ "$db" != "information_schema" ]] && [[ "$db" != "performance_schema" ]] && [[ "$db" != _* ]] ; then
echo "Dumping database: $db"
mysqldump --force --opt --user=$DB_USER --password=$DB_PASS $db > $db.db
tar -zcvf $db.tar.gz $db.db
rm $db.db
fi
done
echo "Backing up public_html folder"
#Home folder backup
tar -zcf public_html.tar.gz ${PUBLIC_HTML} --exclude='.*' --exclude=/home/user/public_html/software
# /etc backup
#tar -zcf etc.tar.gz /etc
echo "Backing up Apache wwww doc root folder"
# Application and Websites backup
tar -zcf Apache_Doc_Root.tar.gz ${APACHE_DOCROOT}
###########################################################
# Send out mail notifications
###########################################################
# Mail notify
du -shc $DATA_BACKUP_PARENT_DIR/$TODAY/* | mail -s "Backup of server done " ${EMAIL_ID}
###########################################################
# CODE ENDS HERE
#
コンソールでスクリプトを手動で実行すると、コマンドがスムーズに実行され、適切なフォルダがすべて作成されます。確認メールには次のように記載されています。
250M /home/user/backups/2014-11-19/Apache_Doc_Root.tar.gz
152K /home/user/backups/2014-11-19/mysql.tar.gz
487M /home/user/backups/2014-11-19/public_html.tar.gz
201M /home/user/backups/2014-11-19/mydb.tar.gz
240K /home/user/backups/2014-11-19/my_site.tar.gz
76K /home/user/backups/2014-11-19/teo_wordpress.tar.gz
937M total
cronを使用してこのスクリプトをスケジュールしました。これらのスクリプトは指定された時間に実行されますが、一部のフォルダのみがバックアップされます。具体的には、Apacheドキュメントのルートとpublic_htmlのみをバックアップします。その電子メールは次のとおりです。
250M /home/teohaik/backups/2014-11-29/Apache_Doc_Root.tar.gz
487M /home/teohaik/backups/2014-11-29/public_html.tar.gz
737M total
これについて考えていますか?
よろしくお願いします!
答え1
クローン設定ファイルを確認してください。
おそらく、クローンジョブはすべてにアクセスできない特定のユーザーとして実行できます。
cronが実行されているときにスクリプトが何をするのかを正確に見るためにログファイルを作成するのも賢明なアイデアです。