【工具应用】关于FileZilla传输文件时的Transfer type设定问题

2023-11-05

        在工作中经常会使用FileZilla软件(FTP工具)上传或者下载文件,最近遇到一个下载文件内容异常的问题,涉及到该软件中的Transfer type设置,于是进行了一些深入的学习,在此与君共享,以作前车之鉴。

问题概述

        在Win10环境下,使用FileZilla下载文件,其中主要包含两种后缀名:*.bin和*.ko。

        在Linux环境下,下载后的部分ko文件出现无法挂载的情况。

        使用Beyond Compare软件对比文件,如下图所示,异常文件的部分内容丢失。

        在网上找到以下两个帖子算是比较相关的:

【已解决】FileZilla传输(上传或下载)文件过程中,文件大小会变化

        该帖详细描述了作者在使用FileZilla时发现文件异常问题以及解决的过程。结论为,对于客户端和服务器之间的文件传输,若上传和下载使用的默认传输类型均为自动,那么对于文本文件,有可能会检测到服务器是Linux,而客户端是Windows,从而在传输过程中,进行各自对应的结束符转换,导致下载的文件大小发生变化,并且对应的文本文件在Notepad++打开时出现显示问题。

Important Notice: Do you use Filezilla? Avatars and Attachments lost?

        该帖作者遇到的问题是,使用Auto类型进行文件传输时,对于无后缀名的文件发生异常的情况。解决方法在于“Treat files without extension as ASCII file”的设定,文中同样提到了关于传输类型选择的问题,并且提供一些自己的想法和建议。

        虽然都跟我遇到的问题不一样,但是按照其中的建议,将传输类型修改为Binary之后,确实能够下载到正常的文件内容,因此只能先怀疑是FileZilla的Auto类型功能对应的判断逻辑中存在隐藏的Bug。

FTP的数据传输类型

        文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,它工作在应用层,即OSI模型的第七层(TCP 模型的第四层),使用TCP传输。客户在与服务器建立连接前,需要经过“三次握手”的过程,以保证连接和数据传输的可靠性。

        FTP 的目标是提高文件的共享性,它基于客户/服务器(C/S)模型而设计,在客户端与 FTP 服务器之间建立两个TCP连接,分别传输数据与命令。任何基于 FTP 的客户端软件都必须遵循 FTP 的工作原理,如下图所示。

        FTP标准(RFC 959)中所定义的数据类型有四种,即ASCII,Binary,EBCDIC和Iocal。但是,大多数情况下,只会用到ASCII和Binary两种,两者的区别主要是在不同操作系统中回车符与换行符的使用上,从而会导致文件大小和内容的差异出现。(详情可参阅FileZilla参考文档

        CR(Carriage Return)表示回车,'\r',ASCII码(0x0D)

        LF(Line Feed)表示换行,'\n',ASCII码(0x0A)

        同样对于下一行的表示,Dos和Windows使用(CR+LF);UNIX/Linux使用(LF);MAC OS使用(CR)。

        因此,同一个文本文件在不同的操作系统中需要进行相应的转换,才能够正常地显示和使用。

        在ASCII类型的传输中,FTP通常会自动地调整文件的内容,以便于把文件解释成本地计算机存储文本文件的相应格式,有可能会造成数据损坏。

        在二进制类型的传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。

FileZilla的传输类型(Transfer type)设置

        在FileZilla软件中,可以通过以下两种方式设置传输类型,可选类型项目包括:Auto,ASCII,Binary。

        1)Edit --> Settings --> Transfers --> FTP: File Types

        2)Transfer --> Transfer type

