遇坑填坑之旅:使用FTP工具在不同的平台之间传输文件时,用错传输类型将导致文件损坏
我在Windows10用Xftp工具发送RPM软件包到CentOS后遇到过2次传输问题----执行yum安装命令时才发现RPM包是损坏的; 于是我慢慢养成一个习惯:凡是跨平台传输了安装包一类的文件,都用命令去校验源文件和传输后的文件MD5是否一致.
一. 假如目标文件名称为test.txt,三大主流系统的MD5校验命令如下:
Linux:
md5sum test.txt
Windows:
certutil -hashfile test.txt MD5
MacOS:
md5 test.txt
二. 另外记录一下在Linux系统使用ftp命令来推送文件:
举例:从CentOS7发送一个RPM安装包到远程服务器的流程:
1.传输的是非文本类型,如安装包、压缩包等等,必须指定binary[二进制]类型进行传输:
例如有个文件是CentOS系统上的QQ RPM安装包:
linuxqq.rpm
操作过程如下:
//发起请求ftp连接请求
ftp www.target.com
//接着按顺序输入用户名和密码
root
123456
//因为目标文件是RPM格式,必须指定二进制类型传输,否则会乱码无法安装
binary
//先定位到本地的家目录,因为linuxqq.rpm就放在那
lcd ~
//然后打开远程服务器的一个目录,本次我要把文件推送到home目录下
cd /home
//推送文件
put linuxqq.rpm
//检查一下远程服务器的目录下是否多出了目标文件
dir
//关闭ftp通道
close
//退出ftp模式
bye
2.传输的是文本类型,请指定ascii类型进行传输:
又例如在你的CentOS系统上有个python项目,你想把里面的依赖包描述文件(requirements.txt
)发送到其他机器:
操作过程如下:
//发起请求ftp连接请求
ftp www.target.com
//按顺序输入用户名和密码
root
123456
//因为目标文件是文本格式,指定用ASCII类型来推送
ascii
//先定位到本地的项目根目录,如/home/PlaneWars/
lcd /home/PlaneWars/
//然后打开远程服务器的一个目录,本次我要把文件推送到home目录下
cd /home
//推送文件
put requirements.txt
//检查一下远程服务器的目录下是否多出了目标文件
dir
//关闭ftp通道
close
//退出ftp模式
bye