1、问题
某次linux下工作结束,归档过程中将.tar.gz文件以文本ftp保存到win10后,无法解压了。
2、查阅
关于FTP的ASCII模式和Binary模式
ASCII模式和Binary模式的区别是回车换行的处理,Binary模式不对数据进行任何处理,ASCII模式将回车换行转换为本机的回车字符,比如:UNIX下是\n,Windows下是\r\n,Mac下是\r。
所以,当你用ASCII方式从UNIX的FTP Server下载文件到Windows系统上时(不管是二进制或者文本文件),每检测到一个字节是0A,就会自动插入一个0D,所以如果你的文件是二进制文件,比如可执行文件、压缩包什么的,就肯定不能用了。
看到这里,心死了。肯定不能用了嘛。
可是,真的很想恢复啊~~
3、再次查阅
一般来说,ftp最好都用Binary方式,这样可以保证不出错。
如果有文本格式转换的问题,即UNIX格式的文本和DOS格式的文本之间的转换,有很多工具可以做的,不要在ftp传输的时候冒险,尤其是你如果对这些东西不是非常清楚的话。
是啊,dos2unix嘛。既然如此,那么,
4、解决问题
% dos2unix my.tar.gz
报错:skip binary file ?
检测到这是二进制文件,不给转换?!
% dos2unix -help
-f, --force force conversion of binary files
哈哈
% dos2unix -f my.tar.gz
成功了,可以解压了。
我的数据啊,我的源码啊。太好了。欣喜。分享。
2024.11.2.