バックアップについて

バックアップについて

2019年以降はm64k:/data/backupに入っているので、そこをバックアップ。バックアップ先はm32s /data/backup/m64k-backup。

ssh m32s
cd /data/backup/m64k-backup/backup
sudo rsync -av --progress --exclude '2011-02-25_OIST-SOLiD' /suikou/files/m64k/backup/* .

2020年以降のいくつかはm64g:/data/backup/rawdataに入っているので、そこをバックアップ。バックアップ先はm32s。

ssh m32s
cd /data/backup/m64g-backup/backup/rawdata
sudo rsync -av --progress --exclude '201?-*' /suikou/files/m64g/backup/rawdata/* .
$ for i in `qhost|grep ^m[1-9]|grep -v ^m50v|awk '{print $1}'`; do echo $i; ssh $i cat /etc/crontab|tail -n+16; done
m12
m1536
m16
m208
27 11 * * * yoshitake.kazutoshi /home/yoshitake.kazutoshi/runhpssacli.cron.m208.sh

m24
*/10 * * * * yoshitake.kazutoshi cd /home/yoshitake.kazutoshi/attendance; ./get-attend-data.sh > log.txt 2>&1
m24m
m24n
m256y
20 2 1-7 * * root [ "$(date '+\%w')" -eq 3 ] && /root/backup-sakura-to-m256y-once.sh
20 2 1-7 * * root [ "$(date '+\%w')" -eq 4 ] && /root/backup-m768-to-m256y-once.sh
20 2 1-7 * * root [ "$(date '+\%w')" -eq 5 ] && /root/backup-suikou-m128y-once.sh
m32
m32a
m32b
m32i
m32r
33 2 * * * root rsync -av --delete m32s:/m2 /data/

m32s

m384
m512
m512b
m512i
m512p

m64g
m64k
m64m
m768
27 11 * * * yoshitake.kazutoshi /home/yoshitake.kazutoshi/runhpssacli.cron.sh
#00 2 * * 2 root  certbot renew --post-hook "systemctl restart httpd"
1 1 2 * * yoshitake.kazutoshi bash /home/yoshitake.kazutoshi/run-pull-pp-image.sh > /tmp/pull.log 2>&1
m768b
m8
m8b
m96
m96b
17 14 * * * yoshitake.kazutoshi /data/backup/backup-sakura.sh

P2Solo(192.168.251.213)上でbind, suikouvm, suikougwの3つのCentOS7サーバが稼働している。仮想ディスクの場所はE:\Hyper-V

Windows11へはリモートデスクトップ接続で、ユーザsuikou, パスワードsuikou

Windows11内でバックアップが実行されており、タスクマネージャで2時過ぎに「D:\backup」フォルダにバックアップが実行される。Hyper-Vバックアップスクリプト←をE:\Hyper-V\hyper-v-back.ps1などという名前で保存しておく。

5日分ほど保存するが、古いのは削除するようになっている。たまに「C:\Hyper-V\バックアップ定期」フォルダにバックアップを取っておくと良いかも。

m96bの/data/backup/suikou/vm 以下に不定期にバックアップをコピーしている。

D:\backupフォルダを作り、その中にCentOS7-bind, CentOS7-gw, CentOS7-vmフォルダを作る。

Powershellを管理者権限で開き、Set-ExecutionPolicy RemoteSignedを実行。

タスクスケジューラでタスクの作成を行い、プログラムとしてpowershell.exeを指定し、引数にhyper-v-back.ps1を指定。「最上位の特権で実行する」にチェックを入れる(管理者権限でないとVMのエクスポートは実行できない)。ユーザーがログインしていなくても実行にもチェック。

研究室のHP(このWikiも含む)は、m96b上でバックアップが14時に実行される。

設定は/etc/crontabで設定されており、/data/backup/以下にバックアップが作成される。

これはrsyncで上書きバックアップしている。

#!/bin/bash

cd /data/backup/www
echo "start" >> /data/backup/backup-sakura.log
date >> /data/backup/backup-sakura.log
rsync -a sakura:* .
echo status: $? >> /data/backup/backup-sakura.log
echo "fin" >> /data/backup/backup-sakura.log
date >> /data/backup/backup-sakura.log

dokuwikiのバックアップを起動したい場合は、m768の/var/www/html/dokuwikiに最新のデータをコピーした後、dokuwiki/.htaccessを削除し、

docker container run --name test1 --rm -p 8082:80 -v /var/www/html:/var/www/html php:7.4.24-apache

