ddコマンドでmicroSDからデータを吸い出した

MacBook Proのローカルのストレージがぎゅうぎゅうだったので、ここ1年くらいはmicroSDカード挿しっぱにしてそこにiTunesライブラリを追い出して運用してたんだけど、さいきんmicroSDがOS側でアンマウントされまくるようになってしまった。Time Machineバックアップの対象外だしふっ飛ぶのはちょっと怖いな…と思い、rsyncでローカルにコピーしてたらその最中にもバンバンアンマウントされて大変穏やかでない。

そんな状況だったので、ddコマンドでデバイスをまるごとコピーした。 dd あんまり使ったことないけど、至って普通の使い方だと思います。

sudo dd if=/dev/disk3s1 of=/Users/futonchan/Desktop/sdcard.img

デバイス名 (disk3s1) は、マウントしたときに df コマンドで見ればいいが、マウントできない状態でも、ディスクユーティリティで対象のパーティションを選択して「情報(⌘i)」を表示すると確認できる。

rsyncではコケまくったけど、ddではちゃんと1発で22GB程度のダンプがとれた。デスクトップ上にできあがったディスクイメージを開くと、ふつうにSDカードを挿した時のように /Volumes/ の下にマウントしてくれるのでしかるべき場所にファイルコピーをする。

スペース区切りのリストをxargsに渡す方法が徐々に短くなっていく様子

#1

echo 'a.hatena.ne.jp d.hatena.ne.jp f.hatena.ne.jp' | tr ' ' '\n' | xargs -I%% host %%

#2

echo {a,d,f}.hatena.ne.jp | tr ' ' '\n' | xargs -I%% host %%

#3

echo -e {a,d,f}.hatena.ne.jp"\n" | xargs -I%% host %%

サンプルで使うドメインのセレクトが古い人間っぽいなと思った。

Tampermonkey + Python SimpleHTTPServer で Google Chrome での UserScript 開発を若干ラクにする

Google Chrome はUserScriptを直接インストール出来ないので、開発のときにスクリプトを更新したいときも chrome://extension にファイルをドロップとかしないといけなくて大変めんどい。 Tampermonkey を入れておくと、HTTPごしにUserScriptのインストールができるので、これで少しラクできる。といっても半自動化…。

  • Terminalで、UserScriptのありかにcd
  • Webサーバ起動ワンライナーを叩く
    • python -m SimpleHTTPServer 8080
  • ブラウザで localhost:8080 を開いて、ファイルリストを表示させる
  • 更新したいときに、ファイルリスト上のリンクをクリックして、UserScriptをインストール

Bashパラメータ展開+xargs でいい感じにリネーム

ls -1
aaa.example.jp.txt
bbb.example.jp.txt
ccc.example.jp.txt
ddd.example.jp.txt
eee.example.jp.txt
ls -1 | xargs -I{} bash -c 'f={}; mv ${f} ${f/.jp/.jp.201307}'
ls -1
aaa.example.jp.201307.txt
bbb.example.jp.201307.txt
ccc.example.jp.201307.txt
ddd.example.jp.201307.txt
eee.example.jp.201307.txt

VirtualBoxの仮想マシンをコンソール画面なしで起動する

VagrantでVM起動してもコンソールウィンドウ出てこないのなんなん、とおもってたらHeadlessってモードがあることを知った。

nohup VBoxHeadless --startvm vm1 &

普通に実行しちゃうと、ターミナル開きっぱにしないといけなくて不便。ちなみにターミナル閉じると仮想マシンの実行は“中断”に移行する。

curlでHostを指定してアクセスする

接続先のIPアドレスを指定して(=ホスト名から正引きをしないで)HTTPのリクエストをしたいとき、コマンドラインだとcheck_httpくらいでしかできないとおもってた。

/usr/lib64/nagios/plugins/check_http -H example.com -I 10.0.0.10 -u /home/

curlとかwgetにも、check_httpの -I オプションみたいなのほしいなー、でもないよなー、と諦めていたら。
curlの-HオプションでHostヘッダーを指定すればよい、と言っているひとがいて感動したので情報共有します。

curl -v http://10.0.0.10/home/ -H 'Host: example.com'