利用できるまでは下記を参考にさせていただきました。
http://loumo.jp/wp/archive/20151004000041/
#保存した時に同期させたくない
Remote-ftpはローカルのファイルを保存すると設定してるリモート先に自動でアップロードしてくれます。
ですが自動でアップロードされてしまうと意図していないファイルを更新してしまうかもしれません。
それを回避する方法はパッケージの設定から
こうすることで自動アップロードを防ぐことができます。
#ローカルファイルのUploadとSync local -> remoteの違い
ローカルのファイルをリモート先に更新するための方法には Upload と Sync local -> remote と二つの方法があります。
これらの違いがいまいち分からなかったので簡単に調べてみました。
###Upload
こちらは単純に選択したものをアップロードするようです。
ローカルから反映するときは基本こちらを利用すれば良いようです。
###Sync local -> remote
問題はこちら
どうやらこの Sync local -> remote は文字通り同期することのようです。
ただしファイル単体で実行しても特に何も起こらず?
ディレクトリ上でのみ利用できるようです。
さて、同期といいましても
結局ローカルのファイルをリモート先に更新するのは変わらないじゃないか!
と思ってしまいますが、実は内部的には選択したディレクトリ内とリモート先とで差分を見ていて、
差があるものだけ更新しているようです。
下のイメージを見て頂ければ想像付きやすいと思います。
####1. 最初の状態
####2. Uploadした時
2.txtを修正してUploadを行いました。
#####結果
1.txt → 更新される
2.txt → 更新される
####3. Sync local -> remoteした時
同じように2.txtを修正してSync local -> remoteを行うと?
#####結果
1.txt → 更新されない
2.txt → 更新される
このように、Sync local -> remoteは差分をとり最低限のファイルを更新を行ってくれるので、大量のファイルを更新する時はとても重宝しますね。
と、思うじゃないですか?
実はこれには落とし穴があるんです。
というのもRemote-ftpでどうやって差分をとっているのだろうと思いRemote-ftpのソースを見ていると
L559 ~
// Upload only if not present on remote or size differ
if (!remote || remote.size != local.size) {
self.connector.put(local.name, function () {
return n();
});
} else {
おお・・・英語はできないですが言ってることはなんとなく分かります。
恐らく差分のとり方はサイズの差と書いてありますね。(適当)
というわけで、2.txtのサイズを変えないよう文字を1文字変えてSync local -> remote してみましたところ、
見事に更新されませんでした。
これは偶然ファイルのサイズが同じでうまく更新できないことも起きそうですね。
###結論
ちょっと時間掛かるとしても、基本的にUploadを使いましょう。