を起動すると、http://m768.s:8082/dokuwiki でアクセスできる。

さくらのWEB管理画面から、CRONの設定で、毎日5時に下記のスクリプトを実行している

/home/webpark1634/tool/mysqldump.sh

$ more ~/tool/mysqldump.sh
#!/usr/local/bin/bash

find /home/webpark1634/backup-mysql-5.7/ -mtime +10 -exec rm -f {} \;
i=`date "+%Y%m%d_%H%M%S"`
/usr/local/bin/mysqldump -Q -h mysql647.db.sakura.ne.jp -u webpark1634 -pOMEzimh7 webpark1634_blog > /home/webpark1634/backup-mysql-5.7/dump.$i.sql 2> /home/webpark1634/backup-mysql-5.7/err.$i.txt

m32s上で毎日3:11にバックアップ

$ more /etc/crontab

11 3 * * * root rsync -a --delete m768:/etc m768:/var/www/html /data/backup/m768-www/

m32s上のcrontabで下記のように毎日1時ごろバックアップ。

13 1 * * * root rsync -a --delete /m2/ /data/backup/suikou/

m96b上で/data/backup以下にrsyncで1時ごろ上書きバックアップしている。

#!/bin/bash

cd /data/backup/suikou
echo "start" >> /data/backup/backup-suikou.log
date >> /data/backup/backup-suikou.log

#for i in download home root tool tool-all;
# do rsync -a /suikou/$i .
#done

for i in db download tool tool-all db;
 do rsync -a --delete /suikou/$i .
done

rsync -a --delete /root .
rsync -a --delete /home .

echo status: $? >> /data/backup/backup-suikou.log
echo "fin" >> /data/backup/backup-suikou.log
date >> /data/backup/backup-suikou.log

echo "start shared"
cd /data/backup/shared
#rsync -a /suikou/files/rn104-Shared .
rsync -a --delete /suikou/files/synology .
echo status: $? >> /data/backup/backup-suikou.log
echo "fin shared" >> /data/backup/backup-suikou.log
date >> /data/backup/backup-suikou.log

DELL T1700上で、吉武のu-tokyo OneDriveアカウントと\\synology.s\sharedの同期をFreeFileSyncを使って1分毎に行っている。

また、synology上で、1日1回バックアップを行い、30日分のバックアップを保持するように設定している。

m768:/etc m768:/var/www
sakura:www sakura:backup-mysql-5.7
/suikou/tool /suikou/db /suikou/download /suikou/tool-all /root /home/yoshitake.kazutoshi

をm256yの/data/backup/にバックアップ

ディスク使用量を計算するとき、du -hc, ncduなどのコマンドが戻ってくるのが遅くなるし、ディスクを移すときに時間がかかってしまうので、ファイル数の大きなディレクトリは基本的には

sudo zip -ry <dir_name.zip> <dir_name>
sudo rm -rf <dir_name>

で一つのzipファイルにまとめてある。 zipならtar.gzと違って、zipinfoコマンドでファイル一覧をインデックスから素早く見られるし、zipの中の1ファイルだけを限定して解凍することも下記のように可能。

unzip zipfile.Zip path/inside/Zip/file.txt
<###
    このスクリプトについて:
 
    仮想マシンをエクスポートする処理を行います。
    (併せて、古いエクスポートを削除します)
 
    このシェルはタスクスケジューラーによって毎日 AM 2:00 に起動されます。
 
 
    STEP1: 仮想マシンをエクスポート
    STEP2: 古いエクスポートを削除
###>
 
 
 
<### 
    【STEP 1】
    仮想マシンを下記パスにエクスポートする
        E:\Daily_ExportedVM\<日付>\
###>
 
### 日付の取得
$NowDate = Get-Date -Format "yyyyMMdd_HHmmss"
 
### エクスポート対象の仮想マシンの指定
$TragetVM01 = "CentOS7-bind"
$TragetVM02 = "CentOS7-gw"
$TragetVM03 = "CentOS7-vm"
 
### エクスポート先のパスを指定
$ExportPath = "C:\Hyper-V\バックアップ\"
 
