スクリプト †画像を一括でリサイズする †$ for file in *.jpg > do > convert -size 640x480 $file ./$file > done バックアップを自動で取る †Dir構成 /etc/ /var/lib/dpkg /var/lib/aptitude/pkgstates /var/www /var/lib/mysql /var/spool/qmail list.conf SERVER='comuro' #バックアップ対象サーバのホスト名 LOGPATH='/var/log/backup/' #ログの出力先 BACKUPSERVER='192.168.12.6' #バックアップ先のサーバのIP BACKUPDIR='/home/backup/' #バックアップを置くディレクトリ。権限を確認しておく USER='aya' #実行ユーザー。バックアップ元と先に存在する必要がある doBackup.sh #!/bin/bash
TODAY=$(date +%y%m%d)
MONTH=$(date +%y%m)
##edit this line ########
CONFIGDIR='./'
#####################
CONFIG=$CONFIGDIR'list.conf'
BACKUPLIST=$CONFIGDIR'backup.list'
if [ -f $CONFIG -a -e $BACKUPLIST ]
then
. $CONFIG
else
echo 'Config files are missing!'
exit
fi
#####################
#create tmp dir
ARCHIVEDNAME=$SERVER'-backup-'$TODAY
TMPDIR='/tmp/'$ARCHIVEDNAME
mkdir $TMPDIR
# create log file
LOG=$LOGPATH'/daily'$TODAY'.log'
if [ ! -e $LOG ]; then
touch $LOG
echo '['$TODAY']created Log' >> $LOG
fi
echo '['$TODAY']Copy started' >> $LOG
for BACKUPFILE in `cat $BACKUPLIST` ; do
if [ ! -d $BACKUPFILE ]; then
echo '['$TODAY']'$BACKUPFILE' does not exist!' >> $LOG
else
TMPNAME=`echo $BACKUPFILE | sed -e "s/\//_/g"`
cp -r $BACKUPFILE $TMPDIR'/'$TMPNAME
echo '['$TODAY']Copied' $BACKUPFILE >> $LOG
fi
done
touch $TMPDIR/dpkg-list.txt
/usr/bin/dpkg -l >> $TMPDIR/dpkg-list.txt
cp $LOG $TMPDIR
tar czf $TMPDIR'.tar.gz' $TMPDIR
#もしローカル内でバックアップを持っておく場合は/homeに退避させるとよいと思う。
#if [ -d $BACKUPDIR ]; then
# mv $TMPDIR'.tar.gz' /home/backup
#fi
#もし別サーバに持っていく場合は、rsyncを使った方が早いという噂が。
#パスワード無しの鍵交換式で持っていくと楽
#/usr/bin/rsync -az -e "ssh -i /root/.ssh/rsync" $TMPDIR.tar.gz root@$BACKUPSERVER:$BACKUPDIR$SERVER/$MONTH/$ARCHIVEDNAME.tar.gz
#/usr/bin/rsync -avz -e ssh $TMPDIR.tar.gz $USER@$BACKUPSERVER:$BACKUPDIR$ARCHIVEDNAME.tar.gz
#HDの容量が厳しかったら削除しておく
#rm -r $TMPDIR
メールがあるかどうか実際に送信する †Dir構成 #!/bin/bash DIRPATH='/var/www/example/script/MTA/' CHECK_MAIL_LIST=$DIRPATH'mail.list' MAILFROM='メールの送り主' for EACH_MAIL in `cat $CHECK_MAIL_LIST` ; do cat $DIRPATH'template.txt' | /usr/sbin/sendmail -bm -f $MAILFROM -i $EACH_MAIL done template.txt ------ Mail check! ------ mail.list 気になるメール@popowa.com やっぱり気になる@popowa.com これは恋@popowa.com check.shに実行権限をつけて 10 6 * * * /bin/sh /var/www/example/script/MTA/check.sh と指定すると送ってくれる 個別のTableをmysqldumpする †通常のmysqldumpはdatabase もしくは個別のテーブルを指定しないとdumpしてくれないので、一覧を読み込みdumpする #!/bin/bash DIRPATH='/var/data/dumpEach/' TABLE_LIST=$DIRPATH'dump-list.txt' USER='dump23User' PASSWORD='dump641password' DATABASE='dump_database' for TABLE in `cat $TABLE_LIST` ; do /usr/bin/mysqldump --opt -c -u$USER -p$PASSWORD --default-character-set=binary $DATABASE $TABLE > $DIRPATH$TABLE'.sql' done dump.shに実行権限をつけて 10 6 * * * /bin/bash /var/data/dumpEach/dump.sh と指定すると個別のtableをdumpしてくれるはず 上記拡張版 #!/bin/bash REMOTEUSER='aya' DIRPATH='/var/data/dumpEach/' DIRNAME='data' TABLE_BK=$DIRPATH'dump-list-bk.txt' TABLE_CH=$DIRPATH'dump-list-ch.txt' USER='dump23User' PASSWORD='dump641password' DATABASE='dump_database' cd $DIRPATH mkdir $DIRNAME for TABLE in `cat $TABLE_BK` ; do /usr/bin/mysqldump --opt -c -u$USER -p$PASSWORD --default-character-set=binary $DATABASE $TABLE > $DIRPATH$DIRNAME'/'$TABLE'.sql' done for TABLE in `cat $TABLE_CH` ; do /usr/bin/mysqldump --opt -c -u$USER -p$PASSWORD --default-character-set=binary $DATABASE $TABLE > $DIRPATH$DIRNAME'/'$TABLE'.sql' done /bin/tar czf $DIRNAME'.tar.gz' $DIRPATH$DIRNAME /usr/bin/rsync -az $DIRPATH$DIRNAME'.tar.gz' remote.example.jp:/home/$REMOTEUSER/ 参考URL † |