在用lrzsz中的rz命令在windows和linux中传输文件时,有的文件能够传输,有的文件只能传输一部分,就会被终止,报错:zmodem transfer canceled by remote side。并且开始打印乱码。
遇见这种问题,依次按照如下办法解决:
1. rz 跟上 -be 。 这种方法对于大部分情况都可以解决。(注意:去掉弹出的对话框中“Upload files as ASCII”前的勾选,默认是不勾选的)
-a, –ascii
-b, –binary 用binary的方式上传下载,不解释字符为ascii
-e, –escape强制escape 所有控制字符,比如Ctrl+x,DEL等
2. 先拆分后上传。对于大文件传输,经常传到一大半的时候就会被终止,无论重试多少次,都是如此。据我猜测,这是由于rz传输文件有超时时间的限制,当传输到一定时间后,就会被意外终止。
所以,解决这个问题的终极办法是拆分文件,然后提前设置好传输文件目录,减少每次传输的时间。
步骤如下:
1)拆分文件:
把一个1.2G的centos7.3.tar.gz,按每个文件500M,拆分成3个文件(拆分后文件名为x00、x01和x02)。
split -b 500M centos7.3.tar.gz -d
2)执行 rz -be ,弹出传输框,选择要传输的文件x00,传输完x00,再传输x01 和 x02.
注意:在弹出的传输框选择文件时,不要占用太多时间,因为这部分时间也计算在超时时间内,超过时长传输就会被终止。
为减少这部分占用时间,可以预先设置zmodem的upload目录为x00所在的目录。如下:
工具栏“Options” --> “Session Options”,然后选择最下面的“X/Y/Zmodem”,在右侧界面的Upload框,选择x00所在的目录。
3. 合并文件
三个文件 x00、x01和x02上传完毕后,执行如下命令把三个文件合并为centos7.3.tar.gz
cat x0* > centos7.3.tar.gz
4. 执行md5sum 校验文件完整性。(可选)
执行 md5sum centos7.3.tar.gz 对比上传前后的文件的md5sum是否相等。