php - subir - Diferencias de tamaño de archivo después de copiar un archivo a un servidor vía FTP
subir archivos a wordpress por ftp (3)
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?
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.
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.
¿Necesita abrir el locfile en binario usando rb
?
f = open (locfile, "rb")