LoginSignup
5
8

More than 5 years have passed since last update.

Electronでローカルディレクトリとリモートディレクトリを同期する一番簡単な方法

Last updated at Posted at 2017-01-06

シンプルに考えるならrsyncでということになるのだろうけど、一般向けアプリを作ろうとしているときには少し注意が必要です。そうです、パスワードの壁。

基本的に公開鍵認証などを使用して楽ちんにローカルファイルとリモートファイルを同期するためのコマンドであるため、公開鍵認証を前提に語られる。

とはいえ、ユーザーに公開鍵認証を設定した上で使ってねってことにするとなるとハードルが上がる。コードを書く人ならともかく、そうでない人の方が多いというところですね。。

そんでもってnpmのrsyncとかgrunt-rsyncとかがひっかかってくるわけなんですけど、やっぱりrsync。。

いっそのこと、rsyncをハックしてやろうかと燃えかけそうになったものの、そんな暇はなさそうなので、さらに掘り下げて探したらいいのがありました。

スクリーンショット 2017-01-07 6.39.21.png

これね、いい感じです。

普通にftpでパスワード認証でディレクトリ同期ができました。
コードを見るとそのシンプルさがわかるかと思います。

インストール

npm i ftpsync --save

使い方

var ftpSync = require('ftpsync');

var options = {
  host: 'localhost',
  user: 'testuser',
  pass: 'password',
  local: '/your/local/directory',
  remote: 'directoryname'
};

ftpSync.settings = options;
ftpSync.run(function(err, result) {

  ... your code ...

});

※2017年1月7日時点:npmから飛べるGithubのアドレスにあるサンプルコードに誤字がありましたので注意してください。上記コードは修正版なのでそのまま動きます

クリックイベントとかで発火するとワンクリックでバックアップとれるみたいな感じですかね。

めだってないけどこれはいい。(自分のつくろうとしているアプリに関しては・・)

基本的にローカルディレクトリとリモートディレクトリで簡単に同期したいかつ、ローカルでnode使う場合ということでかなり限定的な用途であることは間違いないが、「npm rsync」とかでググり疲れて途方に暮れている方がいれば良いかもしれません。

参照

では。

2017/1/16 追記

sftp-sync-deploy↓の方がよさげ。Electronでつかっていたのですが、ftpsyncは再帰的処理で結構こけた。
これはけっこう安定していてよい。

sftp-sync-deploy
https://www.npmjs.com/package/sftp-sync-deploy

5
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
8