2018年12月

2018年12月31日


最近のAndroid端末は、端末をパソコン等と繋いだときのファイルのやり取りを、MTP(Media Transfer Protocol)としているものが多い。

私は以前は、Android端末のデータの差分バックアップをするのにrsyncの「–backup-dir」オプションを活用していた。しかし9月に端末を新しく買った(ASUS Zenfone 5z)際に、MTPデバイスとしてのまま同様の差分バックアップができないか思案したのであった(rsyncではMTPにアクセスができない)。というのも

  • 前に使っていた端末は内部ストレージの容量が少なく、バックアップしておきたいデータ(写真など)はMicroSDカードに入れていた
  • しかし新しく買った端末は、そもそも内部ストレージの容量に余裕がある(128GB)
  • また、新しく買った端末は、MicroSDカードの取り出しが割と面倒(ピンを刺して取り出すタイプ

ということもあり、MicroSDカードを経由せずにバックアップを取りたかったのである。

当面はファイルを直接コピーしてしのぐことにし、自分でMTPデバイスのファイルを列挙するプログラムを書いて差分バックアップを取ることも考えたりしたのだが、そんな中ちょうどよいソフトウェアが見つかった。それが上記のFreeFileSyncであった。

私がしている設定

まずは同期対象のフォルダを選ぶとともに、コピー先(パソコン内)を対応して指定します。このときコピー先のフォルダは事前に作っておく必要があります

同期対象フォルダの指定

この画面の赤い漏斗が「フィルター」です。同期したくないファイル名等を指定します。私の場合、「.thumbnails」フォルダ以下と「.aux」フォルダ以下を除外しました。特に前者は除外しないとどういうわけかエラーメッセージが出ました(バックアップできるにはできたのですが)。

フィルタの指定

最初の画面の緑の歯車が「同期の設定」です。方法は「ミラー」(同期先の内容が同期元と一致するようにする)、それによって古いファイルがあった場合の処理は「バージョン管理」とします。命名規則を「置換」(単に指定のフォルダに置くだけ)、移動先のフォルダは適当なフォルダ(事前に作っておく必要があります)の後ろに「\%date%」を付けたものとします。これにより、バックアップ日単位でフォルダが作られます。

同期の設定(全体)

引き続き「同期の設定」において、左側にあるバックアップを行うフォルダを一つずつ選び、差分バックアップの追加設定を行います。「ローカル設定を使用」を選択してフォルダごとの設定を可能にし、古いファイルの移動先の「\%date」の後にさらに「\フォルダ名」を付けます(こうしないと、差分バックアップした内容が全フォルダで混ざります)。

同期の設定(フォルダ別)

設定は保存しておけるので保存しましょう。

実際にバックアップを取る際は、最初の画面でまず「比較」ボタンで差分を確認、その後「同期処理」ボタンで実際の同期を行います。



maraigue at 13:41コメント(0)コンピュータ全般Android 

2018年12月09日

2019年に終了予定のはてなダイアリー。こちらは、新規サービス・はてなブログへの一括移行の機能が提供されている

一方で、グループ機能を主軸としつつもはてなダイアリーと類似のブログ機能も提供しているはてなグループは、はてなブログへの一括移行の機能は提供されていない。 はてなグループは現時点で終了の予定こそないとのことだったが、はてなブログのほうが高機能化されていることもあり移行したいとは思っていた。

結局、力技で移行させた。

※以下にコードも提供しますが、あくまで「私の書いた記事がちゃんと移行できること」しか確認しておりません。利用される場合は、必ず問題なく移行できていることを確認して確定させてください。

前提

Rubyが必要です。なお私はWindowsのMSYS2上のRuby2.5.3で動かしました。古いRubyだと動かない可能性があります。また mswin32版のRubyでは動かないかもしれません。

方法

  1. text-hatenaのダウンロード
    Ruby版text-hatenaをダウンロードします。「Clone or download」ボタンから、git cloneするかZIPでダウンロードします。なお私は2013年3月20日最終更新のcommit「5798e7b」を使いました。
  2. text-hatenaを修正
    上記のtext-hatenaのファイルについて、以下の修正を加えます。
    • lib/text/hatena/auto_link/asin.rb について、
      <%- item.manufacturer.each do |manufacturer| -%>
      <%- item.manufacturer.each_line do |manufacturer| -%> に修正
    • lib/text/hatena/html_filter.rb について、
      @html << text
      @html << text.force_encoding("ASCII-8BIT") に修正
    • lib/text/hatena/utils/htmlsplit.rb について、
      def initialize(html = nil, encoding = $KCODE)
      def initialize(html = nil, encoding = "ASCII-8BIT") に修正
  3. text-hatenaをインストール
    ダウンロードしたファイルがあるディレクトリ(README等があるディレクトリ)にて、以下のコマンドを実行します。
    rake gem
    gem install pkg/text-hatena-0.12.20080627.0.gem
  4. MovableType形式に変換するスクリプトを実行
    hatenagroup2movabletype.rbをダウンロードし実行します。実行方法は以下の通りです。
    hatenagroup2movabletype.rb エクスポートしたXMLファイル > 適当なファイル名.txt
  5. はてなブログでインポートする
    ブログの設定画面(ブログが複数あるならばその設定画面)にて、インポート→一般のブログ を選び、「ブログデータをアップロード」を「MovableType形式」で行います。これで基本的には対応できるかと思います。

注意点

  • コメントは保存しません。(やろうと思えば出来たのだが)
  • 1日に複数の記事がある場合は、それぞれを個別のブログ記事として保存します。その際、記事IDから投稿時刻が判断できる場合はその時刻で保存しますが、判断できない場合は23:59:59(複数ある場合は、次が23:59:58、もう一つあれば23:59:57、…)として保存します。
  • 日付に対してタイトルが付いている場合は無視されます。記事単位のタイトルのみが残ります。
  • HTMLタグは、text-hatenaで事前に規定されたもののみ維持されます。維持されてほしいのだけど維持されていないタグがある場合、lib/text/hatena/html_filter.rb 中の「@allowtag」「@allallowattr」「@allowattr」を書き加えることで対応できます。私は以下のようにしました。
    @allowtag = Regexp.union(/^(a|abbr|acronym|address|b|base|basefont|big|blockquote|br|col|em|caption|center|cite|code|div|dd|del|dfn|dl|dt|fieldset|font|form|hatena|h\d|hr|i|iframe|img|input|ins|kbd|label|legend|li|meta|noscript|ol|optgroup|option|p|pre|q|rb|rp|rt|ruby|s|samp|script|select|small|span|strike|strong|sub|sup|table|tbody|td|textarea|tfoot|th|thead|tr|tt|u|ul|var)$/, /^#{@additional_allowtag.keys.join('|')}$/)
    @allowattrは以下の行を追加::iframe => 'frameborder|scrolling|marginheight|marginwidth|src', ならびに :script => 'src|data-id|data-size|data-border|charset|async',

方針

はてな記法をそのまま残したインポートができれば一番よかったのだが、それが難しそうだったので、一度HTML化することにした。このためにtext-hatenaというライブラリを使うことにしたのだが、Rubyの新しいバージョンに対応していない箇所がところどころあったので修正して使っている。

MovableType形式への変換は完全に手作業である。仕様が単純なので何とかなった。仕様は Movable Type のブログ記事インポートフォーマット | CMSプラットフォーム Movable Type ドキュメントサイト を参照。



maraigue at 19:12コメント(0)Webサービスプログラミング 
livedoor プロフィール

H. Hiro

  • ライブドアブログ