Fedora 7リリース直前です。

あ〜早く出て欲しい。

というわけで、リリースされたらすぐにインストールできるように
バックアップをとりましょう。

リリース前と言わず日頃からバックアップする必要があるわけですので、
私なりのバックアップのHowtoを書きたいと思います。

ここで紹介するバックアップスクリプトの使用は
自己責任でお願いします





注意



# command file

のように黒色の背景の内容は
コマンドの実行を示します。

その中でも、$から始まる行はユーザーのコマンド、
#から始まる行は管理者権限のコマンドを示しています。
#から始まる行のコマンドはsuコマンドで管理者権限になってから
実行して下さい。


hogehoge

は、ファイルの内容を示しています。

準備


バックアップメディアの準備


外付けHDDを準備する。

もしくは、

今使用しているHDDのWindows領域を使用する。

もしくは、空のCDやDVDなどを用意する。

もし、空き容量がない方は
外付けHDDを購入された方がご自分のためでしょう。

ソフトをインストールし直せば良いですが、
データは復旧できませんから。

持ち歩きたい場合は、ポータブルタイプを用意します。

家でバックアップサーバーとして用意したいなら、
NASタイプもしくはLANタイプの物がお勧めです。

もちろん、Linuxを使ってバックアップサーバーを作ることもできます。
sambaを用いて、ファイルサーバーにすればOKです。
世に出ているLANタイプのHDDは、大抵内部でLinuxが入っていて
sambaサーバーが動いていたりしますし。


まずは、

# mkdir -p /mnt/data


としてマウント先のディレクトリを作ります。


USBの外付けHDDをマウントする場合は、


# mount /dev/sda1 /mnt/data


など、/dev/sd数字をマウントするデバイスを指定します。

今使用しているHDDのWindows領域(NTFSフォーマット)を使用する場合は、

# mount -t ntfs-3g /dev/hda1 /mnt/data

とします。


今使用しているHDDのWindows領域(FATフォーマット)を使用する場合は、

# mount -t vfat /dev/hda1 /mnt/data

とします。



バックアップ



バックアップに関して、外付けHDDなどに
tarでバックアップします。

バックアップを取るにあたって、
tarでバックアップを取る事が一般的だと思います。

tarでバックアップを取るには以下のようにします。

# tar cvzfp file.tar.gz file

ですが、バックアップする時に毎回
バックアップしたいディレクトリを指定しなければいけません。

ですので、以下に示しますようにスクリプトを作ってしまいます。


#!/bin/sh
#
# backup script

backuplist="/root /home /etc /var"


today="`date +'%Y%m%d'`"
mount=/mnt/data/Linux/backup

to=${mount}/${today}

[ -d $to ] || (mkdir -p $to && echo "make the directry to $to")
# change directry to the /
cd /

##start removing the Cache file and the file in .thumbnails and .Trash

#start removing the Cache file
echo "#start removing the Cache file!!"
cachefile="Cache cache"
for i in $cachefile
do
find /home -name $i -exec rm -Rvf {} \;
done

#start removing the file in .thumbanils and .Trash
echo "#Start removing .thumbnails and .Trash file"
dotfile="/home/kenken/.thumbnails /home/kenken/.Trash"
for j in $dotfile
do
rm -Rvf $j
done

# write the install log by command yum
echo "Write the install history by yum and rpm"
history | cut -d " " -f 4- |grep ^yum|sort|uniq|grep -v "^yum -y update"|tee -a /root/history_yum$today.log
history | cut -d " " -f 4- |grep ^rpm|sort|uniq|grep -v "\-q"|tee -a /root/history_rpm$today.log
rpm -qa > /root/rpmlist$today.log


#start the backup
echo "## start the backup"
for k in $backuplist
do
archive="$k.tar.gz"
tar cvzfp $archive $k
cp -Rv $archive $to
[ $? = 0 ] && rm -v $archive
done

echo "backup finish !!"


まずは使い方を説明します。

使い方



このスクリプトの使い方を説明します。
ただし、使用に当たっては
下で説明します"スクリプトの詳細"
を必ず読んでから実行して下さい。


また、このスクリプトはファイルの容量を
調べてからバックアップするような内容にはなっていません。
使用する前に十分に空き容量があるかチェックしてから実行して下さい。

スクリプトの保存


上の内容(黒の背景で囲まれた
#!/bin/shで始まり、
echo "backup finish !!"で終了する部分を
backup.shという名前で
geditなどのテキストエディタにコピーアンドペーストして保存します。

そして、先頭の方にある

backuplist="/root /home /etc /var"

の"で囲まれた部分にバックアップしたいリストを追加して下さい。

そして、
そのファイルを~/bin以下に置きます。

例えば、自分のホームディレクトリにbackup.shを保存した場合は、

$ mv ~/backup.sh ~/bin/backup.sh

とします。

実行権限を与える


実行権限をこのファイルに与えます。

$ chmod +x ~/bin/backup.sh


スクリプトの実行


そして、このbackup.shを実行するには、

# ~自分のユーザー名/bin/backup.sh

とすれば実行できます。

スクリプトの詳細



バックアップを取る場所



backuplist="/root /home /etc /var"

の行はバックアップするファイルのリストを指定しています。
"で囲まれたファイルをバックアップします。

バックアップ先


バックアップ先は、

/mnt/data/Linux/backup/

以下に現在の年月日の名前でディレクトリを作成し、
その中にバックアップするファイルを保存します。

バックアップ先を変更したい場合は、

today="`date +'%Y%m%d'`"
mount=/mnt/data/Linux/backup
to=${mount}/${today}

の=より右側部の分を自分好みに変更して下さい。
todayの行は、バックアップする日付を定義しています。

mountの行はバックアップ先を/mnt/data/Linux/backupを指定しています。
私と異なるマウント先を指定したい場合は、
この行を変更して下さい。

toの行は、mountの行で指定したディレクトリの下に日付のディレクトリを
作成しています。ここは、変更しない方がいいでしょう。

Cacheキャッシュファイル、ゴミ箱の中のファイルの削除



FirefoxのCacheやNautilusの画像ファイルのCache、ゴミ箱の中のファイル
は結構大容量です。
ですので、削除します。


##start removing the Cache file and the file in .thumbnails and .Trash

以下の部分でCacheファイルやゴミ箱の削除を行っています。

削除したくない場合は、

##start removing the Cache file and the file in .thumbnails and .Trash

から

# write the install log by command yum
/

の前の行前まで先頭に半角の#を入れて、
コメントアウトすれば削除しないようにして下さい。

アプリケーションのインストール履歴の抽出



管理者権限でのコマンドの履歴の中で
yumとrpmを使った履歴を抽出します。

また、それとは別にrpmを使ってインストールしてある
アプリケーションのリストを抽出しています。


# write the install log by command yum
/

以下の行が該当します。

バックアップ作業



#start the backup

から始まる行でバックアップするファイルを指定しています。

ここで、backuplistで指定したファイルをバックアップするようにしています。

参考:
Linux コマンド
The Unix Super Text
シェルスクリプト