Diferencias de tamaño de archivo después de copiar un archivo a un servidor vía FTP

votos
35

He creado un PHP-script para actualizar un servidor web que está en vivo dentro de un directorio local. Estoy migrando el script a Python. Funciona bien en su mayor parte, pero después de un comando PUT, el tamaño del archivo parece cambiar. Por lo tanto, el tamaño del archivo es diferente del del archivo en el servidor.

Una vez que descargue nuevamente el archivo desde el servidor FTP, la única diferencia es la marca CR / LF. Esto me molesta porque el mismo script compara el tamaño de los archivos para actualizar. Además, en caso de que signifique algo, la secuencia de comandos funciona perfectamente en PHP vía ftp_put.

from ftplib import FTP

ftpserver = myserver
ftpuser = myuser
ftppass = mypwd

locfile =  g:/test/style.css
ftpfile =  /temp/style.css

try:
    ftp = FTP(ftpserver, ftpuser, ftppass)
except:
    exit (Cannot connect)

f = open (locfile, r)
try:
    ftp.delete (ftpfile)
except:
    pass

# ftp.sendcmd (TYPE I)
# ftp.storlines(STOR %s % ftpfile, f)
ftp.storbinary(STOR %s % ftpfile, f)
f.close()

ftp.dir (ftpfile)
ftp.quit()

¿Alguna sugerencia?

Publicado el 05/08/2008 a las 14:40
fuente por usuario
En otros idiomas...                            


3 respuestas

votos
15

¿Necesita abrir el locfile en binario usando rb?

f = open (locfile, "rb")
Respondida el 05/08/2008 a las 14:45
fuente por usuario

votos
3

Bueno, si va por debajo de las propiedades de su archivo en Windows o en un entorno * nix, notará dos tamaños. Uno es el tamaño del sector, y uno es el tamaño real. El tamaño del sector es la cantidad de sectores en bytes que se utilizan en su disco duro. Esto se debe a que dos archivos no pueden estar en el mismo sector con la mayoría de los sistemas de archivos modernos, de modo que si su archivo llena la mitad del sector, todo el sector se marca como lleno.

Por lo tanto, podría estar comparando el tamaño del archivo del sector con el tamaño del archivo real en el servidor FTP o viceversa.

Respondida el 05/08/2008 a las 14:45
fuente por usuario

votos
0

Los archivos pequeños ocupan todo un nodo en el sistema de archivos sea cual sea el tamaño.

Mi host tiende a informar todos los archivos pequeños como 4kb en ftp, pero en un shell da un tamaño preciso, por lo que podría ser una 'característica' común para los clientes de ftp.

Respondida el 05/08/2008 a las 16:59
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more