切っ掛けはアップルのサポートコミュニティ、Mac OS X v10.7 Lionでの論議;
で、「timeutil」コマンドを使えば、GUIの「Time Machine」の「今すぐバックアップを作成」を開ける事無く、CUIからのコマンドでバックアップを開始できると思えるようになった事だ。とりあえず最小のコマンド;#! /bin/shで保存するようになった。かれこれ1ヶ月ほど安定的にバックアップがとれている。
# tmback: Manually execute "Time Machine Backup"
# 2012-05-04 by mNeji
echo "+ Script($0) start at `myDate` ++++++++++++++"
tmVol=`tmutil machinedirectory`
#echo "tmVol: ${tmVol};"
noVol=""
#echo "noVol: ${noVol};"
if [ "$tmVol" = "$noVol" ]; then
echo "Please wakeup External HDD for Time Machine Backup, Try again!"
else
echo "+ Time Machine Backu Up for `tmutil machinedirectory` "
#echo "+ sudo tmutil uniquesize \`tmutil listbackups\` ---------------------"
#sudo tmutil uniquesize `tmutil listbackups`
echo "+ sudo tmutil startbackup --block ---------------------------"
sudo tmutil startbackup --block
echo "+ sudo tmutil uniquesize \`tmutil listbackups\` ---------------------"
sudo tmutil uniquesize `tmutil listbackups`
fi
echo "+ Script($0) finish at `myDate` +++++++++++++"
echo
問題は、手動でFinderを経由して外付けHDDの内の「Time Machine」のパーシションを起動する必要がある事だ。そこで、今回は『必要なパティション、$tmVol、をマウント/アンマウントするスクリプト』を作ろうと考えた。
手元の資料としては
- 「改訂版 Mac OS X ターミナルコマンド ポケットリファレンス」, p
- 海上 忍・著
- 技術評論社、ISBN-10: 4-7741-2877-5
- A bash script to mount and unmount the Windows partition in Mac OS X
- by svenbox at Apr 24, 20006 on MacRumors
- Terminalでの「man diskutil」
でもユーザがFinderで認識してしているのは、あくまで「パーティション名(partition name)」なのだからと思い、「diskutil」を弄り回した。その結果;
- 電源が入っている外付けのリストは「diskutil list」で確認できる。この中にパーティション名($NAME)があれば、次に進む。ここに無ければ電源の投入を注意する。
- マウントの状況は「diskutil info $NAME」で判るが、直裁に「ls /Volumes」を取って、その中に$NAMEがあるかどうかで判定できる。
- 具体的tmutilコマンドでは、パーティションはフルパス表現は不要の様子;
- マウント: diskutil mount $NAME
- アンマウント: diskutil umontDisk $NAME
- 一部のアンマウントだけに止
- めたければ、
- 「umontDisk → umont」
そこでマウント用のHDDonと、アンマウント用のHDDoffとを作った;
マウント用のHDDon
#!/bin/bash
#
# usage: myHDDon Volume_Name
# ↑ /Volues/に出てくるパーティション名(partition name)、ヴォリューム名(Volume name)。
#
# 引数なし(no argument)だと、get "diskutil list"
# 2012-06-03 by mNeji
#
# debug ################
# set -x
# Refered Information
# A bash script to mount and unmount the Windows partition in Mac OS X
# http://forums.macrumors.com/showthread.php?t=195891
# Volume Name of the Partition
NAME=$1
# 無引数(no argument) ######################################
if [ -z $NAME ] ; then
diskutil list
exit 1
fi
# 引数(argument)=パーティション名(partition name in /Volumes/) ################
# /Volumes/中にパーティション$NAMEがあるかの判定
### p_name=`ls -1 /Volumes/ | grep ${NAME}`
### echo "p_name: '${p_name}'" # debugging output
if [ -z `ls -1 /Volumes/ | grep ${NAME}` ] ; then
# パーティション$NAME が存在していない
# check the $NAME in "'diskutil list'"
### echo "--> `basename $0`: Checking $NAME in "'diskutil list'" at `myDate`"
if [ -z `diskutil list | grep " $NAME " | awk '{print $3}'` ] ; then
# no $NAME in "diskutil list"
echo "--> `basename $0`: Turn on POWER SW and Retry ----------------"
diskutil list
echo "--> `basename $0`: Turn on POWER SW and Retry ----------------"
exit 1
else
# already Powerd the HDD, then mounting
diskutil mount $NAME > /dev/null
### echo "--> `basename $0`: '${NAME}' mounted now."
exit 0
fi
else
# already mounted the partition
### echo "--> `basename $0`: '${NAME}' mounted already."
exit 0
fi
アンマウント用のHDDoff
#!/bin/bashなお、判定文の”[ -n $string ]"は上手く動かなかったので、仕方なく”[ -z $string ]"のタイプに統一しました。
#
# usage: myHDDoff Volume_Name
# ↑ /Volues/に出てくるパーティション名。
# そのVolune_Nameのmount/unmoutのトグル・スイッチ
#
# 引数なし(no argument)だと、get "diskutil list"
# 2012-06-03 by mNeji
#
# debug ################
### set -x
# Refered Information
# A bash script to mount and unmount the Windows partition in Mac OS X
# http://forums.macrumors.com/showthread.php?t=195891
# Volume Name of the Partition
NAME=$1
# 無引数(no argument) ######################################
if [ -z $NAME ] ; then
diskutil list
exit 1
fi
# 引数(argument)=パーティション名(partition name in /Volumes/) ################
# p_name=`ls -1 /Volumes/ | grep ${NAME}` # for debugging
# echo "p_name='${p_name}'"
# Check existing of directory of /Volumes/$NAME ##############
partition_name=`ls -1 /Volumes/ | grep ${NAME}`
if [ -z ${partition_name} ] ; then
# there is no /Volumes/$NAME:
# check the $NAME in "'diskutil list'"
### echo Checking $NAME in "'diskutil list'" at `myDate`
if [ -z `diskutil list | grep " $NAME " | awk '{print $3}'` ] ; then
# no $NAME in "diskutil list"
echo "--> `basename $0`: Confirm Volume(Partition)-name! ----------------"
diskutil list
echo "--> `basename $0`: Confirm Volume(Partition)-name! ----------------"
exit 1
fi
else
# there is /Volumes/$NAME:
# unmounting the its all Disk
diskutil unmountDisk $NAME >/dev/null
##### echo "--> `basename $0`: '${NAME}' unmounted Disk now."
exit 0
fi
ーーーー
- 開始 2012-06-04 (月) 12:53
- 修正 2012-06-05 (火) 13:38 「HDDoff: partition_name」←「binary operator expected」対策
0 件のコメント:
コメントを投稿