さて、シェル・スクリプトを用いてバックアップを自動化するためにはどうすれば良いか?
方針としては、その該当するシェル・スクリプト、これを仮に command.shと名付けることにしましたが、このスクリプトの置き場所は、その該当する HDに置くことにしました
まずは HDに内容の無い command.shというファイルを作成します その前に、OSXから見て、該当の HDがどのような名前で認識されているか知らねばなりませんが、これには
$ df -k
と打ちます
そうすると僕の場合
Filesystem 1K-blocks Used Available Use% Mounted on /dev/disk1 975912960 719561052 256095908 74% / localhost:/YGd**************4DJF2 975912960 975912960 0 100% /Volumes/MobileBackups /dev/disk3 976076800 947381836 28694964 98% /Volumes/TOSHIBA1TB
というものが戻ってきました 既に 1TBの内の 74%を使用していると書いてありますね この /dev/disk1 というのが僕の 1TB SSDということになります
そして、最後の /dev/disk3というのが MacBook Proに USB接続した portable HDであり、その名前は /Volumes/TOSHIBA1TB であることが狩りました おっと、こちらも 1TBの内の既に 98%を消費している、ということが分かりますね さて、この HDに command.shというファイルを作成するには
$ touch /Volumes/TOSHIBA1TB/command.sh
とすれば良いのです つまり、意味する所は、/Volumes/TOSHIBA1TB/command.sh というファイルを作成する、ということなのですが、実はこのままでは permission errorというエラーが出て叱られてしまいます
$ sudo touch /Volumes/TOSHIBA1TB/command.sh
このように頭に sudoというコマンドを付け、最高権限でコマンド touchを実行せねばなりません 当然この時には passwordを聞かれます
ここからが Unixである OSXはややこしいのです このままでは command.shを実行することはできません、それは僕が root権限でこのファイルを作成したからでなのです 実際にそうであることは以下のコマンドで分かります
$ ls -l /Volumes/TOSHIBA1TB
これに対して OS側が次のようなものを戻します
-rw-r--r-- 1 root wheel 0 6 17 18:28 command.sh
これが意味するところは、このファイルは rootのものであり、僕のものではない、ということです ですからまずはこのファイルの所有権を僕のもの、ここでは username というユーザーということにしておますね、その僕のものにせねばなりません このためには所有者変更コマンドを発行します
$ sudo chown username /Volumes/TOSHIBA1TB/command.sh
これで再び
$ ls -l /Volumes/TOSHIBA1TB
とするとあらあら不思議
-rw-r--r-- 1 username wheel 0 6 17 18:28 command.sh
となり、このファイルの所有者が見事に username に変更されました