ASCII vs Binary vs Auto?

16

Estou transferindo arquivos entre servidores e comecei a notar que alguns deles estão sendo modificados para serem uma linha contínua longa, em vez de terem os retornos e as quebras de linha que tinham originalmente. Eu estou supondo que isso tem algo a ver com o tipo de transferência do meu cliente FTP que foi originalmente definido como "Auto", mas ostentando "Binário" e "ASCII" como opções adicionais.

Em suma, quais são as diferenças entre as formas que eu transfiro um arquivo de um servidor para outro, e essas diferenças serão capazes de modificar o arquivo da maneira que mencionei acima?

Transferindo FROM do Windows PARA do Linux.

    
por Sampson 08.02.2010 / 17:09

4 respostas

27

O modo de transferência "Binário" do FTP copia os arquivos exatamente, byte para byte. Simples e direto.

Ao trazer arquivos de texto entre diferentes sistemas operacionais, no entanto, isso pode não ser o que você deseja - sistemas operacionais diferentes usam códigos diferentes para representar as quebras de linha. O modo "ASCII" existe para este propósito: ele traduz automaticamente todos os finais de linha do formato do sistema de origem para o destino.

Não tenho certeza sobre "Auto", mas imagino que parece que a extensão do arquivo ou algo semelhante para decidir se é um arquivo de texto e tenta adivinhar o modo apropriado.

O modo que você quer depende exatamente do que você está fazendo com os arquivos ... se você está apenas copiando-os para fazer o backup, então você provavelmente vai querer copiar em modo binário para que eles sejam exatamente o mesmo quando você mais tarde restaurá-los para o servidor do Windows novamente. Se eles precisarem ser usados como arquivos de texto (talvez como arquivos de configuração para um programa multi-plataforma?) Em ambos os lados, você vai querer usar o modo ASCII para traduzi-los.

EDIT: Até onde eu sei, o FTP de arquivos do Windows para o Linux nunca deve resultar em quebras de linha ... no entanto , se você copiá-los em ASCII modo, e depois trazê-los de volta para o servidor Windows no modo binário, as terminações de linha no estilo Linux podem não ser reconhecidas na caixa do Windows. (O Bloco de Notas não os verá; o Wordpad irá; YMMV com outro software.)

(Hoje, tal conveniência - convertendo terminações de linha automaticamente - pode parecer estranho em um protocolo básico como o FTP. Quando o FTP foi inventado, no entanto, o envio de arquivos de texto era a norma, e um dos objetivos do protocolo era tornar isso o mais fácil possível.)

    
por 08.02.2010 / 19:39
3

Existem diferenças de fato, e elas estarão mexendo com suas transferências de arquivos em texto não-plano, a menos que você use a opção binária - geralmente sempre use if ok :)

    
por 08.02.2010 / 17:12
1

Qual sistema operacional você está transferindo arquivos de / para? Linux / Unix usam quebra de linha diferente do Windows. Então, se você gerar um arquivo em um computador Linux e abri-lo no Windows, pode parecer estranho. Existem utilitários para corrigir isso, embora na minha experiência, se você usar o Wordpad no Windows, em vez de notepad, você vai ficar bem.

    
por 08.02.2010 / 17:15
1

O Windows e o Unix possuem bytes diferentes no final das linhas (Windows a 0D 0A hexadecimal, Unix apenas 0A). Ao transferir arquivos no modo Binário, os bytes de um arquivo serão movidos de um computador inalterado. Isto é necessário para formatos binários (por exemplo, arquivos ZIP, Imagens, etc.), mas pode levar a problemas com arquivos de texto: por exemplo. notepad.exe no Windows exibirá um arquivo de texto com apenas quebras de linha de estilo unix como uma linha longa, um editor unix pode mostrar ^ M no final de cada linha ao exibir o estilo do Windows.

Portanto, tecnicamente para formatos binários (zip, jpg, png e outros intermináveis) você precisa configurar o FTP para BINARY, enquanto que para formatos de texto (HTML, PHP, CGI, etc.) você precisa configurá-lo como ASCII.

A maioria dos bons programas de FTP também tem uma configuração automática, o que significa que eles determinarão o modo (BINÁRIO ou ASCII), dependendo das extensões de arquivo conhecidas, por exemplo, ele irá alternar automaticamente a transferência para o arquivo JPG para BINARY e enviar / receber um arquivo PHP no modo ASCII.

    
por 08.02.2010 / 22:43