ASCII vs Binário vs Auto?

16

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

Em resumo, quais são as diferenças entre as formas de transferência de um arquivo de um servidor para outro e essas diferenças poderão modificar o arquivo da maneira mencionada acima?

Transferir DE do Windows PARA Linux.

Sampson
fonte

Respostas:

27

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

Ao trazer arquivos de texto entre diferentes sistemas operacionais, porém, isso pode não ser o que você deseja - sistemas operacionais diferentes usam códigos diferentes para representar quebras de linha. O modo "ASCII" existe para esse fim: converte automaticamente todas as terminações de linha do formato do sistema de origem para o de destino.

Não tenho certeza sobre "Automático", mas imagino que a extensão do arquivo ou algo semelhante decida se é um arquivo de texto e tente adivinhar o modo apropriado.

O modo que você deseja depende exatamente do que está fazendo com os arquivos ... se você apenas os estiver copiando para fazer backup deles, provavelmente desejará copiar no modo binário para que sejam exatamente iguais quando depois você os restaura no servidor Windows novamente. Se eles precisarem ser usados ​​como arquivos de texto (talvez como arquivos de configuração para um programa de plataforma cruzada?) Dos dois lados, convém usar o modo ASCII para convertê-los.

EDIT: Até onde eu sei, os arquivos FTP do Windows para o Linux nunca devem resultar no desaparecimento de quebras de linha ... no entanto , se você copiá-los no modo ASCII e trazê-los de volta ao servidor Windows no modo binário, o Linux finais de linha no estilo podem não ser reconhecidos na caixa do Windows. (O bloco de notas não os verá; o Wordpad irá; YMMV com outro software.)

(Hoje, essa conveniência - converter as terminações de linha automaticamente - pode parecer estranha em um protocolo básico como o FTP. Quando o FTP foi inventado, porém, o envio de arquivos de texto era a norma, e um dos objetivos do protocolo era isso o mais fácil possível.)

Josh
fonte
Ótima descrição de ambos. Eu me sinto muito menos confuso agora.
Sampson
obrigado Eu nunca understadnd o ponto de que modo ASCII, e agora com certeza vou usar apenas o modo binário
kiwy
3

De fato, existem diferenças e elas interferem nas transferências de arquivos sem texto sem formatação, a menos que você use a opção binária - geralmente sempre use se estiver ok :)

Chopper3
fonte
Não há como restaurá-los? Ou eu simplesmente preciso transferir com o Binary agora para evitar isso novamente no futuro?
Sampson
Tenho certeza de que você pode retirá-los, mas isso pode levar um longo tempo. Eu ficaria fortemente tentado a retransmiti-los.
Chopper3
1

Para qual sistema operacional você está transferindo arquivos de / para? O Linux / Unix usa quebras de linha diferentes do que o Windows. Portanto, se você gerar um arquivo em um computador Linux e o abrir no Windows, poderá parecer estranho. Existem utilitários para corrigir isso, embora, na minha experiência, se você usar o wordpad no Windows, em vez do bloco de notas, você ficará bem.

einstiien
fonte
Estou criando isso no Windows em um IDE e depois movendo-os para o servidor linux. Posteriormente, eu os abro no servidor linux para encontrar a longa linha contínua.
Sampson
Tente executar dos2unixe ver se isso corrige as linhas
einstiien
1

Windows e Unix têm bytes diferentes no final das linhas (Windows é um hex 0D 0A, Unix é apenas um 0A). Ao transferir arquivos no modo binário, os bytes de um arquivo serão movidos de um computador inalterado. Isso é necessário para formatos binários (por exemplo, arquivos ZIP, imagens etc.), mas pode causar problemas com arquivos de texto: por exemplo, o notepad.exe no Windows exibirá um arquivo de texto com apenas quebras de linha no estilo unix como uma linha longa, um editor unix pode exibir ^ M no final de cada linha ao visualizar o estilo do Windows.

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

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

Yamodax
fonte