linux shell rz和sz是终端下常用的文件传输命令,rz和sz通过shell被调用,其中rz用于从启用终端的系统上传文件到目标系统(终端登录的目标系统), 这里不过多介绍这些命令,只是记录一个使用rz过程中碰到的小问题。rz上传最大支持2G文件,超过2G文件需要切割文件成小于2G的再上传。
本人在rz命令(不带任何选项参数)上传一个可执行文件exe时,出现了error,导致终端挂死在rz命令中,因为之前没有碰到过这种情况,其他文件都可以正常上传。所以想到是不是rz在面对这个文件exe时存在问题,所以man rz了一下,发现-e选项,描述如下:
-e, --escape
Force sender to escape all control characters; normally XON, XOFF, DLE,CR-@-CR, and Ctrl-X are escaped.
大致意思就是,-e选项强制对rz的控制字符进行转义,就想C中表示真正的反斜杠 '/',需要 '//'进行转义一样。
就想到是不是exe文件存在rz程序的控制字符导致上传出错,所以加上-e选项,问题解决,因此可以确定是由于文件中存在rz的控制字符导致了rz上传错误,所以为了防止rz出现上述问题,建议在用rz命令时都加上-e选项。
注意:单独用rz会有两个问题:上传中断、上传文件变化(md5不同),解决办法是上传是用rz -be,并且去掉弹出的对话框中“Upload files as ASCII”前的勾选。
-a, –ascii
-b, –binary 用binary的方式上传下载,不解释字符为ascii
-e, –escape 强制escape 所有控制字符,比如Ctrl+x,DEL等
rar,gif等文件文件采用 -b 用binary的方式上传。
文件比较大而上传出错的话,采用参数 -e
如果用不带参数的rz命令上传大文件时,常常上传一半就断掉了,很可能是rz以为上传的流中包含某些特殊控制字符,造成rz提前退出。
综上,请使用 rz -be
参考:https://blog.csdn.net/kl28978113/article/details/78508126