将文件复制到服务器víaFTP后的文件大小差异

punde 发布于 2018-02-09 ftp 最后更新 2018-02-09 01:11 925 浏览

我已经创建了一个PHP脚本来更新本地目录内的Web服务器。 我将脚本迁移到Python。它大部分工作正常,但在PUT命令后,文件的大小似乎改变。因此,文件的大小与服务器上文件的大小不同。 一旦我从FTP服务器再次下载文件,唯一的区别是CR/LF标记。这让我很恼火,因为相同的脚本正在比较要更新的文件的大小。此外,万一它意味着什么,该脚本完美的PHPvíaftp_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()
有什么建议么?
已邀请:

noptio

赞同来自:

你需要用rb以二进制的方式打开locfile吗?

f = open (locfile, "rb")

yet

赞同来自:

那么如果你在Windows或者* nix环境下使用你的文件属性,你会注意到两种尺寸。一个是扇区大小,一个是实际大小。扇区大小是在硬盘上用尽的扇区数。这是因为两个文件不能与大多数现代文件系统处于同一个扇区,所以如果你的文件占满扇区的一半,那么整个扇区就被标记为已满。 因此,您可能会将扇区文件大小与FTP服务器上的实际文件大小进行比较,反之亦然。

yeum

赞同来自:

无论大小如何,小文件占用文件系统上的整个节点。 我的主机倾向于将所有小文件报告为4kb的ftp文件,但是在一个shell中提供了一个精确的大小,所以它可能是ftp客户端常见的一个“特性”。