nDiki : ファイル同期

ファイル同期 (file synchronization)

ファイル同期ソフトウェア

  • rsync: 定番。
  • Unison: 双方向同期が便利。
  • WinMerge: ディレクトリ間の差分を個別にマージすることができる。

2018年8月9日 (木)

nNoteAndroid スマートフォンに同期して編集する

nNote のエントリはテキストファイルでサーバに置くだけで公開できるようになっていて下記のように同期して運用しています。

 nNote (www.naney.org) <-- 別の Mac から Emacs + TRAMP で編集
   |
  <「Unison」で同期>
   |
 自宅にある母艦 MacBook Pro <-- 編集(メイン)
   |
  <「バックアップと同期」で同期>
   |
 Google ドライブ <-- スマートフォンの JotterPad/iA Writer で編集

これだと外出先では nNoteGoogle ドライブが同期できずちょっと不便。なのでスマートフォンにも同期をすることにしました。

 Android スマートフォン <-- JotterPad/iA Writer で編集
   |
  <「FolderSync Pro」で同期>
   |
 nNote (www.naney.org) <-- 別の Mac から Emacs + TRAMP で編集
   |
  <「Unison」で同期>
   |
 自宅にある母艦 MacBook Pro <-- 編集(メイン)
   |
  <「バックアップと同期」で同期>
   |
 Google ドライブ

FolderSync Pro で SFTP を使って nNote のディレクトリと Android スマートフォンの「Documents/iA Writer/nNote」ディレクトリを同期します(iA Writer のライブラリにある Device (Public) は Documents/iA Writer 固定のため)。

nNote は公開しているものなので、スマートフォン上にはあまりデータを置いておきたくない派ですが今回は許容ということで。

Jota+ などから直接 SFTP 経由で nNote のファイルを編集するという手段もあったのですが、 JotterPad(ブラウズしやすい・バージョンが残るので戻せる)や iA Writer(ブラウズしやすい・簡易チェックボックス機能がある)を使いたいというのもあるので、同期してローカルで編集することにしました。

[ ファイル同期 ]

[ 8月9日全て ]

2019年2月8日 (金)

プレビュー付きテキストファイル一覧表示ができる Android ノートアプリ neutriNote

テキストファイルベースでノート管理をするのに Mac では UlyssesiA Writer を、 Android デバイス上では JotterPad を使っている。JotterPad は主にユビキタスキャプチャ用のフォルダを開いた状態にしているので、フリーノート用に使える Android アプリを別に欲しいところである。

しかしテキストエディタはいろいろ存在するのだけれど、ファイル一覧で中身をプレビュー表示できるものはほとんど無いんだよね。ノートアプリとして使うにはファイル名一覧では駄目で、中身がずらずらっと見られる必要があるのだ。例えば Google Keep の表示みたいに。

で、いろいろ探してみたところ以前から名前は知っていた neutriNote が、テキストファイルとしてデータを保存するタイプでしかも一覧表示でプレビュー表示で中身を横断的に見られそうなのでインストールしてみた。

image:/nDiki/2019/02/08/com.appmindlab.nano.png (play.google.com/store/apps/details?id=com.appmindlab.nano より)

名前なニュートリノからきているらしい。

特徴や使用感

  • Markdown に対応している。良い。
  • タイトル = ファイル名はいったんデフォルトで「New Note (n)」となる(テキストは設定で変更可能)。
  • プレビューは3行。ほとんどのアプリがファイルの先頭を表示するのに対して、末尾を表示するというのが特徴的。追記していくことを想定した UI かな。
  • フォルダ階層は提供しないポリシー。
  • ノートをシェアするとテキストにタイトルも含まれる(Twitter の下書きとして使うにはタイトルが含まれない方が嬉しい)。
  • ウィジェットでホーム画面にノートを表示できる(ただし neutriNote 以外で直接ファイルを削除する場合、ウィジェット表示しているとアプリが落ちるっぽい)。
  • (いい意味で)変態的カスタマイズができる。例えば ~neutrinote_shortcuts という設定ファイルに date|neutriNote$ date +%Y-%m-%d-%H%M%S と記述しておくと、ノート上の date という文字列を選択してテキスト展開ボタンを押すと書式指定した date コマンドを実行してその結果で置換してくれる。

