バックアップを USB メモリと unison で

自宅 PC のバックアップをとってないことに気付いたので何とかしようと思いました。

  • とりあえずバックアップ対象は ~/ 以下だけでいいことにする
  • ~/ 以下が実は 200MB ぐらいしかないので USB メモリに入る

ということで以下,今日やったことをだらだらと書いてみます。なんかあたりまえなことがたくさん書いてあるかもしれません。

USB メモリのマウント

バイスファイルがどこかよくわからなかったりしました。結局 /dev/sdb1 だったようです。検索してみたら「メモリを挿して dmesg するとそれっぽい文字列が見える」というふうな情報を得たのでそうして当たりをつけましたが,もっと標準的な方法があるかもしれません。

とりあえず sudo mount /dev/sdb1 したらマウントポイントがわからんと怒られたので /etc/fstab に適当に書きました。

/dev/sdb1 /media/usb1 auto rw,user,noauto 0 0

書かなくても指定すればいいんですけど,まあ毎回指定するのも煩わしいので。

フォーマットからとりあえずコピーまで

USB メモリのフォーマットには,いくつかやり方があるみたいです。mkfs.ext4 というコマンドを見つけたので,とりあえず叩いてみたらできました。こんな感じで。*1

$ sudo mkfs.ext4 /dev/sdb1
$ sudo mount /dev/sdb1

バックアップを突っ込むところを作る。owner が root になってたので chown する。

$ cd /media/usb1
$ sudo mkdir backup
$ sudo chown kozima:kozima backup
$ cd backup

で,とりあえず何も考えずにコピーしてみました。(実際に打ったコマンド何だったか覚えてないけど)

$ mkdir -p home/kozima
$ cd home/kozima
$ cp -pr ~ .

風呂に入ってる間にコピー終わりました。なんかホームディレクトリ直下にたまたま syslog のコピー置いてたせいで permission denied とか言われてましたけど,まあどうでもよかったので無視しました。

その後の同期 (unison 使ってみる)

で,同期とるのに unison 使ってみようって思って profile 書きました。.unison/backup.prf に以下の内容を。

batch = true
owner = true
group = true
force = /

root = /
root = /media/usb1/backup

path = home/kozima

# safely skipped
ignore = Path home/kozima/tmp
ignore = Path home/kozima/backups

# cause an error
ignore = Path home/kozima/.unison/unison.log
ignore = Path home/kozima/.aptitude

# maybe ok to skip
# ignore = Regex home/kozima/\.unison/ar[0-9a-f]*
# ignore = Path home/kozima/\.mozilla/firefox/........\.default/Cache

*1:でも fdisk -l したら FAT16 になってるけど mount で見ると ext4 になってて,どういうことかよくわからない

Ubuntu 10.04 で stumpWM を使ってみた

stumpWM を使い始めたのだけど,なんだかえらくはまったのでまとめてみた。きっとよく分かっている人には何でもないことなのだろうし,標準的でないことをしているかもしれないけど。

参考: http://blog.nguyenvq.com/2010/11/10/stumpwm/

stumpwm をインストールする

sudo aptitude install stumpwm

でできたと思う。

stumpwm.desktop を作成

/usr/share/xsessions/stumpwm.desktop を作る。中身は同じディレクトリにある他のファイルを真似したらできた。こんな感じ。

[Desktop Entry]
Name=StumpWM
Comment=This session logs you into stumpWM
Exec=stumpwm
TryExec=stumpwm
Icon=
Type=Application

ログイン

ログイン画面の下のほうに出るセッションのところで StumpWM を選択する。

選択したセッションは記憶されるみたいで,次からは何もしなくても StumpWM が選択された状態になるようだ。

なんか CLISP だと起動しない

CLISP だと stack overflow とか言われて起動しなかった。検索してみたら,同じ問題にぶつかっている人が他にもいる。cl-ppcre のロード中にこける様子。

解決したという話もちらほらと見られるのだけど,SBCL を使うようにしてみたらうまくいってるみたいなので,それでいいことにした。

/usr/bin/stumpwm の下のほうにある

    LISP=${LISP_STUMPWMRC:-clisp}

という行を

    LISP=${LISP_STUMPWMRC:-sbcl}

に変更。

適当な場所で LISP_STUMPWMRC=sbcl すればよかったのかもしれないけど,なんかうまくいかなかった。

auto-save-buffers

最近,auto-save-buffers を使うようになりました。存在だけはずっと前から知っていたんですが,なんとなく導入しても特に便利になりそうにないからまあいいか,と思ってました。

何をするものかというと,僕がここで詳しく書かなくても検索すれば出てくるのですが,まあ一言でいうといちいち save-buffer しなくても勝手に保存させればいいじゃんっていう思考を具現したような感じのものというんでしょうか。まあそれでそんなに間違ってはいないと思います。

具体的な動作としては,なにも操作をしていない状態が指定した時間だけ続くと (0.5 sec とかそれぐらいにするのを想定してる感じです) 勝手にすべての file-visited なバッファを save-buffer するというものです。ちなみに検索して出てきたコードに自分で手を入れたような記憶があるので他の人が使ってるのと同じ動作かどうかは不明です。でもまあだいたい同じでしょう。

ともかくこれを導入して,そうすると save-buffer をユーザが呼び出す必要はなくなるわけで,せっかくなので C-x C-s を undefined にしてみたりして使っています。これで快適に作業ができるようなら,新たにコマンドを割り当てられる場所が一つできるかもしれないなあという期待もあったりします。

で,とりあえずしばらく使ってみた感想としては,たぶんなくてもそれほど困りはしないけど,まああっても特に問題はないような感じだし,まあこのまま使おうかなあというところです。ただ,編集が終わってすぐ make なりなんなりしたいときにもちょっとだけ待たないといけないので,それがまったく気にならないというわけにはいかないようです。

ところで文体がいつもと違う気がする。

TeX のコマンドライン引数とか

ちょっと調べた。

  • コマンドラインからソースを直接食わせられる
    • -interaction=nonstopmode のときに改行を含む入力を食わせると怒られるらしい
  • -jobname=hogehoge で出力が hogehoge.dvi とかになる

ということはこんなふうに preamble をスクリプトで生成してコンパイルするようなことができる。

platex -interaction=nonstopmode -jobname=$outputname "$preamble \input{$inputfile}"

一時ファイルに書き出すよりはきれいかも。

たまには日常のことなど

突然寒くなりました。今夜は息が少し白く見えます。

毎年毎年思うことですが,もう冬を迎えるのも二十数回目なのだから,だいたい何月何日ごろに上着がほしくなって,息が白くなって,朝方の道路に氷を見かけるようになって,とかいったことを,そろそろ覚えてもいいのではないかと。ところが実際にはいつまで経っても覚えないので,これからもずっと,季節の変わり目になるたびにそのようなことを思うのでしょう。

謎の runtime error

いつからか,codeforces に F# で submit するとランダムに runtime error が発生するようになっている模様。

blog に書いてみたところ,「Mono をアップグレードしてるとこだから,そのせいかも」という反応がありました。とりあえず待機するしかないか。