シンプルに考えるならrsyncでということになるのだろうけど、一般向けアプリを作ろうとしているときには少し注意が必要です。そうです、パスワードの壁。
基本的に公開鍵認証などを使用して楽ちんにローカルファイルとリモートファイルを同期するためのコマンドであるため、公開鍵認証を前提に語られる。
とはいえ、ユーザーに公開鍵認証を設定した上で使ってねってことにするとなるとハードルが上がる。コードを書く人ならともかく、そうでない人の方が多いというところですね。。
そんでもってnpmのrsyncとかgrunt-rsyncとかがひっかかってくるわけなんですけど、やっぱりrsync。。
いっそのこと、rsyncをハックしてやろうかと燃えかけそうになったものの、そんな暇はなさそうなので、さらに掘り下げて探したらいいのがありました。
これね、いい感じです。
普通に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