同期

neutriNote はデバイス上に指定したローカルリポジトリ(フォルダ)にテキストファイルとしてデータを保存するので、DropboxGoogle ドライブで同期できる。

neutriNote にもオプションで「neutriNote Connector+」というアプリがあるのだけれど、 Dropbox のアプリフォルダ以下だけのアクセスタイプで作られているので自分の用途に合わなかった。

ので今回は以前から使っている FolderSync Pro で Dropbox と双方向同期させることにした。インスタント同期をオンにしておけば neutriNote で変更を加えたらすぐ Dropbox に同期させられる。Dropbox 側での変更を検知して同期することはできないので別途定期同期を設定しておくとともに、 Android デバイスのホーム画面に同期開始のショートカットを置いておいた。

ちなみに neutriNote ではファイル名が ~で始まるものは隠しファイルなので同期から除外。逆に Ulysses は .Ulysses で始まる隠しファイルを作るのでこれも同期対象から除外にした。

良さそげ!

テキストファイルベースのノート管理というスタイルに超ハマる Android アプリだ。 常用ノートアプリの仲間入り!

[ ノート・日記はテキストファイルに ] [ ファイル同期 ]

[ 2月8日全て ]

2019年12月14日 (土)

Mac での双方向ファイル同期に FreeFileSync を使う

MacBook Pro の内蔵 SSD の容量がいっぱいになってきたので NAS にオリジナルを移動し、そのバックアップとして新しく買った外付け SSD を使うことにした。NAS 上のフォルダと MacBook Pro に接続した外付け HDD 上のフォルダを同期するのに今回 FreeFileSync を使うことにした。

ちょっと古風な UI だけれど良くできている。操作として

  1. 比較ボタンを押して2つのフォルダを比較する。
  2. 同期処理内容を確認してから、同期処理ボタンを押して同期を実行する。

としっかり2段階になっているのが好き。このあたり2003年からリモートホストとの同期に愛用している Unison File Synchronizer と同じ考え方なのでしっくりくる。

同期処理でのファイル削除時にバックアップを作成する設定にもしておける。この設定をしておくことで間違えた時にリカバリもできる。

Unison をリモートホストでも実行できる場合の双方向ファイル同期には Unison を、ローカルホストだけで双方向同期をさせる必要がある場合は FreeFileSync という形で今後使い分けよう(ちなみに Android では FolderSync Pro)。

[ Mac アプリケーション ] [ ファイル同期 ]

動画ファイルを NAS + 外付け SSD に保存するようにする

デジタルカメラで撮った大切な動画はロストしないように

と3台のストレージ上に置かれるようにしている。

3箇所にあるのでそこそこ安心なのと、オリジナルが MacBook Pro 上にあるのでいつでも観ることができるという使い勝手の良さがある。一方 MacBook Pro のストレージを圧迫しちゃう。最近 MacBook Pro のストレージが残り 10GB〜20GB ぐらいになってしまい支障が出てきたので見直すことにした。

NAS にオリジナルを、外付け SSD にバックアップ

オリジナルは NAS (Synlogy DiskStation DS216j) に置くことにしよう。自宅にいればいつでもアクセスできるので動画を観ることができる。

NAS は2台ある HDD のうち1台が壊れても大丈夫にはできているけれども、重要なファイルはバックアップが必要。予算や設置場所を考えて NAS + NAS はちょっと無理なので NAS + 外付け SSD にする。

安くなっていたバッファローの外付け SSD を購入した。

バックアップ方法

