Mesmo arquivo, tamanho de arquivo diferente

12

Fiz um backup do meu servidor FTP, com lftp e Transmit (aplicativo Mac). Está tudo bem, mas existe um tamanho diferente para arquivos 1-2, mas eles são idênticos.

Primeiro arquivo:

http://dl.dropbox.com/u/229956/deadcow_seo.php

Segundo arquivo:

http://dl.dropbox.com/u/229956/deadcow_seo.php_2.php

Qual é a diferença entre esses dois arquivos?

user66638
fonte
Tem certeza de que o problema não era apenas do tamanho relatado ? A Apple mudou a maneira como o Mac OS X relata o espaço de armazenamento há alguns anos para combinar com o método usado pelo disco rígido. Em vez de 1 MB = 1024 KB, eles usam 1 MB = 1000 KB. O outro tamanho pode ser relatado pelo host Linux usando a outra metodologia, para que os arquivos pareçam tamanhos diferentes. Não tenho certeza se isso se aplica ao seu caso, mas é interessante.
WebDevKev 18/01/2012
Não é isso. Basta olhar para os arquivos que ele forneceu como parte da pergunta ou a captura de tela do diff na minha resposta. Os arquivos não são grandes o suficiente para que isso faça diferença, a propósito, com 1800-1900 bytes cada.
Daniel Beck

Respostas:

25

deadcow_seo.phpusa finais de linha Unix ( LF), enquanto deadcow_seo.php_2.phpusa finais de linha DOS / Windows ( CR LF).

O FTP possui vários "modos de transferência", dos quais dois são de uso comum 1 - binário (também chamado de "imagem") e texto (ou "ASCII"). No modo "binário", o arquivo é transferido exatamente como é, byte a byte, enquanto "ASCII" faz com que o arquivo seja interpretado como consistindo de linhas de texto - as terminações de linha são convertidas no padrão de rede CR LFao enviar e convertido nas terminações de linha nativas da máquina ao receber.

Transferir arquivos como texto pode fazer algum sentido a princípio, mas só causa problemas mais tarde - na verdade, alguns servidores FTP o removeram completamente ou o tornam equivalente ao binário no lado do servidor. Além disso, a maioria dos editores de texto (exceto o Bloco de notas) pode ler e salvar arquivos nos formatos Windows e Unix.

Basta configurar seu cliente FTP para sempre usar o modo binário - o comando geralmente é binou mode i, enquanto os clientes gráficos podem ter uma caixa de seleção ou uma lista de tipos de arquivo em suas configurações.


1 Alguns modos antigos são "tenex" ( obsoleto por muito tempo , para arquivos baseados em páginas TENEX) e "compactados" (que parece ser definido como um simples algoritmo RLE). Servidores FTP recentes suportam o "modo z" para compactação zlib.

user1686
fonte
12

Você usou o modo de transferência de texto (ou ASCII), que substitui as quebras de linha durante a transferência. Isso geralmente é útil para quando você desenvolve scripts e programas no Windows e transfere os arquivos para Linux ou Mac OS X. Eles simplesmente não funcionam de outra forma, pois o sistema vê dados de lixo no final de cada linha.

Se o arquivo tiver uma única quebra de linha do Windows \r\n(ou CRLF) e você tiver baixado para o Linux ou Mac OS X, ele foi substituído por \n(ou LF), que é 1 byte a menos. O uso do FileMerge para comparar os arquivos confirma isso na barra de status:

insira a descrição da imagem aqui

Veja também esta resposta sobre interpretação de dados .


Você pode configurar quais tipos de arquivo são interpretados como texto nas preferências do Transmit:

insira a descrição da imagem aqui

Você pode remover todas as extensões de arquivo dessa lista e padronizar apenas as quebras de linha do Linux / Mac OS X, ou seja \n, mesmo quando estiver usando o Windows. A maioria dos editores é capaz de alterar o modo de final de linha.

Daniel Beck
fonte