ダミーのDIYバックアップ

sysadminが2つのカテゴリに分類されることは長い間知られています。まだバックアップを行っていない人とすでにバックアップをしている人です。 いくつかのDCが燃えているときに、2番目のDCが突然消えるとき、2番目のカテゴリに属する​​のが最善です。

だから、私はダミーのための簡単な自動データバックアップの経験を共有したいと思います。

挑戦する


スケジュールに従ってファイルとデータベースのバックアップコピーを作成する必要があります。 データベースのバックアップはファイルのバックアップよりも頻繁に行われるため(またはその逆)、これらの2つのプロセスは互いに独立している必要があります。
与えられた


目的

サーバー上の特定のフォルダーにあるファイルとデータベースのアーカイブを取得します。 アーカイブは、httpプロトコルを介してアクセス可能でなければなりません。


解決策


これはスクリプト作成の最初の経験であるため、コードは少し不器用に見えるかもしれません。

MySQLバックアップ
指定したユーザーがすべてのデータベースのダンプを使用できるようにします。
#!/bin/sh # ----  -------------------------------------- # ,    BACKUP_DIR="/var/www/wscms/data/www/site.ru/backup/" #    BACKUP_FILE="sql.tar" # ,     USER="wscms" #     MySQL MDIR="mysql/" #   MySQL MHOST="localhost" # MYSQL root  MUSER="root" # MYSQL root  MPASS="***************" #  "-zcf"      "-cf"    PARAMS="-cf" #---   -------------------------- #   mysql. MYSQL="$(which mysql)" #   mysqldump MYSQLDUMP="$(which mysqldump)" #   tar TAR="$(which tar)" #   chown CHOWN="$(which chown)" #   RM RM="$(which rm)" #   MKDIR MKDIR="$(which mkdir)" # ----     DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')" # ----      ,     $RM -rf $BACKUP_DIR$MDIR # ----     $MKDIR -p $BACKUP_DIR$MDIR # ----    .    for db in $DBS do FILE=$BACKUP_DIR$MDIR$db.sql $MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db > $FILE done # ----   $TAR $PARAMS $BACKUP_DIR$BACKUP_FILE $BACKUP_DIR$MDIR # ----        MySQL  $RM -rf $BACKUP_DIR$MDIR $CHOWN $USER $BACKUP_DIR $CHOWN $USER $BACKUP_DIR$BACKUP_FILE exit 0 


バックアップファイル
 #!/bin/sh # ----  -------------------------------------- # ,    BACKUP_DIR="/var/www/wscms/data/www/site.ru/backup/" #    EXT=".tar" # ,     MAIN_DIR="/var/www/" # ,      DATA_DIR="/data/www/" # ,     USER="wscms" #  "-zcf"      "-cf"    #  u      PARAMS="-cf" #---   -------------------------- #   tar TAR="$(which tar)" #   chown CHOWN="$(which chown)" RM="$(which rm)" MKDIR="$(which mkdir)" # ----     $MKDIR -p $BACKUP_DIR $CHOWN -R $USER $BACKUP_DIR # ----     for DIR in $(/usr/local/ispmgr/sbin/mgrctl -m ispmgr user | cut -d' ' -f1 | sed s/name=//) do # ----   $TAR $PARAMS $BACKUP_DIR$DIR$EXT $MAIN_DIR$DIR$DATA_DIR $CHOWN $USER $BACKUP_DIR$DIR$EXT done $CHOWN -R $USER $BACKUP_DIR exit 0 


rootユーザーとしてCRONに追加します
/ bin / sh /backup/backup.sh
/ bin / sh /backup/sql.sh
必要なスケジュールを設定します

これら2つのスクリプトの作業後、各ユーザーのファイルのバックアップを個別に作成し、MySqlをバックアップします。

別のDCのサードパーティサーバーでwgetを使用してそれらを取得するか、(実装したように)スケジューラーに読み込まれた単純なWindowsアプリケーションを使用して、ローカルマシンにバックアップを毎日ダウンロードします。

セキュリティ上の理由から、次の.htaccessをsite.ru/backup/フォルダーに配置することをお勧めします
注文拒否、許可
すべてから拒否
Your.IP.Address、IP.Address.USP.If.Using.wgetから許可

幸運を祈ります。データを失わないでください。

Source: https://habr.com/ru/post/J132262/


All Articles