SCPを使用してファイルを転送するときに使用されるデフォルトモード(ASCIIまたはFTPのようなバイナリ)を知りたいです。
SCPにファイルモードの概念はありますか?それはどのように機能しますか?
FTPのファイル転送モードは、行末が異なるさまざまなオペレーティングシステムの問題を解決するために使用されます。テキストファイルをUnixマシンからWindowsマシンに転送する場合、行末を修正する必要があります。つまり、ファイル内のすべての場所でLFをCRLFに置き換える必要があります。 。ファイルを他の方向に転送する場合は、逆の操作を行う必要があります。
ただし、バイナリファイルを転送する場合は、ファイルをそのままにしておく必要があります。これは、バイナリファイル内のLFは実際には行末ではないためです。そのため、FTPではASCIIモードとバイナリモードが導入されました。
特にデフォルトモードがASCIIモードであるため、これは依然として問題のある解決策です。したがって、モードの切り替えを忘れた場合、バイナリファイルが破損し、機能しなくなる可能性があります。異なるモードは、それらが解決する問題よりも多くの問題を引き起こすと考えられています。
そのため、SCPは単にこの機能を提供せず、常にファイルをそのままにします。行末の修正は、dos2unix
やunix2dos
などのツールを使用するユーザーに任されています。
本質的に、すべてのファイルは「バイナリ」モードで転送されます。つまり、行末は変更されません。
私の知識によると、scpのモードはありません。詳細については、この man ページを参照してください。
SCPを使用してファイルを転送するときに使用されるデフォルトモード(ASCIIまたはFTPのようなバイナリ)を知りたいです。
残念ながら、私の経験では、実行しているOSでのscpの実装に少し依存します。たとえば、linux scpはファイルに変更を加えていないようですが、つまり、EOL文字はWindowsとlinuxの間で変換されませんが、これはz/OS(sic)では当てはまりません。 IBMメインフレームでは、scpされているすべてのファイルは、scpアプリケーション自体によってASCIIからEBCDIC文字エンコードに変換されているようです。
ただし、sftpはデフォルトでnot文字変換を行うように見えるため、ファイルはネイティブASCIIで渡されます。