手元に転送できる場合
rsync -auv remote_server:/path/to/data ~/local/data/dir
これがいつもできないから記事書いてるのだが、一応まとめておこう。
以下の場合に困難になる:
- データ量が膨大な場合
- 手元のストレージが不十分(ノートPC等)
- 通信速度、制限に問題がある場合
- データの更新が必要な場合
- rsyncした時点から更新されない
- cron, systemd.timer等で短い時間で更新すればいける?
つまり逆に以下の場合にはこの方法でも行けることになる:
- リアルタイムである必要がない
- データ量が少なく通信に問題がない
- 予めデータを転送しておくことができるならデータは手元のストレージに十分入る限りOK
仮想的に手元にあるように扱う
NFS/sshfs等でマウントしてローカルにあるように扱う。
sshfsはSSHの設定さえしてあれば使えるので便利。
sshfs remote_server:/path/to/data ~/local/data/dir
この方法だと(一人で使用している限り)データの同期が自動的に確保されており、
手元のストレージを圧迫しないので大規模なデータを高速なローカルLAN内で扱うのに便利となる。
ただし通信が安定して高速でない場合にはあまり有効ではない。
別サーバーで解析を実行する
なるべく通信量を減らすには、解析結果だけを通信すればいい。
例えばipython notebookをサーバーで起動して、そこで解析を行えば生データを通信せずにすむため、
通信量を減らすことができる。
また通信が不安定でも状態がサーバーに残るので再接続も容易となる。
ssh -L 10088:localhost:8888 remove_server
cd /path/to/data
ipython notebook
ipython notebookはデフォルトでlocahostからしか接続できない(?)のでSSHで転送しておく。
これで http://localhost:10088/ でアクセスできる。
難点としては複数のサーバーにデータがまたがっている場合に、
結合的な解析が実行できないことである。
これについては上の方法と組み合わせることで解決できる場合も多いだろう。