スクリプト †画像を一括でリサイズする †$ 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 † |