上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

MBRとPBRをバックアップするスクリプト

Ubuntu9.04用のGTKツール(GUI版)です。他のバージョンでも正常に動作するかもしれません。

拡張パーティションとスワップパーティションを除く、全てのハードディスクの全てのパーティションのMBRとPBR(ブートセクタ?)を指定したディレクトリの中にファイルとしてバックアップします。要はddですが、作成した日時と保存したファイルがどのハードディスクのどのパーティションのBRなのかをlist.txtに記録し、また、バックアップしようとしたファイルと同じ名前のファイルがあったら、警告を表示してどうするか選択させるウィンドウを表示します。

以下のファイルをダウンロード(右クリックして保存)してファイル名をgtk_backmbrpbr.shに変えてください。
gtk_backmbrpbr.txt

そして、Ubuntuなどの端末でダウンロードしたファイルの存在するディレクトリに移動して、
$ bash ./gtk_backmbrpbr.sh
で実行してください。
もしくはダウンロードしたファイルを右クリックして「プロパティ」ー「アクセス権」で
「プログラムとして実行できる」にチェックすれば、
ダブルクリックで「実行する」をクリックすることでも使えるようになります。

gtk_backmbrpbr.txt
の内容は以下のとおりです。


#!/bin/bash
log1=""
zenity --question --title="MBR&PBRバックアップツール" --text="このスクリプトは、Ubuntuを起動している場合にだけ有効です。\nUbuntuが起動している場合には、「OK」をクリックしてください。\nUbuntuではないOSを起動している場合には、「キャンセル」をクリックしてください。"
if [ $? = 1 ]
then
zenity --warning --title="MBR&PBRバックアップツール" --text="Ubuntu以外のOSでは問題があるかもしれませんので、MBRやPBRのバックアップは作成せずに終了します。"
exit 0
fi
yesorno=1
while [ $yesorno = 1 ]
do
zenity --info --title="MBR&PBRバックアップツール" --text="次のウィンドウでは、MBRとPBRのバックアップファイルを保存するディレクトリ(フォルダ)を選んで「OK」をクリックしてください。右上のボタンで新しく作成することもできます。"
savedir=$(zenity --file-selection --directory --title="MBR&PBRバックアップツール")
zenity --question --title="MBR&PBRバックアップツール" --text="${savedir}にMBRやPBRのバックアップファイルを保存します。よろしいですか?"
yesorno=$?
done
cd ${savedir}
date >> list.txt
gksudo -m "パーティションの情報を得るために管理者(root)権限が必要です。パスワードを入力してください。" sleep 0
DEVICELIST=$(sudo fdisk -l|grep /dev/sd|grep ディスク|cut -d" " -f2|cut -d: -f1)
for a in $DEVICELIST
do
DISKID1=$(sudo fdisk -l|grep -A 3 "ディスク $a"|tail -n 1|tr -d " ")
NAME1=`echo $a|cut -d/ -f3`
savefile=${NAME1}mbr
selection=""
while [ -e $savefile ]
do
selection=$(zenity --title="MBR&PBRバックアップツール" --list --radiolist --text="ディスク${a}:${DISKID1}\nのMBR を${savefile}に保存しようとしましたが、\n既に${savefile}が存在するようです。\nどうしますか?\n次の中から選んでチェックしてください。" --column="↓チェック" --column="" --column="選択肢" 1 1 "既に存在する${savefile}を削除して、その名前で保存する。" 2 2 "他の新しい名前のファイルに保存する。" 3 3 "ディスク${a}のMBRは保存しない。")
if [ $? = 1 ]
then
zenity --question --title="MBR&PBRバックアップツール" --text="キャンセルが押されました。中止しますか?ここで「OK」を選ぶと中止しますので、MBRは完全には保存されません。"
if [ $? = 0 ]
then
zenity --title ="MBR&PBRバックアップツール" --warning --text="中止します。MBRの保存は途中なので完全には保存されていません。なお、今までに保存したものを続けて記します。\n${log1}"
echo "使用者の要求により途中で終了しました。" >> list.txt
exit 0
fi
elif [ a$selection = "a" ]
then
zenity --warning --title="MBR&PBRバックアップツール" --text="何にもチェックされませんでした。チェックしてください。"
elif [ $selection = 1 ]
then
zenity --title="MBR&PBRバックアップツール" --question --text="${savefile}を削除します。よろしいですね?"
if [ $? = 0 ]
then
# rm $savefile
# if [ $? = 1 ]
# then
# zenity --title="MBR&PBRバックアップツール" --question --text="${savefile}が削除できませんでした。管理者権限で強制的に削除しますか?"
# if [ $? = 0 ]
# then
sudo rm -f $savefile
# fi
# fi
else
zenity --warning --title="MBR&PBRバックアップツール" --text="もう一度正しく選択してください。"
fi
elif [ $selection = 2 ]
then
savefile=$(zenity --title="MBR&PBRバックアップツール" --entry --text="存在するファイルは$(echo)$(ls)$(echo)です。存在しないファイル名をタイプして「OK」をクリックしてください。")
elif [ $selection = 3 ]
then
break
fi
done
if [ a$selection != "a3" ]
then
sudo dd if=$a of=${savefile} bs=512 count=1 2>/dev/null && echo "${DISKID1} ${savefile}" >> list.txt && log1=${log1}"\nディスク${a}:${DISKID1}のMBRが${savefile}にバックアップされました。\n"
fi
done
DEVICELIST=`sudo fdisk -l|grep /dev/sd|grep -v ディスク|cut -d" " -f1`
for a in $DEVICELIST
do
NAME1=`echo $a|cut -d\/ -f3`
FILESYSTEMTYPE=`sudo fdisk -l|grep $a|grep -v ディスク|tr -d \*|tr -s " "|cut -d" " -f5`
selection=""
if [ $FILESYSTEMTYPE != 82 -a $FILESYSTEMTYPE != 5 ]
then
UUID1=`sudo vol_id --export $a|grep ID_FS_UUID=|cut -c12-`
savefile=${NAME1}pbr
while [ -e $savefile ]
do
selection=$(zenity --title="MBR&PBRバックアップツール" --list --radiolist --text="パーティション${a}:UUID=${UUID1}のPBRを\n${savefile}に保存しようとしましたが、\n既に${savefile}が存在するようです。\nどうしますか?\n次の中から選んでチェックしてください。" --column="↓チェック" --column="" --column="選択肢" 1 1 "既に存在する${savefile}を削除して、その名前で保存する。" 2 2 "他の新しい名前のファイルに保存する。" 3 3 "パーティション${a}:UUID=${UUID1}のPBRは保存しない。")
if [ $? = 1 ]
then
zenity --question --title="MBR&PBRバックアップツール" --text="キャンセルが押されました。中止しますか?ここで「OK」を選ぶと中止しますので、PBRは完全には保存されません。"
if [ $? = 0 ]
then
zenity --title ="MBR&PBRバックアップツール" --warning --text="中止します。PBRの保存は途中なので完全には保存されていません。なお、今までに保存したものを続けて記します。\n${log1}"
echo "使用者の要求により途中で終了しました。" >> list.txt
exit 0
fi
elif [ a$selection = "a" ]
then
zenity --warning --title="MBR&PBRバックアップツール" --text="何にもチェックされませんでした。チェックしてください。"
elif [ $selection = 1 ]
then
zenity --title="MBR&PBRバックアップツール" --question --text="${savefile}を削除します。よろしいですね?"
if [ $? = 0 ]
then
# rm $savefile
# if [ $? = 1 ]
# then
# zenity --title="MBR&PBRバックアップツール" --question --text="${savefile}が削除できませんでした。管理者権限で強制的に削除しますか?"
# if [ $? = 0 ]
# then
sudo rm -f $savefile
# fi
# fi
else
zenity --warning --title="MBR&PBRバックアップツール" --text="もう一度正しく選択してください。"
fi
elif [ $selection = 2 ]
then
savefile=$(zenity --title="MBR&PBRバックアップツール" --entry --text="存在するファイルは$(echo)$(ls)$(echo)です。存在しないファイル名をタイプして「OK」をクリックしてください。")
elif [ $selection = 3 ]
then
break
fi
done
if [ a$selection != "a3" ]
then
sudo dd if=$a of=${savefile} bs=512 count=1 2>/dev/null && echo "$UUID1 ${savefile}" >> list.txt && log1=${log1}"\nパーティション${a}:UUID=${UUID1}のPBRが${savefile}にバックアップされました。\n"
fi
fi
done
zenity --title="MBR&PBRバックアップツール" --info --text="${log1}" &
zenity --title="MBR&PBRバックアップツール" --info --text="ログが${savedir}ディレクトリ(フォルダ)のlist.txtに追記されました。その内容は、以下のとおりです。\n作成した日付が1行目に。\nディスクのMBRについては、「Diskidentifier:」の後にディスクの識別子、スペースを空けてバックアップファイル名。\nパーティションのPBRについては、UUIDの後にスペースを空けてバックアップファイル名。\n以上がログの内容です。" &
zenity --title="MBR&PBRバックアップツール" --question --text="Ubuntu日本語RemixCDなど、CDからの起動なら、「OK」をクリックしてください。\nそうでなければ、「キャンセル」をクリックしてください。"
if [ $? = 0 ]
then
zenity --warning --title="MBR&PBRバックアップツール" --text="日本語RemixCDを終了すると、デスクトップやホームディレクトリの中のディレクトリやファイルは無くなってしまいます。\n内蔵HDDかUSBメディアの利用可能なパーティションに${savedir}ディレクトリをコピーすることをお勧めします。"
fi
zenity --info --title="MBR&PBRバックアップツール" --text="今から保存されたバックアップファイルの存在するディレクトリを\nファイル・ブラウザnautilusで開きます。\n確認したり(必要なら適切な場所にコピーしたり)してください。"
nautilus ${savedir} &
exit 0

関連記事

テーマ : Linux
ジャンル : コンピュータ

コメントの投稿

管理者にだけ表示を許可する

プロフィール

kiyoshi

Author:kiyoshi
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
since 2011/9/25
現在の閲覧者数:
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。