转自:http://hi.baidu.com/tanyear/blog/item/d66af782702b8dbb6d811948.html
近半年在公司的pc上,用sz下载,rz上传老是文件会出问题。刚开始的时候,我一度怀疑是linux虚拟机,或者网络的问题,导致传输的过程中丢包,也没有仔细去探究。
最近发现,在任何服务器上做同样的操作都存在同样的问题,会严重的影响我的工作。为此,决定把真凶就揪出来。在下载文件前用md5sum计算它的md5值,然后用sz下载到本地的pc上,用windows下的md5sum再计算一次,发现下载到本地之后的md5值跟在服务器上是一样的。最后使用rz上传到服务器上再算一次,发现变化发生在我用rz上传到服务器之时。
缩小怀疑对象了。rz怎么会出问题。先看看SecureCRT中Session Option的设置,Xmodem/Zmodem这一栏中似乎也没有关于校验的设置。pqf说,会不会是上传的时候没有用binary的方式,他自己用rz,sz通常都会加上-b,-e的参数。
-b binary 用binary的方式上传下载,不解释字符为ascii
-e 强制escape 所有控制字符,比如Ctrl+x,DEL等
于是我老老实实的用rz -be的参数来上传文件,发现一切照旧。我开始怀疑是不是rz的bug,于是google之。Google来Google去都没有结果,更换搜索关键字都没有,比如"rz file changed“,"rz transfer size"。难道Google也有不灵光的时候?
好。先放一放吧。在今天下午,我又用rz上传一张图片,但是图片又因为发生了改变无法访问。正在垂头丧气的时候,突然发现问题所在!
在输入rz后,上传文件的对话框,我不知道什么时候勾选了Upload files as ASCII。这个该死的选项,去掉后再测试,一切都正常了。
关于rz,sz
rz,sz是利用[XYZ]modem协议来实现上传下载文件的工具。本身来说Zmodem协议算是一个古老的协议了,似乎用rz,sz也不能续传文件。但是它的好处在于方便,不需要server支持。只要服务器支持rz,sz(不支持的话,linux可以装lrzsz这个rpm包),客户端软件支持(SecureCRT这类的),就可以方便的两个命令实现本地pc和服务器之间的文件上传下载
最近发现,在任何服务器上做同样的操作都存在同样的问题,会严重的影响我的工作。为此,决定把真凶就揪出来。在下载文件前用md5sum计算它的md5值,然后用sz下载到本地的pc上,用windows下的md5sum再计算一次,发现下载到本地之后的md5值跟在服务器上是一样的。最后使用rz上传到服务器上再算一次,发现变化发生在我用rz上传到服务器之时。
缩小怀疑对象了。rz怎么会出问题。先看看SecureCRT中Session Option的设置,Xmodem/Zmodem这一栏中似乎也没有关于校验的设置。pqf说,会不会是上传的时候没有用binary的方式,他自己用rz,sz通常都会加上-b,-e的参数。
-b binary 用binary的方式上传下载,不解释字符为ascii
-e 强制escape 所有控制字符,比如Ctrl+x,DEL等
于是我老老实实的用rz -be的参数来上传文件,发现一切照旧。我开始怀疑是不是rz的bug,于是google之。Google来Google去都没有结果,更换搜索关键字都没有,比如"rz file changed“,"rz transfer size"。难道Google也有不灵光的时候?
好。先放一放吧。在今天下午,我又用rz上传一张图片,但是图片又因为发生了改变无法访问。正在垂头丧气的时候,突然发现问题所在!
![](http://hiphotos.baidu.com/tanyear/pic/item/37d2bb1658db6c16962b43a6.jpg)
在输入rz后,上传文件的对话框,我不知道什么时候勾选了Upload files as ASCII。这个该死的选项,去掉后再测试,一切都正常了。
关于rz,sz
rz,sz是利用[XYZ]modem协议来实现上传下载文件的工具。本身来说Zmodem协议算是一个古老的协议了,似乎用rz,sz也不能续传文件。但是它的好处在于方便,不需要server支持。只要服务器支持rz,sz(不支持的话,linux可以装lrzsz这个rpm包),客户端软件支持(SecureCRT这类的),就可以方便的两个命令实现本地pc和服务器之间的文件上传下载