#!/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