Mac 関係

2014年8月22日 (金曜日)

Android の adb backup から一部だけリストアしちゃー

スマホ(Softbank 202F)が壊れて修理に出すことになって、出来る限りバックアップとっておこうと調べてみると、 Android SDK に含まれる ADB を使用してバックアップ/リストアができるらしい。取り敢えずこちらのサイトなどを参考にバックアップ。 -apk -shared - all -system のオプションでバックアップしたところ 15GB 程に…。念のため -noapk -noshared -all -nosystem のオプションでもバックアップしておく。これは 170MB 程。スマホは1週間程で戻ってきたけど、すぐにはリストアする時間がなく2日程使ってしまったので、リストア前にも後者のオプションで念のためバックアップ。

15GB のバックアップからのリストアは結構な時間がかかったけど、全てが元通りという訳ではなく、 Line がエラーして起動しなかったり Kobo, Sony Reader 等含めて本体にダウンロード済みのデータ(これらはマニュアルでバックアップ/リストアした)を認識してくれなかったり。修理で基盤交換とかしてるからなのか、そもそもバックアップが不完全なのか、それとも修理後しばらく使ってたのが悪かったのか。

修理後、おサイフケータイの再設定などはうっかり済ませてしまっていたけれど、どうせリストアで完全に元に戻らないのならと、これら設定を反映させるために修理後にとったバックアップも追加でリストアしてみた。
すると今度は「メモ帳」アプリのデータが消えてしまったので、取り敢えずそれだけは復活させたいと考えてみたメモ。前置き長すぎ(笑)。
因みに 202F の「メモ帳」アプリのパッケージは com.fujitsu.kservice.fnotepad_3thm みたい。

ADB バックアップデータと tar アーカイブを双方向に変換してくれるツールは既に存在するようで、こちらとかこちらとかを参考にバックアップデータを tar に変換し展開することで特定のパッケージを取り出すことができた。ただ、これを再び tar にして ADB バックアップデータに変換する際には注意が必要そう。
tar にまとめる際にファイルを格納する順序(実際にはパッケージディレクトリ直下のサブディレクトリの順序のみ?)が正しくないと、ちゃんとリストアしてくれないみたい。また、 tar の中でファイルエントリの前にそのファイルを含むディレクトリだけのエントリがあってもダメみたい。でも空のディレクトリはあり…?とか。
バックアップファイルのフォーマット仕様書を見つけられなかったので、前述のサイトなどを斜め読みし色々試しつつ、 ADB バックアップデータから取り出した tar を展開して得られるディレクトリツリーから ADB バックアップファイルを作るスクリプトを書いてみた。「メモ帳」アプリのデータが復元できる事と、 Line を ADB バックアップ→ tar に変換&展開→件のスクリプトで ADB バックアップファイル再構築→ ADB リストア→ ADB バックアップ…を行い、最初と最後の ADB バックアップファイルを tar に変換&展開して同一のモノが得られることは確認…って分かるかな?(笑)。

前述のサイトにあるツールは python や java, perl で書かれてたけど、統一感無く ruby で(笑)。バックアップファイルから取り出した tar を展開すると apps というディレクトリができるので、この apps ディレクトリがあるディレクトリでスクリプトを実行すると apps 以下の内容を含むバックアップファイル生成。スクリプト実行前にリストアしたいパッケージを取捨選択しておく。ホントは元の tar を展開せずに直接必要な部分だけ取り出せればいいんだろうけど、取り敢えず。

全てが元通りではないけれど、ひと通りリストアが終わったところで、ふと「ギャラリー」を開くと…え、修理に出してる間に代替機で撮影した写真がない!保存先は microSD にしてたはずなのに…と途方に暮れつつ「ギャラリー」アプリのデータを削除してスマホを再起動すると、「 SD カードをスキャンしています」的なメッセージの後、無事に全ての写真が表示されますた。

あ、スクリプトは OSX 10.9.4, ruby 2.0.0p451で動作確認。スクリプト内部で tar コマンド呼び出したりパイプ使ったりしてるので、 Unix 系システムがよさげ。

| | コメント (0) | トラックバック (0)

2014年5月23日 (金曜日)

クレーンゲームでとったトイデジからの写真取り込みとか

小学生の娘が自分用のデジカメが欲しいというので、そう言えば昔クレーンゲームでとったのがあるよと出してきたはいいけど、 PC に接続して写真を取り出すためのアプリが入ってた CD を処分してしまっていたので何とかしたメモ。

Img_20140519_01_34_33_xga_2

Digicamusb_2

デジカメ本体はこんな感じ。本体には D:X DIGITAL とか DIGITAL CAMERA とか USB とか(笑)しか表示がなくて、ネットを色々探してみたけれど使えそうなアプリは見つけられず。 USB ケーブルを接続する端子も特殊?な感じだけどケーブルは奇跡的に発見。

Linux に繋げて lsusb してみると…

Bus 001 Device 006: ID 0979:0227 Jeilin Technology Corp., Ltd JL2005B/C/D Toy Camera

という表示。更にこれを手掛かりに探してみると、 gphoto を使うとカメラ内の写真を取り出せるっぽい!

早速 MacPorts で gphoto2 をインストールするけど、どうも最近 MacPorts でのインストールやアップグレードが失敗するなぁと少し調べてみると、どうもこういうことみたい。確かに Mavericks にしてから鴨。これまでバータリーに対処してきたのは無駄だったのね。 Homebrew だとこんなことないのかな? 取り敢えず手順通りに実行すると確かにエラーは出なくなったけど、やたらと時間がかかる。かかり過ぎる。カペルスキーインターネットセキュリティって奴を入れてから色々かなり重たくなってる実感があったので、試しにこれを無効にしてみると100倍速くなりますた。あくまで体感(笑)。 Parallels にバンドルされてたから使ってみてたけど、これを機会にサイナラします…。

20140522_042716gphoto2 を使ってコマンドラインから写真の取出しや削除ができる事は確認できたけど、さすがに小学生の娘にターミナルからコマンド入力させるのもアレなので簡単な GUI を Ruby/Tk でテキトーにこんな感じに。やっぱりマルチスレッドにするべきかなぁと直しかけたけど、使えないこともなさげなのでそのままに。やっつけなコードを恥ずかしながら置いときます。プログレスバーつけようとして志半ばな残骸もそのままに。あ、 gphoto2 と ppmtojpeg を内部で呼び出してます。あとは Automator を使ってアプリっぽく起動できるようにして出来上がり。

| | コメント (2) | トラックバック (0)

2013年10月 7日 (月曜日)

Xcode license agreements

macport で wine のビルドがこけたのでログを見てみたら…

:info:destroot You have not agreed to the Xcode license agreements, please run 'xcodebuild -license' (for user-level acceptance) or 'sudo xcodebuild -license' (for system-wide acceptance) from within a Terminal window to review and agree to the Xcode license agreements.

…と書いてあるので、その通りに sudo xcodebuild -license と実行して表示される内容を熟読(嘘)して agree と入力。
その後は無事にビルドできてるるっぽい。でも今まで、こんなのやったことなかったような。面倒だから諦めようとしてたけど、ログみてよかった(笑)。

| | コメント (0) | トラックバック (0)