Mismo archivo, diferente tamaño de archivo

12

Hice una copia de seguridad desde mi servidor FTP, con lftp y Transmit (aplicación Mac). Todo está bien, pero hay un tamaño de archivo diferente para 1-2 archivos, pero son idénticos.

Primer archivo:

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

Segundo archivo:

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

¿Cuál es la diferencia entre estos dos archivos?

usuario66638
fuente
¿Estás seguro de que el problema no era solo el tamaño informado ? Apple cambió la forma en que Mac OS X informa el espacio de almacenamiento hace un par de años para que coincida con el método que utilizan los fabricantes de discos duros. En lugar de 1 MB = 1024 KB, usan 1 MB = 1000 KB. El otro host de Linux puede informar el otro tamaño utilizando la otra metodología, por lo que los archivos parecen tener diferentes tamaños. No estoy seguro si esto se aplica en su caso, pero no obstante es interesante.
WebDevKev
No es eso. Solo mire los archivos que proporcionó como parte de la pregunta, o la captura de pantalla de diferencias en mi respuesta. Los archivos no son lo suficientemente grandes como para que eso marque la diferencia, por cierto, en 1800-1900 bytes cada uno.
Daniel Beck

Respuestas:

25

deadcow_seo.phpusa terminaciones de línea Unix ( LF), mientras que deadcow_seo.php_2.phpusa terminaciones de línea DOS / Windows ( CR LF).

FTP tiene varios "modos de transferencia", de los cuales dos son de uso común 1 : binario (también llamado "imagen") y texto (o "ASCII"). En modo "binario", el archivo se transfiere exactamente como es, byte a byte, mientras que "ASCII" hace que el archivo se interprete como una línea de texto: las terminaciones de línea se convierten al estándar de red CR LFal enviar, y convertido a las terminaciones de línea nativas de la máquina al recibir.

La transferencia de archivos como texto puede tener sentido al principio, pero solo causa problemas más tarde; de ​​hecho, algunos servidores FTP lo han eliminado por completo o lo hacen equivalente a binario en el lado del servidor. Además, la mayoría de los editores de texto (excluyendo el Bloc de notas) pueden leer y guardar archivos en formatos Windows y Unix.

Simplemente configure su cliente FTP para usar siempre el modo binario: el comando suele ser bino mode i, mientras que los clientes gráficos pueden tener una casilla de verificación o una lista de tipos de archivos en su configuración.


1 Algunos modos antiguos son "tenex" ( obsoleto durante mucho tiempo , para archivos basados ​​en páginas TENEX) y "comprimido" (que parece estar definido como un algoritmo RLE simple). Los servidores FTP recientes admiten el "modo z" para la compresión zlib.

usuario1686
fuente
12

Usó el modo de transferencia de texto (o ASCII), que reemplaza los saltos de línea durante la transferencia. Esto a menudo es útil cuando desarrolla scripts y programas en Windows y transfiere los archivos a Linux o Mac OS X. Simplemente no funcionarán de otra manera, ya que el sistema ve datos basura al final de cada línea.

Si el archivo tiene un solo salto de línea de Windows \r\n(o CRLF) y lo descargó a Linux o Mac OS X, se reemplazó por \n(o LF), que es 1 byte menos. El uso de FileMerge para comparar los archivos confirma esto en la barra de estado:

ingrese la descripción de la imagen aquí

También vea esta respuesta sobre interpretación de datos .


Puede configurar qué tipos de archivos se interpretan como texto en las preferencias de Transmitir:

ingrese la descripción de la imagen aquí

Puede eliminar todas las extensiones de archivo de esta lista y simplemente estandarizar en saltos de línea de Linux / Mac OS X, es decir \n, incluso cuando usa Windows. La mayoría de los editores pueden cambiar el modo de finalización de línea.

Daniel Beck
fuente