外付け SSD へのバックアップだけれど、今後もし自分に何かあった時にも残された家族が使い方に迷わず動画ファイルを観られるように、 Mac につなぐだけで Finder でアクセスできる形式になるようにすることにした。

動画ファイルが増える機会はそれほど頻繁ではないので、 Synology DiskStation DS216j に常時接続しておいて定期的に自動バックアップというのはせずに、 MacBook Pro に外付け SSD を接続して手動でバックアップすることにする。

双方向ファイル同期は今回は FreeFileSync を使うことにした。

180GB 強を今日と翌日で移動完了。ようやく MacBook Pro で余裕をもって作業できるようになったよ。

[ 12月14日全て ]

2020年1月30日 (木)

Pixel 4 で撮った写真は FolderSync Pro で Dropbox

Pixel 4 の DCIM フォルダと Pictures フォルダを Dropbox と FolderSync Pro で定期的に同期させておくことにした。Pixel 4 で撮った写真は、あとで Mac 上で Dropbox フォルダから移動して整理。次の同期タイミングで Pixel 4 からは削除されてスッキリ。

Pixel 4Google フォト「バックアップと同期」を OFF にしたことによるバックアップ不在問題もこれで解決。

スマートフォンから Android アプリ Solid Explorer で Synology DiskStation DS216j (NAS) に移動、 DS216j と Mac は Synlogy Cloud Station で同期という形で Xperia Z5 の時から写真を移動していたのが今まで。 Solid Explorer での一手間が無くなったので、これで後回しにすることが無くなるよ。

[ ファイル同期 ]

[ 1月30日全て ]

2020年2月25日 (火)

テキストエディタをバージョンの自動保存機能がある JotterPad に戻す

FolderSync Pro で Pixel 4Dropbox とでノートテキストファイルのあるフォルダを30分間隔で同期しているんだけれど、同期前にうっかり Pixel 4 上と MacBook Pro の両方で編集して Pixel 4 で書いた分をロストしてしまった。

MacBook Pro 側の変更は Dropbox のバージョン履歴でリカバリできるけれど Pixel 4 側は現状リカバリできるようになっていない。編集中のバージョンを一定間隔で保存してくれる JotterPad にテキストエディタをしばらく戻してみることにした。

JotterPad はいつの間にかクラウドストレージとの同期機能は要サブスクリプションになったのね。クラウドストレージ側のファイルが多いと同期に非常に時間がかかって過去常用できなかった経験があるので、ローカル編集用のテキストエディタとして使い、同期は引き続き FolderSync Pro にしておこう。

[ ノート・日記はテキストファイルに ] [ Android アプリ ] [ ファイル同期 ]

[ 2月25日全て ]

2021年1月5日 (火)

最近の Unisonビルドする

双方向ファイル同期化ツール Unison File Synchronizer、 Mac で使っているのが Unison 2.48.6 の GUI 版なのだけれど、古いせいか macOS Catalina だと「Install command-line tool」 が機能しない(/usr/bin にインストールしようとしているからかな)。

macOS 上で text UI 版がちょっと使いたい & GUI 版も新しいのにしたいなと思ってビルドとかした。

現在の Unison のバージョン

2021年01月05日時点での安定版は 2.51.3

Homebrew で入れる

 $ brew install unison

で text UI 版の「unison version 2.51.3 (ocaml 4.10.0)」が入る。GUI 版は入らない。

macOS Catalina 上でビルドする

Unison 最新版のバイナリ配布が見当たらないのでビルドしてみる。 Xcode が必要。

 $ xcode-select --install

で入る Command Line Tools だけだと text UI 版の Unison しかビルドできないので App Store から Xcode をインストールした。

OCaml は Homebrew ので済ます。

 $ brew install ocaml

今日時点で入るのは OCaml 4.10.0 だ。次に Unison 2.51.3 をビルドする。

 $ cd ~/tmp
 $ curl -OL https://github.com/bcpierce00/unison/archive/v2.51.3.tar.gz
 $ tar zxvf v2.51.3.tar.gz
 $ cd unison-2.51.3
 $ make all