建议

  • 进行文件传输时,首先确认传输内容是否与传输类型设置相匹配。
  • 对于无法准确判断的文件,最好使用二进制(Binary)类型,以保证传输内容不做任何改动。
  • 全部使用压缩文件,则无需考虑默认传输类型为Auto的情况。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【工具应用】关于FileZilla传输文件时的Transfer type设定问题 的相关文章

  • 使用 PHP 分块传输 FTP 上传?

    是否可以使用 PHP 进行 FTP 上传 我有文件需要上传到另一台服务器 但我只能通过 FTP 访问该服务器 不幸的是 我无法增加该服务器上的超时时间 有可能做到这一点吗 基本上 如果有一种方法可以写入文件的一部分 然后附加下一部分 并重复
  • apache-commons ftp 检索多个文件

    我正在尝试使用 apache commons net FTP lib 从 FTP 服务器获取数据 如果目录中只有 1 个文件 该代码可以正常工作 但在我第二次调用retrieveFileStream 时始终返回 null 有什么想法吗 我编
  • Python sys.argv 超出范围,不明白为什么

    我有一个脚本 我已经使用了一段时间来轻松地将文件上传到我的服务器 它已经工作了很长一段时间 但我无法让它在我的新台式计算机上工作 代码很简单 import os path import sys import os from ftplib i
  • FtpWebRequest ListDirectory 不返回所有文件

    我正在尝试从包含大约 9000 个文件的 FTP 位置检索文件列表 但下面的代码总是只给出 97 个文件 在第 98 个文件的循环开始时 StreamReader Peek 变为 1 输出 test txt 始终仅包含前 97 个文件 就像
  • ftp 在 java 中无法正确下载文件?

    当我使用以下代码下载文件时 它只是将文件写入本地目的地 但文件大小均为零 有人能说为什么会发生这种情况以及如何解决它吗 import org apache commons net ftp FTPClient import org apach
  • 如何使用 php 检查 smtp 服务器是否正常工作

    我想使用 php 检查我的网站 smtp 是关闭还是开启 我尝试使用 fsockopen 连接到服务器上的端口 25 然后当 smtp 服务运行时它返回 true 这是使用 php 脚本测试 smtp 或 ftp 是否运行的最佳方法 您正在
  • 如何使用 C# 从 FTP 服务器获取一系列文件

    我陷入了这样一个境地 我将通配符参数与 FtpWebRequest 对象一起使用 很糟糕 FtpWebRequest reqFTP FtpWebRequest FtpWebRequest Create new Uri ftp ftpServ
  • 使用.net 2.0 连接到 FTP 服务器 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我希望连接到现有的 FTP 服务器 上传文件 等待服务器生成报告 然后将该报告下载回 VB NET 2
  • Java:从 FTP 服务器访问文件

    我有一个 FTP 服务器 里面有一堆文件夹和文件 我的程序需要访问该服务器 读取所有文件并显示它们的数据 出于开发目的 我一直在使用硬盘驱动器上 src 文件夹中的文件 但现在服务器已启动并运行 我需要将软件连接到它 基本上我想要做的是获取
  • Twisted、FTP 和“流式传输”大文件

    我正在尝试实现最能描述为 HTTP API 的 FTP 接口 的内容 本质上 有一个现有的 REST API 可用于管理站点的用户文件 并且我正在构建一个中介服务器 将该 API 重新公开为 FTP 服务器 因此 您可以使用 Filezil
  • C# FileSystemWatcher 和 FTP

    我通过文件系统观察器监视在 ftp 上删除的文件 然后移动到另一个目录 现在我触发文件系统观察程序的创建事件的复制 但显然在 ftp 的情况下 创建只是一个存根文件 数据会进入并在上传时填充文件直至完成 任何人对此都有一个优雅的解决方案 或
  • php ftp 检查文件夹是否存在总是返回创建文件夹错误

    有人可以告诉我这段代码中做错了什么吗 if id if is dir public html tem pasta path pics id echo pasta j existia destination file public html
  • PHP 通过 FTP 下载整个文件夹(递归)

    我目前有一个非常大的网站 大小约为 5GB 包含 60 000 个文件 当前主机并没有做太多事情来帮助我将网站转移到新主机 我的想法是在新主机上制作一个简单的脚本 通过 FTP 传输到旧主机并下载整个 public html 文件夹 递归地
  • 如何通过 Python 的请求使用 FTP

    是否可以使用requests与 FTP 站点交互的模块 requests获取 HTTP 页面非常方便 但当我尝试使用 FTP 站点时 我似乎遇到架构错误 我有什么遗漏的吗requests允许我执行 FTP 请求 还是不支持 对于像我一样得到
  • 使用 Python 连接从 FTP 检索文件

    我构建了这个简单的工具来暴力破解并连接到 ftp 服务器 import socket import ftplib from ftplib import FTP port 21 ip 192 168 1 108 file1 passwords
  • Filezilla - 需要将项目从服务器复制到桌面[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这可能非常简单明了 但我对 Filezilla 不太熟悉 不能犯错误 我需要将文件从服务器复制到桌面 而不实际将其从服务器中删除 实时站点
  • 通过 FTP over TLS/SSL 连接到未经认证的主机

    我从中获取文件的供应商正在从 FTP 更改为基于 SSL 的 FTP 我正在尝试更新我的代码net ftp to net ftptls 我需要连接的新主机未经认证 我的脚本报告此错误 主机名与服务器证书不匹配 供应商不会修复此问题 看着 u
  • 如何递归列出远程 FTP 的目录内容

    从远程 UNIX FTP 服务器下载文件后 您想要验证是否已正确下载所有文件 您至少会在 Windows 命令提示符中获得类似于 dir s 命令的信息 FTP 客户端在 Windows 上运行 遗憾的是这是为 Unix Linux 用户编
  • 使用 Python ftplib 获取远程 FTP 服务器中文件的 MD5 值

    使用 ftplib 将文件传输到服务器后 如何确定该文件与本地服务器中的文件的 MD5 from ftplib import FTP import hashlib ftp FTP server ftp login username pass
  • 触发“对等方重置连接”

    我想测试当发生 对等方重置连接 错误时我们的应用程序 嵌入式 ftp 服务器 中发生的日志记录 这个帖子 https stackoverflow com questions 1434451 connection reset by peer很

随机推荐