ユーザ用ツール

サイト用ツール


bash:script:24_backup_shell

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

次のリビジョン
前のリビジョン
bash:script:24_backup_shell [2022/01/21 11:26] – 作成 matsuibash:script:24_backup_shell [2022/08/11 02:16] (現在) matsui
行 1: 行 1:
-====== 24 バックアップシェル ======+====== 24 バックアップシェル(backup.sh) ======
  
 Cronでバックアップ用シェルのメモ Cronでバックアップ用シェルのメモ
行 7: 行 7:
  
 BACKUP_DIR=/home/backups BACKUP_DIR=/home/backups
-BACKUP_LIST=/home/backups/conf+BACKUP_LIST=${BACKUP_DIR}/conf
 TAR_OP="--sparse --one-file-system -zcp --numeric-owner --xattrs ." TAR_OP="--sparse --one-file-system -zcp --numeric-owner --xattrs ."
 usage_exit() { usage_exit() {
行 34: 行 34:
 shift $(($OPTIND - 1)) shift $(($OPTIND - 1))
  
-#echo $OPTIND 
-#echo $BAKHOST 
-#echo $PERIOD 
-#echo $LIST 
 if [ -z $LIST ];then if [ -z $LIST ];then
     LIST=${BAKHOST#*@}     LIST=${BAKHOST#*@}
行 75: 行 71:
     echo "============="     echo "============="
     period_check $PERIOD     period_check $PERIOD
-    BK_DIR=$BACKUP_DIR/$BAKHOST/$PERIOD/$PDIR+    BK_DIR=$BACKUP_DIR/$LIST/$PERIOD/$PDIR
  
-    #list=$(<$BKLIST) +    #for LINE in `cat $BKLIST` 
-    #for LINE in $list +    while read LINE
-    for LINE in `cat $BKLIST`+
     do     do
 +        if [ "${LINE:0:1}" == "#" -o -z "${LINE}" ];then
 +            continue
 +        fi
 +
 +
         echo "backup: $LINE"         echo "backup: $LINE"
         DIR=${LINE%:*}         DIR=${LINE%:*}
         FILE_NAME=${LINE#*:}         FILE_NAME=${LINE#*:}
-        #echo "rsync -av $BAKHOST:$DIR $BK_DIR/$DIR $FILE_NAME" 
         dir_check $BK_DIR         dir_check $BK_DIR
  
-        if [ "${DIR: -1}" == '/' ];then+        if [ "${DIR}" == 'mysql' ];then 
 + 
 +            dir_check $BK_DIR/DB 
 +            if [ "${FILE_NAME}" == "all" ];then 
 +                ssh $BAKHOST "mysqldump --all-databases " | gzip | cat > $BK_DIR/DB/all.sql.gz 
 +            else 
 +                ssh $BAKHOST "mysqldump ${FILE_NAME} " | gzip | cat > $BK_DIR/DB/$FILE_NAME.sql.gz 
 +            fi 
 +        elif [ "${DIR: -1}" == '/' ];then
             ##ssh $BAKHOST "tar -C $DIR $TAR_OP" cat > $BK_DIR/$FILE_NAME.tar.gz             ##ssh $BAKHOST "tar -C $DIR $TAR_OP" cat > $BK_DIR/$FILE_NAME.tar.gz
-            echo "rsync -$BAKHOST:$DIR $BK_DIR/$FILE_NAME/" +            echo "rsync -aSH --inplace $BAKHOST:$DIR $BK_DIR/$FILE_NAME/" 
-            rsync -$BAKHOST:$DIR $BK_DIR/$FILE_NAME/+            rsync -aSH --inplace $BAKHOST:$DIR $BK_DIR/$FILE_NAME/
         else         else
-            #D=$(dirname $DIR) +            echo "rsync -aSH --inplace $BAKHOST:$DIR $BK_DIR/$FILE_NAME" 
-            #dir_check $BK_DIR$D +            rsync -aSH --inplace $BAKHOST:$DIR $BK_DIR/$FILE_NAME
-            echo "rsync -$BAKHOST:$DIR $BK_DIR/$FILE_NAME" +
-            rsync -$BAKHOST:$DIR $BK_DIR/$FILE_NAME+
         fi         fi
-    done+    done < $BKLIST
 } }
  
行 105: 行 110:
 </code> </code>
  
 +
 +===== conf file =====
 +
 +
 +<code>
 +# cat /home/backups/conf/host_name
 +
 +## directory rsync 
 +/var/www/vhost/:vhost
 +
 +## file rsync
 +/var/spool/cron/root:cron_root
 +
 +## mysqldump all
 +mysql:all
 +
 +## mysqldump each db
 +#mysql:hogedb
 +
 +</code>
 +
 +===== Cron =====
 +
 +<code>
 +# crontab -l
 +PATH=/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
 +
 +10 0 * * * backup.sh -H root@hogehost -l hogehost -p day > /var/log/backup_day.log 2>&1
 +10 1 1 * * backup.sh -H root@hogehost -l hogehost -p month > /var/log/backup_month.log 2>&1
 +
 +## hosts に書いておくパターン
 +10 0 * * * backup.sh -H hogehost -p day > /var/log/backup_day.log 2>&1
 +10 1 1 * * backup.sh -H hogehost -p month > /var/log/backup_month.log 2>&1
 +
 +</code>
 {{tag>shell}} {{tag>shell}}
bash/script/24_backup_shell.1642764415.txt.gz · 最終更新: 2022/01/21 11:26 by matsui