make だけだと text UI 版しかビルドされないので make all してみた。が残念 GUI 版はエラーで途中で止まった。今はうまくビルドできないのかもしれない。

諦めて make で text UI 版だけバイナリを得ることにした。 make 後

 $ ./src/unison -version

で実行できることを確認。 ./src/unison を適当なところにコピーしておく(これなら brew install unison で十分だった)。

FreeBSD 上でビルド

ローカルホストの Unison とリモートホストの Unison のバージョンが合っていないと同期できないのでリモートホスト側 (FreeBSD 9.1-RELEASE-p24) でも同じバージョンのものをビルドする。さくらのレンタルサーバ プレミアムで root 権限はないのでユーザー権限にて。

まずは OCaml。最近の OCaml は opam というのでインストールして使うのが流儀らしい。 opam をインストール。

 $ cd ~/tmp
 $ mkdir bin
 $ curl -OL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh
 $ BINDIR=$HOME/tmp/bin sh install.sh

リモートホストの環境に合ったプレビルドが無いとエラーが出て install.sh ではインストールできず。

OCaml の前に遡って opam のビルドをする。

 $ cd ~/tmp
 $ curl -OL https://github.com/ocaml/opam/archive/2.0.7.tar.gz
 $ tar zxvf 2.0.7
 $ cd opam-2.0.7
 $ gmake cold CONFIGURE_ARGS="--prefix ~/tmp/opam"
 $ gmake cold-install

ビルドできた。opam を初期化する。

 $ PATH=$HOME/tmp/opam/bin:$PATH
 $ opam init

gpatch が無いとエラーで止まった。 patch へのシンボリックリンクで gpatch を作ってイケるかなと思ったけど今度は別のエラーで止まる。うーん。 opam で OCaml をインストールするのは断念。

OCaml のドキュメントを読んだら今まで通り configure して make も普通にできるじゃない。

 $ curl -OL https://github.com/ocaml/ocaml/archive/4.10.0.tar.gz
 $ tar zxvf 4.10.0.tar.gz
 $ cd ocaml-4.10.0
 $ ./configure --prefix $HOME/tmp
 $ gmake
 $ gmake install

次に Unison 2.51.3 をビルドする。出来上がったバイナリは今使っている Unison 2.48.3 と併用できるように別のディレクトリへ。

 $ cd ~/tmp
 $ curl -OL https://github.com/bcpierce00/unison/archive/v2.51.3.tar.gz
 $ tar zxvf v2.51.3.tar.gz
 $ cd unison-2.51.3
 $ PATH=$PATH:$HOME/tmp/bin
 $ gmake
 $ ./unison -version
 $ mkdir -p $HOME/local/unison-2.51.3/bin
 $ cp -a src/unison $HOME/local/unison-2.51.3/bin

サイト

[ 1月5日全て ]

2021年1月11日 (月)

Google ドライブDropboxUnison で同期する

ノートテキストファイルは全文検索できるよう Google ドライブと同期しておきたい。それと同時に他の PC との同期のため Dropbox とも同期しておきたい。しかしセキュリティを考えてクラウド同期サービスは使いたくない。

Google の「バックアップと同期」アプリと Dropbox アプリの両方を動かしてそれぞれローカルフォルダと動機している MacBook Pro 上で、そのローカルフォルダ間のファイル同期を実行してみることにした。

使うのは普段リモートホストとの同期に使用している Unison File Synchronizer。最近になって repeat = watch というファイル更新をモニタリングするオプションを知ったので試してみる。

unison-fsmonitor を用意する

ファイル更新モニタリングで使う Unison 標準の unison-fsmonitor は macOS では使えないらしいので代替の https://github.com/autozimu/unison-fsmonitor をインストールする。

 $ brew install autozimu/homebrew-formulas/unison-fsmonitor

Unison のプロファイルを作成する

