Time Machine のスナップショット、つまり /Volume/Time Machine/Backups.backupdb/[Machine Name]/2016-05-05-002654/ みたいなやつを手動で削除したいとします。

これを Finder 経由で、ごみ箱に入れてごみ箱を空にするという手順でやると、時間がかかるうえに、途中で「ロックされている項目を削除してもいいか?」と一度確認まで入ります。さっさと削除してくれよという感じがします。

ということで、めんどいなので rm -rf するかと思いきや、これは削除するパーミッションがあっても、 operation not permitted となって失敗します。どうしてかというと Time Machine のスナップショットは専用のカーネル拡張で守られているからです。守られているにはそれなりの理由があるので rm -rf は素直に諦めましょう。

ということで、tmutil delete を使います。

$ cd /Volumes/Time Machine/Backups.backupdb/Alice
$  sudo tmutil delete 2016-05-05-002654/
Password:
Deleting: /Volumes/Time Machine/Backups.backupdb/Alice/2016-05-05-002654

こんな感じで使えます。スナップショット1つ消すのに結構な時間がかかりますが、特に確認は入らないので放置すれば終わります。

余談:なぜ rm -rf がダメか

Time Machine は差分バックアップのためハードリンクを活用します。これはディレクトリに対してもそうで、内容に変化のないディレクトリはハードリンクになります。 (ちなみにディレクトリのハードリンクは標準 ln では作れないので、brew install hardlink-osx で入る hln で試すことができます)

このとき、違うスナップショット間でも同じディレクトリエントリとなるわけなので、このディレクトリエントリ中のファイルエントリを削除 (unlink) してしまうと、このディレクトリにハードリンクしているスナップショット間でもファイルが消えてしまいます。なので rm -rf が禁止されています。

$ mkdir foo bar
$ touch foo/a.txt
$ ls
foo/ bar/
$ ls foo
a.txt
$ hln foo bar/foo
$ ls bar/foo
a.txt
$ rm -rf foo
$ ls
bar/
$ ls bar/foo
# a.txt が消える
  1. トップ
  2. tech
  3. Time Machine のスナップショットをコマンドラインで削除する

コネクタのペアの極性のことをジェンダーといい、それぞれオス(male)とメス(female)に呼びわけられる。変換コネクター(アダプター)はジェンダーチェンジャー(gendar changer)と言う。海外サイトで高周波コネクタを買いたいときはこれで検索するのが確実。

ただどうも結構よくどっちがどっちかわからなくなる。コンセントみたいに単に突起が出てるだけ/受ける側は穴が開いているだけなら簡単だけど、SMAコネクタにようにハウジング(ピンを保護したりするための囲い)がついているとややこしくなる。

しかも SMA コネクタの場合 RP-SMA というオス型ピン+メス型ハウジング/メス型ピン受け+オス型ハウジングというカオスな組み合わせがあるのって、どっちがオスでどっちがメスなのかわかりにくい。考えかたとしては内部にピンが立っているほうがオスであっているはずだけど自信がなくなる。

ユーザーが増えると嬉しいものだ!というのはわかるし、そうなんだろうけど、自分に正直に考えてみると、自分はそのことがそれほど嬉しくないようだ。

むしろ、ユーザーが増えるとミスしたときの影響範囲が広くなるので、どんどんコード書くことに対して嫌になっていく。プログラミングは「てこ」であって、小さな労力で大きなことをやることができるが、すなわち負の面では小さなバグで大きな影響を与える。当然、ほとんどの場合は良い方向に作用するし、そうするように作っているつもりだが、バグのないコードを書くことは不可能なので、コードを書けば書くほど、負の作用に怯えることとなる。

「自分のプロダクトがたくさん使われてるのってすごいと思わへん?」と聞かれると、理性の上ではそうですねと思うが、直感的にはまずは辛いという気持ちがでる。

根幹にあるのは、「たくさんの人に使われる」ことが自分の中の承認システムに組み込まれておらず、それを天秤にかけたとき、嬉しさの方に傾かないということだ。

たくさんの人に使われるからといって、技術的にすごいとはいえない、というのもあるかもしれない。ただこの考えかたは美化しすぎで、たくさんの人に使われてバグが見つかってバカにされるのが嫌なだけというのが正直なところだという気がする。