最近工作中需要构造些数据(windows),然后上传到服务器(linux)上运行,本来在本地已经设置后用linux的newLine符号(\n)但传到服务器上newLine符却变成了(\r\n),虽然可以用dos2unix,但为什么会把换行符改变呢?找了些资料,发现这和FTP的传输模式有关,如下:

FTP有两种传输模式:BINARY和ASCII

BINARY模式

复制时保留文件的位序,逐位拷贝原始文件而不管内容——即使对目的机器操作系统来说该文件是没意义的。

ASCII模式

复制时候会进行调整,主要体现为对不同操作系统的回车/换行/结束符等进行转译。

比如,回车符号在Unix下是\n(0A),Windows下是\r\n(0D0A),Mac下是\r(0D)。当在一个Windows操作系统上用 ASCII方式从Unix服务器上下载文件时——无论是文本文件还是二进制文件——都会进行检测和转换:每检测到一个0A,则认为是回车符号,自动插入 0D形成Windows下的回车符。显然,如果下载的是文本文件,这种转换是很有用的——我们能在Windows下看到分行后的文本,否则我们看到的是中间夹杂着小黑方块的不换行的一堆文字;然而如果下载的是二进制文件(比如exe或rar),这种转换无异于画蛇添足,破坏了整个文件。(PS:我的FlashFXP设置的是默认,估计就是按文件的特征信息来判断是文本还是二进制,但它向linux传却用了windows的newLine符,可能是个bug吧)

因此,如果服务器和客户端的OS不相同,对于ASCII文件(文本文件)采用ASCII模式下载,对于非文本文件采用BINARY模式下载;如果两端OS相同,两种方式具有同样效果。

如何解决:

有些经常游走在两个OS之间的人员采取的习惯做法是:将在Windows下编辑的文件转换成Unix模式,而FTP默认用BINARY模式传输。(PS:最终我也选择这种模式,好处两点,1newLine符我控制,清晰;2不用ascii方式的转换,速度也快)。

FlashFXP设置:我的FlashFXP版本是3.4.0,选项 -> 参数设置 -> 传输 -> 传输模式选择“二进制(图像)”

防止被ftp server踢的设置:选项 -> 参数设置 -> 连接 -> 防止被踢 -> 勾选"发送保持活动命令"

转自:

linux下ftp二进制传输,FTP的两种传输模式:BINARY和ASCII相关推荐

  1. FTP 两种传输模式 Binary 和 ASCII 的区别

    文章目录 区别 原理分析 建议 常规作法 习惯作法 区别 ASCII 模式和 Binary 模式的区别是换行符的处理,Binary 模式不对数据进行任何处理,ASCII 模式将换行符转换为目标主机操作 ...

  2. c语言 linux系统 delay,Linux下实现秒级定时任务的两种方案

    Linux下实现秒级定时任务的两种方案(Crontab 每秒运行): 第一种方案,当然是写一个后台运行的脚本一直循环,然后每次循环sleep一段时间. while true ;do command s ...

  3. linux7inittab文件不存在,Linux下修复inittab文件丢失的两种方法

    /etc/inittab文件是linux系统初始化配置文件,该文件出现错误或者丢失时,可能导致无法启动系统,启动系统时会提示出"INIT No inittab file fonud" ...

  4. Linux终端嵌套桌面里,linux下终端分屏使用的两种方法(screen和tmux)

    本文主要介绍两种终端分屏工具:screen和tmux,分享出来供大家参考学习,下面来看看详细的介绍: 一.使用screen分屏(只能上下分屏,不能左右分屏) (1)安装工具 在ubuntu系统中使用s ...

  5. linux终端下如何分屏,linux下终端分屏使用的两种方法(screen和tmux)

    本文主要介绍两种终端分屏工具:screen和tmux,分享出来供大家参考学习,下面来看看详细的介绍: 一.使用screen分屏(只能上下分屏,不能左右分屏) (1)安装工具 在ubuntu系统中使用s ...

  6. 服务器系统 分屏,linux下终端分屏使用的两种方法(screen和tmux)

    本文主要介绍两种终端分屏工具:screen和tmux,分享出来供大家参考学习,下面来看看详细的介绍: 一.使用screen分屏(只能上下分屏,不能左右分屏) (1)安装工具 在ubuntu系统中使用s ...

  7. linux下设置密码复杂度限制的两种方法

    注意:root用户并不会受这些限制,它可以设置任意的密码. 在linux,设置密码复杂度的方法有几个 1. 一个是在/etc/login.defs文件,里面几个选项 PASS_MAX_DAYS 90 ...

  8. linux下查看本机IP的两种方法

    1)ifconfig命令 输出如下: [root@topgun /home/cly] # ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTI ...

  9. 简述使用ftp进行文件传输时的两种登录方式?它们的区别是什么?常用的ftp文件传输命令是什么?

    简述使用ftp进行文件传输时的两种登录方式?它们的区别是什么?常用的ftp文件传输命令是什么? 参考答案: (1)ftp有两种登录方式:匿名登录和授权登录.使用匿名登录时,用户名为:anonymous ...

  10. linux登陆ftp报错425,linux下命令行连接FTP是遇到的错误(425 Failed to establish connection)...

    linux下命令行连接FTP是遇到的错误(425 Failed to establish connection) 首先FTP的运行模式有主动模式和被动模式两种 然后笔者在工作中搭建了ftp,但是没有开 ...

最新文章

  1. [java] javax.el.PropertyNotFoundException: Property 'id' not found on type bean.Student
  2. tcpdump抓包分析具体解释
  3. Python:使用SWIG编写C语言扩展
  4. 我也发软件开发团队的思考(侧重点是人员)
  5. 设计师应该尊重技术的限制
  6. 从阿里、微软、AWS财报看评云计算发展
  7. 从点击一个链接到浏览器显示页面,这个过程中发生了什么?
  8. 网络安全:9次实验带你学会网安
  9. 论文写作流程图软件_论文中的流程图一般都用什么软件?
  10. PostgreSQL 修改数据库用户的密码
  11. MATLAB 使用 loglog semilogy 不显示对数坐标
  12. Matlab利用textread或者textscan读取格式化txt文件
  13. 关键词文章生成器-智能关键词文章生成器
  14. 【python初学者日记】输入年份:判断是否闰年:闰年:yyyy是闰年,这年有366天;yyyy是平年,这年有365天
  15. IMSI前5位对应移动运营商名称的列表
  16. java吸血鬼_4位吸血鬼数字的java实现思路与实例讲解
  17. darknet 框架 安装编译
  18. 来扯点ionic3[3] 页面的生命周期事件,也就是凡间所说的钩子
  19. JVM--藤原豆腐店自用
  20. Ext js 下拉框模糊匹配查询,并支持反复输入检索

热门文章

  1. ajax页面无刷新分页,JS+Ajax+Jquery实现页面无刷新分页以及分组 超强的实现
  2. JavaSE实战案例贪吃蛇小游戏
  3. 如何实现手动指定AOP实现JDK代理模式到CGLIB的更改?
  4. 不支持给定路径的格式_【国考那些事】2021国/省考,申论答题格式,建议收藏!...
  5. java 显示 装配_【spring】---spring的装配Bean方式
  6. 实现一个简易的线程池。
  7. javascript的caller,callee,call,apply
  8. Cookie机制小记
  9. 一文读懂如何用深度学习实现网络安全
  10. 以太坊智能合约gas如何估计?