### Exportの成功 or 失敗の判断を STEP2(古いフォルダの削除)でするための変数($CheckCode)を定義
### 最初に0(=成功)を代入しておく。(失敗を検知したら 1 が代入される)
$CheckCode = 0
 
 
### コマンドエラー時に Try-Catch の Catch 部分が実行されるように、デフォルトパラメータを Stopに変更
$ErrorActionPreference = "stop"
 
 
### TargetVM01のエクスポート
### try-catch を使って、エラー発生時の処理を実装(catch内がエラー時のアクション)
Try {
    ### 仮想マシンのエクスポートを実行
    Export-VM -Name $TragetVM01 -Path $ExportPath\$TragetVM01\$NowDate -ErrorVariable ExportError01 |
    Out-Null   ### Out-Null することで Export-VM が終了するのを待つ。
 
### Export-VM がエラーになったら、エラー内容をファイルに出力して、$CheckCode に 1を代入
}Catch{
 
    ### エラーを このファイルに出力→ $ExportPath\ExportErrorCode-$TragetVM01-$NowDate.txt 
    echo $ExportError01 | 
    Out-File $ExportPath\$TragetVM01\$NowDate.txt
 
    ### エラーの場合は変数 'CheckCode'に 1 を代入(0以外の代入でSTEP2の際に中止ルーチンに移行)
    $CheckCode = 1
 
}
Out-Null
 
 
### TargetVM02のエクスポート
### try-catch を使って、エラー発生時の処理を実装(catch内がエラー時のアクション)
 
Try {
    ### 仮想マシンのエクスポートを実行
    Export-VM -Name $TragetVM02 -Path $ExportPath\$TragetVM02\$NowDate -ErrorVariable ExportError02 |
    Out-Null   ### Out-Null することで Export-VM が終了するのを待つ。
 
### Export-VM がエラーになったら、エラー内容をファイルに出力して、$CheckCode に 1を代入
}Catch{
 
    ### エラーを このファイルに出力→ $ExportPath\ExportErrorCode-$TragetVM02-$NowDate.txt 
    echo $ExportError02 | 
    Out-File $ExportPath\$TragetVM02\$NowDate.txt
 
    ### エラーの場合は変数 'CheckCode'に 1 を代入(0以外の代入でSTEP2の際に中止ルーチンに移行)
    $CheckCode = 1
 
}
Out-Null
 
 
### TargetVM03のエクスポート
### try-catch を使って、エラー発生時の処理を実装(catch内がエラー時のアクション)
 
Try {
    ### 仮想マシンのエクスポートを実行
    Export-VM -Name $TragetVM03 -Path $ExportPath\$TragetVM03\$NowDate -ErrorVariable ExportError03 |
    Out-Null   ### Out-Null することで Export-VM が終了するのを待つ。
 
### Export-VM がエラーになったら、エラー内容をファイルに出力して、$CheckCode に 1を代入
}Catch{
 
    ### エラーを このファイルに出力→ $ExportPath\ExportErrorCode-$TragetVM03-$NowDate.txt 
    echo $ExportError03 | 
    Out-File $ExportPath\$TragetVM03\$NowDate.txt
 
    ### エラーの場合は変数 'CheckCode'に 1 を代入(0以外の代入でSTEP2の際に中止ルーチンに移行)
    $CheckCode = 1
 
}
Out-Null
 
 
<### 
    【STEP 2】
    古いエクスポートの削除
    2世代(過去2日分)のこす ← HDDの使用状況を見ながら調整
 
    $DeleteTime で経過時間を指定。
    $DeleteTime = "-n"  n(分/min)。 n分前を指定するので、マイナスをつける
    2日 = 2880min (60min * 24hour * 2day)
    3日 = 4320min (60min * 24hour * 3day)
    10日 = 14400min (60min * 24hour * 10day)
###>
#$DeleteTime = "-5"       ### 5分経過(テスト用)
$DeleteTime = "-12320"   ### 3日 ← 4320だと3日前のが残っちゃうので、4300 とかちょっと減らしておくのがいいかも。
 
 
### Export-VM が例外処理で停止していなければ($CheckCode = 0)、古いフォルダの削除実施
if ( $CheckCode -eq 0 ) {
    ### 対象フォルダ配下のリストを取得
    ### 作成されてから $DeleteTime の値を超過したフォルダ・ファイルを選択/抽出
    ### 対象を絶対パスに変換し、削除
    Get-ChildItem $ExportPath |
    Where-Object {
    $_.CreationTime -lt (Get-Date).AddMinutes($DeleteTime)
    } |
    foreach {
        Remove-Item -Recurse -Force $_.FullName
    }
### $Code != 0 であれば(1が代入されていれば)処理を中止。
} else {
    exit
}
  • バックアップについて.1687239363.txt.gz
  • 最終更新: 2023/06/20 05:36
  • by 133.11.224.94