
Estou tentando enviar um arquivo para um servidor FTP usando Perl. O programa funciona quase bem, mas o tamanho do arquivo mudou (o tamanho do arquivo no host remoto é diferente do localhost). Depois de verificar, percebo que: não é o erro do meu script Perl, mas o erro do cliente FTP.
Digamos: eu tenho um computador (A) executando Cent-Os 5. Quero enviar um arquivo wav (802_20130511_111637.wav- 207.084 bytes) para um computador remoto (B). O servidor FTP em (B) é o arquivo Zillar 0.9.41.
Eu fiz os seguintes comandos do (A) console (por segurança, mudei o nome do host e o nome do usuário):
[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>
Como você pode ver. O tamanho do arquivo (na linha 6) é 207.084 bytes. Mas o tamanho (quase na última linha) é 207.503 bytes.
Exatamente, o tamanho do arquivo mudou após o envio por FTP. Baixei dois arquivos acima (um de (A) e outro de (B)) para outro PC (executando Windows). Aquele que vem de (A) pode ser bem tocado, mas aquele que vem de (B) não.
Por favor, corrija-me se eu fiz algo errado. Por que o tamanho do arquivo mudou embora eu tenha usado o cliente FTP nativo?
Responder1
Você nunca emitiu o bin
comando (ou o que quer que seu cliente use), então ele está realizando uma tradução de final de linha.