Linux Ftp上传文件变更(MD5值变更)
2015-11-24 13:41
549 查看
最近遇到一个很棘手的问题. 问题很简单:
一般情况下使用ftp上传就是这个样子:
如下脚本:
这是文本文件内容. vim会默认在文件末尾追加\n
将写好的文件传到ftp服务器:
结果传上去之后发现文本内容跟本地内容不匹配. 肉眼看完了都没看到是什么缘故. 如下:
果断对比文本内容:
本地文件:
惊讶的发现ftp客户端在上传的时候往文本后面添加了个 \r ! 何其的可耻.
man 了一下. 发现了 ftp的传输模式. 区分ASCII 和 binary. 一个是按文本读取, 一个是按二进制读取. 文本读取会判定本地与远程的服务器类型从而默认增添数据.
因此修改命令即可:
可参考这篇博文:
http://7905648.blog.51cto.com/7895648/1298447
一般情况下使用ftp上传就是这个样子:
如下脚本:
$ vim copy.sh #! /bin/bash remote_path=远程地址 if [ -f $1 ] then ftp -i -n <<UPLOAD open ftp服务器 user 账户名 密码 put $1 $remote_path$1 quit UPLOAD fi
这是文本文件内容. vim会默认在文件末尾追加\n
$ vim xxx 123!$ hello!$ 456$
将写好的文件传到ftp服务器:
$ ./copy.sh xxx
结果传上去之后发现文本内容跟本地内容不匹配. 肉眼看完了都没看到是什么缘故. 如下:
服务器上: $ md5sum xxx 7f228319446badf0b351a74a62116074 xxx 本地文件: $ md5sum xxx e1ea0c6e041a34a40c5ae78a12af2e20 xxx
果断对比文本内容:
本地文件:
$ od -tx1 -tc xxx 0000000 31 32 33 21 0a 68 65 6c 6c 6f 21 0a 34 35 36 0a 1 2 3 ! \n h e l l o ! \n 4 5 6 \n 0000020ftp服务器上:
$ od -tx1 -tc xxx 0000000 31 32 33 21 0d 0a 68 65 6c 6c 6f 21 0d 0a 34 35 1 2 3 ! \r \n h e l l o ! \r \n 4 5 0000020 36 0d 0a 6 \r \n 0000023
惊讶的发现ftp客户端在上传的时候往文本后面添加了个 \r ! 何其的可耻.
man 了一下. 发现了 ftp的传输模式. 区分ASCII 和 binary. 一个是按文本读取, 一个是按二进制读取. 文本读取会判定本地与远程的服务器类型从而默认增添数据.
因此修改命令即可:
$ vim copy.sh #! /bin/bash remote_path=远程地址 if [ -f $1 ] then ftp -i -n <<UPLOAD open ftp服务器 user 账户名 密码 binary <---- put $1 $remote_path$1 quit UPLOAD fi
可参考这篇博文:
http://7905648.blog.51cto.com/7895648/1298447
相关文章推荐
- LINUX修改、增加IP的方法 ifconfig 两个ip地址 配置文件
- Linux磁盘管理之磁盘结构、概念、原理01
- window linux IPC ftok BY_HANDLE_FILE_INFORMATION
- 三张图看遍Linux 性能监控、测试、优化工具
- Linux下C线程池的实现
- CentOS6.6重设root密码(单用户模式)
- linux中sleep详解实例
- 还在羡慕Ubuntu,CentOS么---《一起动手打造你自己的Linux发行版--FalseOS》
- (十四)洞悉linux下的Netfilter&iptables:开发一个match模块【实战】
- (十三)洞悉linux下的Netfilter&iptables:为防火墙增添功能模块【实战】
- (十二)洞悉linux下的Netfilter&iptables:iptables命令行工具源码解析【下】
- (十一)洞悉linux下的Netfilter&iptables:iptables命令行工具源码解析【上】
- (八)洞悉linux下的Netfilter&iptables:状态防火墙
- (七)洞悉linux下的Netfilter&iptables:如何理解连接跟踪机制?【下】
- (六)洞悉linux下的Netfilter&iptables:如何理解连接跟踪机制?【中】
- (五)洞悉linux下的Netfilter&iptables:如何理解连接跟踪机制?【上】
- LINUX添加/删除用户及用户组
- Linux日常运维管理基本问题
- 使用initramfs启动Linux成功,再次总结一下
- Linux Tips: How to Quickly Bind a Range of IPs on RedHat Based Systems