[使用ftplib的远程服务器中文件的md5值

问题描述 投票:0回答:1

一旦使用ftplib将文件传输到服务器,如何确定该文件的md5与本地服务器中的文件的md5?

from ftplib import FTP
import hashlib

ftp = FTP('server')
ftp.login('username','password')
ftp.cwd('path_to_upload')

file_to_upload = open(file,'rb') 
filename = os.path.basename(file)
ftp.storbinary('STOR ' + filename, file_to_upload)

local_file_hash = hashlib.md5(open(file, 'rb').read()).hexdigest()
server_file_hash = hashlib.md5(open(filename, 'rb').read()).hexdigest() #not sure how to achieve this 

if local_file_hash == server_file_hash:
     print("Successful transfer")
else:
     print("Failure transfer")
python ftp md5 file-transfer ftplib
1个回答
0
投票

首先,请确保您的远程服务器完全支持校验和计算。许多人没有。我相信甚至没有标准的FTP命令来计算远程文件的校验和。有很多建议,也有很多专有的解决方案。

最新的建议是:https://tools.ietf.org/html/draft-bryan-ftpext-hash-02

可用于计算校验和的一些命令是:XSHA1XSHA256XSHA512XMD5MD5XCRCHASH

您可以使用WinSCP FTP client进行测试。 WinSCP支持所有前面提到的命令。测试其checksum calculation functionchecksum scripting command。如果它们有效,请checksum并检查WinSCP对您的服务器使用的命令和语法。 (我是WinSCP的作者)]] >>

一旦找到,服务器将支持什么命令(如果有),您可以使用enable logging

FTP.voidcmd method
© www.soinside.com 2019 - 2024. All rights reserved.