Proxmox上のOpenVZ仮想マシンのバックアップ

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」でインストールしておく

1#!/bin/bash
2# vzdump and ftp upload script
3#
4DUMPDIR="/work"
5UPLOADDIR="/disk1/backup/dump"
6 
7FTPHOST="IPアドレス"
8FTPUSER="ユーザ名"
9FTPPASSWORD="パスワード"
10 
11cd $DUMPDIR
12vzlist > vzlist.log
13 
14# create upload directory
15lftp -c "open -u $FTPUSER,$FTPPASSWORD $FTPHOST
16mkdir $UPLOADDIR/transfer"
17 
18 
19# dump and upload virtual machine
20# "vzlist -1" : dump active VM only
21# "vzlist -a -1": dump all VM
22# "vzlist -S -1": dump standby VM only
23for hostid in `vzlist -1`
24do
25    echo $hostid;
26    cd $DUMPDIR
27    vzdump --dumpdir $DUMPDIR $hostid
28    lftp -c "open -u $FTPUSER,$FTPPASSWORD $FTPHOST
29cd $UPLOADDIR/transfer
30mput -E *.tar *.log"
31done
32 
33# lotate
34lftp -c "open -u $FTPUSER,$FTPPASSWORD $FTPHOST
35cd $UPLOADDIR
36rm -r daily.9
37mv daily.8 daily.9
38mv daily.7 daily.8
39mv daily.6 daily.7
40mv daily.5 daily.6
41mv daily.4 daily.5
42mv daily.3 daily.4
43mv daily.2 daily.3
44mv daily.1 daily.2
45mv daily.0 daily.1
46mv transfer daily.0"

上記スクリプトは毎日夜間に実行するつもりのものなので、NetAppライクに「daily.数字」という感じでディレクトリを作成しています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.

StatCounter - Free Web Tracker and Counter