Help us understand the problem. What is going on with this article?

Atom Package「Remote-ftp」のローカルでのあれこれ

More than 3 years have passed since last update.

利用できるまでは下記を参考にさせていただきました。
http://loumo.jp/wp/archive/20151004000041/

保存した時に同期させたくない

Remote-ftpはローカルのファイルを保存すると設定してるリモート先に自動でアップロードしてくれます。
ですが自動でアップロードされてしまうと意図していないファイルを更新してしまうかもしれません。

それを回避する方法はパッケージの設定から

Auto Upload On Save → never
remote-ftp1.png

こうすることで自動アップロードを防ぐことができます。

ローカルファイルのUploadとSync local -> remoteの違い

ローカルのファイルをリモート先に更新するための方法には Upload と Sync local -> remote と二つの方法があります。
remote-ftp2.png

これらの違いがいまいち分からなかったので簡単に調べてみました。

Upload

こちらは単純に選択したものをアップロードするようです。
ローカルから反映するときは基本こちらを利用すれば良いようです。

Sync local -> remote

問題はこちら
どうやらこの Sync local -> remote は文字通り同期することのようです。
ただしファイル単体で実行しても特に何も起こらず?
ディレクトリ上でのみ利用できるようです。

さて、同期といいましても
結局ローカルのファイルをリモート先に更新するのは変わらないじゃないか!
と思ってしまいますが、実は内部的には選択したディレクトリ内とリモート先とで差分を見ていて、
差があるものだけ更新しているようです。

下のイメージを見て頂ければ想像付きやすいと思います。

1. 最初の状態

6.png

remote-ftp3.png
タイムスタンプは同じ時間です。

2. Uploadした時

2.txtを修正してUploadを行いました。
7.png

remote-ftp4.png

結果

1.txt → 更新される
2.txt → 更新される

3. Sync local -> remoteした時

同じように2.txtを修正してSync local -> remoteを行うと?
8.png

remote-ftp5.png

結果

1.txt → 更新されない
2.txt → 更新される

このように、Sync local -> remoteは差分をとり最低限のファイルを更新を行ってくれるので、大量のファイルを更新する時はとても重宝しますね。

と、思うじゃないですか?
実はこれには落とし穴があるんです。

というのもRemote-ftpでどうやって差分をとっているのだろうと思いRemote-ftpのソースを見ていると

Remote-FTP/lib/client.js
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を使いましょう。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away