
Perl を使用して FTP サーバーにファイルを送信しようとしています。プログラムはほぼ正常に動作しますが、ファイル サイズが変更されました (リモート ホストのファイル サイズがローカルホストと異なります)。確認した後、これは Perl スクリプトのエラーではなく、FTP クライアントのエラーであることがわかりました。
例えば、私はコンピュータを持っています(あ) Cent-Os 5 を実行しています。wav ファイルを送信したいです (802_20130511_111637.wav- 207,084バイト)をリモートコンピュータ(B)。(B)のFTPサーバーはFile Zillar 0.9.41です。
私は(A)コンソールから以下のコマンドを実行しました(安全のため、ホスト名とユーザー名を変更しました):
[root@abcxyz 1234]# ls -l
total 464
-rw------- 1 asterisk asterisk 99564 May 8 10:39 0913255236_20130508103929.wav
-rw------- 1 asterisk asterisk 127084 May 7 22:42 0918272810_20130507224217.wav
-rwxrwxrwx 1 asterisk asterisk 16488 May 7 16:45 1234.wav
-rw-r--r-- 1 asterisk asterisk 207084 May 11 11:17 802_20130511_111637.wav
[root@abcxyz 1234]# ftp
ftp> open xxx.xxx.xxx.xxx
Connected to xxx.xxx.xxx.xxx.
220 FileZilla Server version 0.9.41 beta
502 GSSAPI authentication not implemented
504 Auth type not supported
KERBEROS_V4 rejected as an authentication type
Name (xxx.xxx.xxx.xxx:root): my_user_name
331 Password required for my_user_name
Password:
230 Logged on
Remote system type is UNIX.
ftp> put 802_20130511_111637.wav
local: 802_20130511_111637.wav remote: 802_20130511_111637.wav
227 Entering Passive Mode (xxx,xxx,xxx,xxx,195,159)
150 Connection accepted
226 Transfer OK
207503 bytes sent in 0.029 seconds (7.1e+03 Kbytes/s)
ftp>
ご覧のとおり、ファイル サイズ (6 行目) は 207084 バイトです。ただし、サイズ (ほぼ最後の行) は 207503 バイトです。
そうです、FTP で送信した後、ファイル サイズが変更されました。上記の 2 つのファイル (1 つは (A) から、もう 1 つは (B) から) を別の PC (Windows を実行) にダウンロードしました。(A) からのファイルは正常に再生できますが、(B) からのファイルは再生できません。
何か間違っていたら訂正してください。ネイティブ FTP クライアントを使用しているのに、ファイル サイズが変わったのはなぜですか?
答え1
コマンド (またはクライアントが使用するもの)を発行したことがないbin
ため、行末の変換を実行しています。