実は今

実は今 Orland空港のラウンジにいます このフロリダ州オーランドの学会から今回、Meet the Legendというセッションに招待されました

要するに僕が Legendとして認められ、表彰されました まあ、EuroPCR meetingの時の、Ethica Awardみたいなものですが、それよりは重みは少ないと思います さらに、今回はオーランドから自動車で 1.5時間の距離にある病院からライブデモンストレーションを飛ばす予定だったのですが、その病院のマシンが故障してしまい、残念ながらできませんでした

そんな訳で現在はラウンジにいて、ワシントンDC行きの飛行機を待っています そのまま成田に帰国します

HDへのバックアップ-続き2

さて大分目標に近づいてきました 次はいよいよ command.shの中身を書くことです そもそもなんで .shという拡張子をつけたのでしょうか? それは .shという拡張子は、そのファイルが shell scriptであるということが予約されているからなのです つまり シェルがこのファイルをスクリプトと認識できるのです さてその中身ですが、

#!/bin/sh
rsync -av Documents/backup-source1/ /Volumes/TOSHIBA1TB/backup-source1/
rsync -av Documents/backup-source2/ /Volumes/TOSHIBA1TB/backup-source2/
echo "Backup procedures were finished!"

などとするのです 今簡単に、中身をこのようにすると書きましたが、実はこれも Unix初心者には困難な作業です これには vimなどのエディタを使用せねばならないのですが、このエディタというのが初心者には敷居が高いのです まあ今回はそこについては解説しませんね

ちなみに、rsyncのパラメーターである -avといのはおまじないのようなものですが、要するにバックアップの途中経過を表示する、という意味です

また、ここで非常に重要なのは、

rsync -av Documents/backup-source1/

の部分の

backup-source1/

のところの最後に

/

というスラッシュがついていることです これが無いと、rsyncはこのバックアップ元がフォルダであることを認識しなくなります 非常に重要です さて、ここまでして command.sh という実行ファイルを作成しましたが、これを実行するためには 今自分が /Users/username/というディレクトリにいるとすれば、

$ /Volumes/TOSHIBA1TB/command.sh

このように打てば良いだけです 後は、バックアップを実行してくれます これで便利な日常の回復です

HDへのバックアップ-続き

さて、シェル・スクリプトを用いてバックアップを自動化するためにはどうすれば良いか?

方針としては、その該当するシェル・スクリプト、これを仮に 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  に変更されました

Portable HDへのバックアップ

1TBの SSDを搭載しているMacBook Proを持ち歩いているので、その中にあるデータは僕にとって過去の自分の歴史25年間ぐらいが詰まったとても貴重なものです
パソコンは機械ですので何時障害が起こるかも知れません そんな時にはSSDの中の貴重なデータも消失してしまいます 実際過去にそのようなことが何回か僕の身にも降りかかりました 一番良く覚えているのは、15年ぐらい昔のことです その当時、Sonyの VAIOを持ち歩いていたのですが、タイのバンコクで突然変な音がすると共に VAIOが立ち上がらなくなったのです
記憶ではあの時は Spencer King III先生とご一緒していました 僕は正直真っ青になったのです 当時は未だ Portable HDと真に呼べるような小型のHDはとても高価であり、持ち歩いていなかったのです
ただ幸いなことに、その当時から OS boot領域は HDへのアクセスが頻回なので破壊される危険性が他の領域よりも高いことを知っていまし そして、新しいパソコンを入手すれば、まずは必ず HDの partitionを切り、Drive C:に対して OSを Clean Installしていました そして、Programは C:¥Programに、データは全て D:に入れていました
このバンコクで起こったことは、多分当地の湿気も絡んでいたのでしょうが、C: driveがクラッシュしたのです
仕事を早々に切り上げ、成田に戻り、知人の会社にそのパソコンを運び込み、HDを VAIOより取り出し、そのHDを直接他のマシンに接続し、D: drive dataを安全な他の HDに完全にバックアップしました
これでその時までの僕の人生のかなりがリカバーされました
この事件以来、僕は必ず portable HDにデータはバックアップすることにしました

さて、MacBook Proですが もともとHDは存在せず、SSDしかありません そんな訳で HDシステムよりは安全ですが、それでも何時障害が起こるかも知れません これに備えて常に複数の Portabld HD (1TB – 2TB)にバックアップしていますが、もともと OSXには TimeMachineという簡単で優秀なバックアップ・ツールが存在します これを用いれば簡単なのであり、実際にそのようにしています
しかし、時に個々のファイルや個々のフォルダをBack Upする必要もあります
これには

$ rsync

という bash shellのコマンドを使用します 実際先の TimeMachineも内部的にはこのコマンドを用いている、という話です

ところが、いちいちこのコマンドを打つのは結構面倒です そこで、僕はその Portable HD上に、command.shというシェル・スクリプトを書き込み、このスクリプトを走らせれば目標のフォルダをバックアップすることができるようにしたいと思いました

まあ小さな小さな Unix Programmingということになりますね

この続きはまたね