このブログを検索

2012-03-03

Netwalkerのバックアップ

参考:http://webos-goodies.jp/archives/system_wide_backup_tool_for_netwalker.html

バックアップ概要
・ホットバックアップではなくシステムを止めてからのバックアップ
・リカバリディスクのLinuxを起動してバックアップ
・カーネル用のデバイス (/dev/ubi3) をバイトイメージとして保存。
・ルートファイルシステム (/dev/ubi4) の内容を rsync によりファイル単位で保存

準備
・microsdカード(8gb以上)

※これとは別にリカバリディスク(microsdカード)も用意しておく必要がある

8gbのmicrosdカードを用意する
まずはリカバリディスクを作る
なぜかリカバリツールが動作しなかったが次の手順で動作した
recovery.shをDesktopに置いて
コンソ\ールにて
# sudo su
# cd /home/****/Desktop
# ./recovery.sh &
完了をしばらく待つ
# exit

SDカードを確実にマウントするために
GUIのメニューから場所→ XGBのメディアをクリック

続いてコンソ\ールにて
# cd /media/disk
でリカバリディスクが認識されていることを確認する

再インストールスクリプトを削除
# sudo rm /media/disk/etc/rc2.d/S01upfirm
# sudo rm /media/disk/os.tar.bz2

起動時に自動マウントするスクリプトを作成する
# sudo touch /media/disk/etc/rc2.d/S01mountroot
# sudo vim /media/disk/etc/rc2.d/S01mountroot

#!/bin/sh
/usr/local/bin/ubiattach /dev/ubi_ctrl -m 4
/bin/mount -t ubifs ubi0 /mnt/root

# sudo chmod 755 /media/disk/etc/rc2.d/S01mountroot
# sudo mkdir /media/disk/mnt/root

バックアップ、リストアのスクリプトを作成する
# sudo touch /media/disk/usr/local/bin/backup.sh


#!/bin/bash

if [ -z $1 ]; then
echo \"usage: backup.sh dir\"
exit 1
fi

if ! [ -d $1 ]; then
echo \"$BACKUP_DIR is not exist or not a directory.\"
exit 2
fi

SRC_DIR=/mnt/root
BACKUP_DIR=`dirname $1/a`
KERNEL_DEV=/dev/mtd3
KERNEL_IMG=$BACKUP_DIR/kernel.bin
RSYNC_CMD=rsync
RSYNC_OPTS=\"-aAX --delete --force --numeric-ids --progress\"

nanddump -o -b $KERNEL_DEV -f $KERNEL_IMG
$RSYNC_CMD $RSYNC_OPTS $SRC_DIR $BACKUP_DIR


# sudo touch /media/disk/usr/local/bin/restore.sh


#!/bin/bash

if [ -z $1 ]; then
echo \"usage: backup.sh dir\"
exit 1
fi

if ! [ -d $1 ]; then
echo \"$BACKUP_DIR is not exist or not a directory.\"
exit 2
fi

SRC_DIR=/mnt/root
BACKUP_DIR=`dirname $1/a`
KERNEL_DEV=/dev/mtd3
KERNEL_IMG=$BACKUP_DIR/kernel.bin
RSYNC_CMD=rsync
RSYNC_OPTS=\"-aAX --delete --force --numeric-ids --progress\"

$RSYNC_CMD $RSYNC_OPTS $BACKUP_DIR/root/ $SRC_DIR

flash_eraseall $KERNEL_DEV
nandwrite -p $KERNEL_DEV $KERNEL_IMG
nandverify -o -b $KERNEL_DEV -f $KERNEL_IMG


# sudo chmod 755 /media/disk/usr/local/bin/backup.sh
# sudo chmod 755 /media/disk/usr/local/bin/restore.sh
# sudo mkdir /media/disk/backup
# sudo cp /usr/bin/rsync /media/disk/usr/local/bin

構\築作業は以上で完了


バックアップする手順

Netwalkerをシャットダウン
# sudo shutdown -h now

SDカードからLinuxを起動する
マウス左右のボタンを押しながら電源ボタンを長押し
SHARPロゴが出たら電源ボタンを離す
\"Ubuntu jaunty (development branche) qemu-arm tty1\"
と表\示されたら成功

rootでログイン、パスワードは不要
qemu-arm login:root

バックアップを実行する
# backup.sh /backup

1時間くらいかかった
二回目以降は差分のみとなり速いらしい

終了
# shutdown -h now

今後リストアする際は同様にLinuxを立ち上げてから

# restore.sh /backup

ルートファイルシステムに大きなダメージがあるとリストアできないことがあるらしく。その場合は事前に再インストールしてからリストアを実行するそうです。

素晴らしいスクリプトに感謝!