php - Différences de taille de fichier après avoir copié un fichier sur un serveur via FTP

Translate

J'ai créé un script PHP pour mettre à jour un serveur Web qui se trouve dans un répertoire local. Je migre le script vers Python. Cela fonctionne bien pour la plupart, mais après une commande PUT, la taille du fichier semble changer. Ainsi, la taille du fichier est différente de celle du fichier sur le serveur.

Une fois que j'ai téléchargé à nouveau le fichier à partir du serveur FTP, la seule différence est la marque CR / LF. Cela m'ennuie car le même script compare la taille des fichiers à mettre à jour. De plus, au cas où cela voudrait dire quelque chose, le script fonctionne parfaitement en PHP via 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()

Aucune suggestion?

This question and all comments follow the "Attribution Required."

Toutes les réponses

Translate

Avez-vous besoin d'ouvrir le fichier loc en binaire en utilisantrb?

f = open (locfile, "rb")
La source
Translate

Eh bien, si vous passez sous les propriétés de votre fichier sous Windows ou dans un environnement * nix, vous remarquerez deux tailles. L'un est la taille du secteur et l'autre est la taille réelle. La taille du secteur est le nombre de secteurs en octets qui sont utilisés sur votre disque dur. En effet, deux fichiers ne peuvent pas être dans le même secteur avec la plupart des systèmes de fichiers modernes, donc si votre fichier remplit la moitié du secteur, tout le secteur est marqué comme rempli.

Vous comparez donc peut-être la taille du fichier de secteur à la taille réelle du fichier sur le serveur FTP ou vice versa.

La source
Translate

Les petits fichiers occupent un nœud entier sur le système de fichiers, quelle que soit sa taille.

Mon hôte a tendance à rapporter tous les petits fichiers comme 4 ko en ftp, mais dans un shell donne une taille précise, donc cela pourrait être une «fonctionnalité» commune aux clients ftp.

La source