事象の水平線

横を無理やり伸ばしたので、デザインがおかしいけど、気にしない。完璧に時代に取り残されたHTMLをいまさらいじるのがめんどくさい。個人的ブックマーク代わりなメモ書きブログ。

前回のスクリプトで重大な問題が発覚しました。
というか、Linuxとシェルスクリプトをまともに理解してないだけだったのですが・・・

LinuxはWinやMacとちがいデスクトップ上にドライブをマウントしてアクセスするのではなく、/以下のどこか(/mediaとか/mntとか)にマウントして使うので、
前回のスクリプトでは、
マウント先のディレクトリ(フォルダ)を作って、
そこにマウントして、
マウントの時にエラーがでたら(HDDがつながってないとか)、作ったフォルダを消していたのですが、
すでにマウントされている時も同様にエラーが出るので、そこでフォルダごと消してしまうとHDDの中身を丸ごと消してしまうことになります。 なんと・・想像力が足りなかった・・ orz

ということで、/media/以下のマウント先のフォルダは消さないようにしました。

でも、そうすると、ターミナルからmountコマンドでマウントする時はいいけれど、GUIの『場所』メニューからマウントすると、すでにあるディレクトリとは別の名前のディレクトリが作られてマウントされるんだよなぁ・・・
Linuxの管理方法に慣れてないので、いまいち勝手がわからないなぁ・・・


ということで、またファイルもアップしておきます。
エンコードはUTF-8
→個人的バックアップスクリプト backup.txt
 (.sh拡張子がアップできないので.txtになってます)


#!/bin/sh

##########################################
######### バックアップスクリプト #########
####### HDDのルートにバックアップ #######
##########################################
#rsyncのバックアップ元
declare src=/home/share/
#バックアップ先のHDDの名前(ファイルシステムのラベル)
declare backupHDDlabel=NTFS250GB
#ログファイル名(絶対パス)
declare log=/home/share/log/backup.log
##########################################
########## 設定するのはここまで ##########
##########################################
#文字化け対策
export LANG=ja_JP.UTF-8

declare datestr=`date +"%Y-%m-%d_%H%M%S"`
echo "########### BackUpStart "$datestr" ##########" >> $log

#マウントするディレクトリ
declare mountdir=/media/$backupHDDlabel

#backupHDDlabelでHDDを探してbackupHDD変数にデバイスラベル?を格納?
declare backupHDD=`findfs LABEL=$backupHDDlabel` >> $log

#backupHDDのマウント先のディレクトリを作成(エラー抑止)
mkdir $mountdir >/dev/null 2>&1

#既にマウントしてるとマウント時にエラーが出るのでその前にわざとアンマウント
umount $mountdir >/dev/null 2>&1

#backupHDDをマウント HDDが見つからない時はexit
mount $backupHDD $mountdir || { echo "バックアップ失敗。HDDが見つかりません。" >> $log ; exit 1; }


#必要ないけどこっちの方がわかりやすい
declare dest=$mountdir

#バックアップ
rsync -ab --suffix=.$datestr~ --stats --exclude=log/ --exclude=exclude/ $src $dest >> $log
echo "EndTime "$(date +"%Y/%m/%d %p %I:%M:%S") >> $log
#ログ見やすいように改行挿入
echo "" >> $log

#ログは同期(ログのログは残さない)
rsync -a $src/log/ $dest/log/ >/dev/null 2>&1

#backupHDDをアンマウント(エラー抑止)
umount $backupHDD >/dev/null 2>&1



ちなみに、マウントする時に
mount LABEL=なんてろ /media/なんとか でもラベルでマウントできるみたいです。
mountコマンドを調べた時にはそのような記述は見られなかったですが・・・
何でできるんでしょう?よく解りませんけど・・・・まぁ、めんどくさいんで変えてません・・・・

足りないところは、前回前々回のエントリを読んでください。斜めにでも・・・(駄文が多いので・・・)
スポンサーサイト



PageTop

コメント

 ※
 ※
管理者にだけ表示を許可する
  ※ 必須項目です