Proxmox VEにはOpenVZ仮想マシンのバックアップを容易に取れるように、専用ツールvzdumpが用意されている。
このvzdumpは、OpenVZのwikiにも掲載されているぐらいの便利ツールのようです。
vzdumpでバックアップを行うと、各仮想マシンごとにtarファイルができあがります。
さて、このバックアップファイルを、Proxmoxサーバ内部に残しておくとバックアップの意味がないので、外部サーバに転送しましょう。
NFSでマウントした先にコピーというのが一番簡単なやりかたですが、安いNASだとNFSに対応していない場合があります。
まぁ、具体的にはLinkStationをバックアップ先にしたいです。
この場合、CIFS、ftp、そして、rsync(LinkStationは「バックアップ」と呼ばれている)で転送することができますが、無難なあたりでftpで転送する、とします。
そんなスクリプトを作りました
仕様
・ftpサーバに指定ユーザ・パスワードでログインする
・バックアップは10世代保存とする。
・起動中の仮想マシンのみバックアップする
・Proxmoxサーバ内にバックアップイメージを作成するが、容量が少なく済むように1個ずつ実施する
・lftpを使ってアップロードするので、「aptitude install lftp」でインストールしておく
#!/bin/bash # vzdump and ftp upload script # DUMPDIR="/work" UPLOADDIR="/disk1/backup/dump" FTPHOST="IPアドレス" FTPUSER="ユーザ名" FTPPASSWORD="パスワード" cd $DUMPDIR vzlist > vzlist.log # create upload directory lftp -c "open -u $FTPUSER,$FTPPASSWORD $FTPHOST mkdir $UPLOADDIR/transfer" # dump and upload virtual machine # "vzlist -1" : dump active VM only # "vzlist -a -1": dump all VM # "vzlist -S -1": dump standby VM only for hostid in `vzlist -1` do echo $hostid; cd $DUMPDIR vzdump --dumpdir $DUMPDIR $hostid lftp -c "open -u $FTPUSER,$FTPPASSWORD $FTPHOST cd $UPLOADDIR/transfer mput -E *.tar *.log" done # lotate lftp -c "open -u $FTPUSER,$FTPPASSWORD $FTPHOST cd $UPLOADDIR rm -r daily.9 mv daily.8 daily.9 mv daily.7 daily.8 mv daily.6 daily.7 mv daily.5 daily.6 mv daily.4 daily.5 mv daily.3 daily.4 mv daily.2 daily.3 mv daily.1 daily.2 mv daily.0 daily.1 mv transfer daily.0"
上記スクリプトは毎日夜間に実行するつもりのものなので、NetAppライクに「daily.数字」という感じでディレクトリを作成しています。