FTPやSFTPでの転送モードの話。
ついこの前、WinSCPを利用していた隣の席の人が転送モードを選んでいて、
「SFTPには転送モードはないはずなのに、転送モードを選んでいる!?」
と疑問に思ったので確認してまとめた。
FTPのバイナリーモードとアスキーモード
入社しはじめの頃、それまでSFTPしかほとんど使ったことなかったので、
先輩に「FTPではバイナリーモードを使って…」と言われて、意味が理解できなかったときがあったのを思い出す。
FTPにはファイル転送モードが2つあって、ちゃんと理解していないと思わぬところで痛い目にあう。
- バイナリーモード:ファイルの改行コードを変換せず転送する。
- アスキーモード:OS側で異なる改行コードを自動的に修正して転送する。
FTPでは標準ではアスキーモードのため、なにも考えずにファイルを送るとファイルが壊れてしまったりする。
昔にミスしたのはWindowsからLinuxへtar.gzファイルをアスキーモードで送って、解凍したらファイルが壊れていたが、
それに気付かず壊れたファイルをサーバへ設置してしまったとか。
SFTPには転送モードはあるのか?
SFTPを普段から使ってる人は転送モードなんて気にしたことあまりないと思う。
FTPでは気にしなければいけない転送モード、SFTPでは気にしなくていいのだろうか?
結論から言うと、SFTPには転送モードはないので、気にする必要はない。
SFTPでは、FTPでいうバイナリーモードでファイル転送をするようだ。
sftpコマンドのマニュアルにも特に転送モードについては記述がないのがわかる。
http://www.unixuser.org/~euske/doc/openssh/jman/sftp.html
SFTPでも転送モードを選択できる場合がある!?
ここで、SFTPにも転送モードはあるぞ!?と疑問を思った人もいるかもしれない。
確かにWinSCPなどファイル転送ソフトを使っていると転送モードを選ぶことができる場合もある。
しかし、勘違いしてはいけないのが、
転送モードを選ぶことができるのはSFTPの機能ではなくてファイル転送ソフトの機能であるということだ。
まとめ
ファイル転送でよく使われるFTPやSFTP。
それぞれに違いはあるし、それを利用するソフトウェアによっても違いがある。
何が何を行っているか把握し、思わぬミスを減らしましょう。