Unison の同期用のプロファイルは以下のような感じ。

 root = /Users/naney/Google ドライブ/folderA
 root = /Users/naney/Dropbox/folderA

 times = true

 repeat = watch
 silent = true

 logfile = /Users/naney/var/log/unison.log

(実際には path や ignore をもう少し指定している。)

同期する

repeat = watch と silent = true をいったんコメントアウトして

 $ unison <プロファイル名>

で手動同期し、期待通りの同期ができているか確認する。問題無ければ

 $ nohup unison <プロファイル名> &

で監視を開始する。

動作確認した感じでは

と安定して使える感じだ。

コンフリクトが起きた場合はスキップされたままになるので、たまに手動で Unison を実行して確認した方が良さそうではある。

[ ノート・日記はテキストファイルに ]

[ 1月11日全て ]

2021年3月3日 (水)

今日のさえずり: ひな祭りなのでから持たされた餅を食べます

[ 3月3日全て ]

2022年9月1日 (木)

Obsidian Sync サブスクリプションを更新

早期割引購入のうちにと去年 Obsidian Sync を購入してから1年経ったのでサブスクリプションを自動更新した。

$48/年。クレジットカード決済での換算レート142.860円で、支払い額は6,857円だ。去年の支払い額は5,410円。円安で支払額アップ。

MacBook ProAndroid デバイス (Pixel 4) で Obsidian vault を同期するのに便利に使っている。編集すると即同期されるので便利。

誤編集した時に同期のバージョン履歴を見て戻せるのも地味に便利だったりする。

フォルダを移動したり名前を変更したりするとその中のノートが削除 & 新規作成扱いで同期し直されるので、数が多いと結構待たなければならないというのが少し不便なぐらいかな。

自前でファイル同期を管理する手間を考えると価値ありなので、複数デバイスで Obsidian を使う限り使っていこうと思う。

[ サブスクリプションサービス ]

[ 9月1日全て ]

2022年10月19日 (水)

今日のさえずり: 微妙な 4:3 だ

  • 12:21 Pixel 7ドコモnanoUIMカードを差し替えて Xi から 5G に変更した。5G Sub-6 GHz バンド n79 未対応の Pixel 7 でどの程度 5G 通信できるエリアがあるのかな。
  • 12:22 オフィスの自席は 4G だ。
  • 14:43 MacBook Air (M1, 2020) を受け取ってきた。初 MacBook Air だ。
  • 19:25 新しくインストールした「パソコン版 Google ドライブ」のミラーリングの挙動がおかしいなと、一度アプリケーションを消して再インストールしたら、マイドライブの中身がほぼ消えて、超絶青ざめた。
  • 19:30 久しぶりに双方向ファイル同期でやらかした……。
  • 19:48 Google ドライブ側のゴミ箱に移動されていたものを復元することで、フォルダ構造や共有設定、リンクなどを維持したまま戻せたので事なきを得た。
  • 19:49 そして「パソコン版 Google ドライブ」側で全ダウンロードし直しになっているのをずっと眺めている。
  • 20:21 メイン PC のミラーリングし直しが完了したー。2台目の PC の方はしばらく終わらさそうなので、続きは明日にする。
  • 20:42 おっ 5G だ。
  • 21:40 おっ 5G だ。自宅も。
  • 22:25 あー Pixel 7 で 4:3 で撮影した写真、リサイズすると 1200x904 とか 2048x1542 とかになる微妙な 4:3 だ。
  • 25:15 2022年10月19日 (水) したこと - ドコモnanoUIMカードを受け取る - Pixel 7 の回線を Xi から 5G に変更する - MacBook Air (M1, 2020) を受け取る - Google ドライブの同期でトラブる
[ 10月19日全て ]

About

Naney Naneymx

Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。

※本サイトの内容は個人的見解であり所属組織とは関係ありません。

Process Time: 0.026759s / load averages: 0.19, 0.21, 0.20