技术标签: Linux上ftp传输文件怎么改名
最近遇到一个很棘手的问题. 问题很简单:
一般情况下使用ftp上传就是这个样子:
如下脚本:
$ vim copy.sh
#! /bin/bash
remote_path=远程地址
if [ -f $1 ]
then
ftp -i -n <
open ftp服务器
user 账户名 密码
put $1 $remote_path$1
quit
UPLOAD
fi
这是文本文件内容. vim会默认在文件末尾追加\n
$ vim xxx
123!$
hello!$
456$
将写好的文件传到ftp服务器:
$ ./copy.sh xxx
结果传上去之后发现文本内容跟本地内容不匹配. 肉眼看完了都没看到是什么缘故. 如下:
服务器上:
$ md5sum xxx
7f228319446badf0b351a74a62116074 xxx
本地文件:
$ md5sum xxx
e1ea0c6e041a34a40c5ae78a12af2e20 xxx
果断对比文本内容:
本地文件:
$ od -tx1 -tc xxx
0000000 31 32 33 21 0a 68 65 6c 6c 6f 21 0a 34 35 36 0a
1 2 3 ! \n h e l l o ! \n 4 5 6 \n
0000020ftp服务器上:
$ od -tx1 -tc xxx
0000000 31 32 33 21 0d 0a 68 65 6c 6c 6f 21 0d 0a 34 35
1 2 3 ! \r \n h e l l o ! \r \n 4 5
0000020 36 0d 0a
6 \r \n
0000023
惊讶的发现ftp客户端在上传的时候往文本后面添加了个 \r ! 何其的可耻.
man 了一下. 发现了 ftp的传输模式. 区分ASCII 和 binary. 一个是按文本读取, 一个是按二进制读取. 文本读取会判定本地与远程的服务器类型从而默认增添数据.
因此修改命令即可:
$ vim copy.sh
#! /bin/bash
remote_path=远程地址
if [ -f $1 ]
then
ftp -i -n <
open ftp服务器
user 账户名 密码
binary
put $1 $remote_path$1
quit
UPLOAD
fi
可参考这篇博文:
http://7905648.blog.51cto.com/7895648/1298447
文章浏览阅读304次。第8章计算机科学导论计算机科学导论 1. 经典压缩工具WinRAR 它采用了独特的多媒体压缩算法和紧固式压缩法,这点更是针对性地提高了其压缩率。 它默认的压缩格式为RAR,该格式压缩率要比ZIP格式高出10%~30%,同时它也支持ZIP、ARJ、CAB、LZH、ACE、TAR、GZ、UUE、BZ2、JAR类型压缩文件。 8.5.4 各种实用工具软件 (1) 压缩文件 在“常规”标签项中输..._计算机科学导论第四版第八章答案
文章浏览阅读3.8k次,点赞2次,收藏5次。安装bcrypt的步骤安装依赖环境1. python 2.x2. node-gypnpm install -g node-gyp3. windows-build-toolsnpm install --global --production windows-build-tools安装bcryptnpm install bcrypt安装失败解决方法第一种//1.先全局删除依赖node-gypnpm -g uninstall node-gyp 全局删除 node-_node-gyp 安装 bcrypt失败
文章浏览阅读5.3w次,点赞28次,收藏144次。NCEP/NCAR再分析数据集是由美国气象环境预报中心(NCEP)和美国国家大气研究中心(NCAR)联合制作的,他们采用了当今最先进的全球资料同化系统和完善的数据库,对各种来源(地面、船舶、无线电探空、测风气球、飞机、卫星等)的观测资料进行质量控制和同化处理,获得了一套完整的再分析资料集,它不仅包含的要素多,范围广,而且延伸的时段长,是一个综合的数据集。依其统计时段不同,分以下几个类别。1_ncep再分析数据
文章浏览阅读3.4k次,点赞7次,收藏51次。定时器作为微控制器不可缺少的外设,在STM32中也是如此。相信不少初学者学到定时器的时候对STM32的学习热情就大打折扣甚至想要放弃了,因为这一部分知识确实比较复杂。但是,如果你在之前对GPIO、串口通信、外部中断的学习中把这些外设掌握了的话,学习这个新知识并不难。例本章共计1万余字,从STM32定时器的原理、寄存器介绍、定时器配置以及定时器的几个常用的功能(如定时器中断、定时器输出比较PWM波形、定时器输入捕获测电平长度、定时器编码器模式应用等)的使用方法来教大家掌握定时器这一外设。_stm32通用定时器基本定时器
文章浏览阅读325次,点赞5次,收藏7次。在当今社会,AI伪原创素材及文案被视为各行各业必备的技能之一。无论产品推介、广告宣传抑或内容创作等,皆需优秀的文案加以助益。今朝,承蒙知乎大神关照,将为诸位揭示文案写作之秘辛。一、了解目标受众在撰文案时,应率先明确主要的目标群体。不同社会群体会表现出各异的需求及偏好,唯有深度洞察他们
文章浏览阅读5.1k次。1.新旧SDK对比sentry前不久更新了js-jdk,以前使用的raven-js与webpack-sentry-plugin更新成了@sentry/browser @sentry/webpack-plugin旧 新raven-js @sentry/browser 前端错误日志上报SDKw..._@sentry/browser
文章浏览阅读710次。cocos2dx - lua 本身的 ccui.EditBox 是不能换行的需求:一个玩家留言的功能,就是玩家编辑一大段字符串,传送给服务器,服务器上传这段文字到后台管理系统。思路:EditBox 上层UI如果没有拦截点击事件,是可以盖一个图片挡住EditBox ,也不会影响输入框的功能的那么我是不是可以用一个文本节点显示当前输入的内容,实现文字换行功能-- 创建 EeditBoxlocal node = display.newSprite(...)local editeNotice = c_ccui.editbox
文章浏览阅读9.8k次,点赞2次,收藏32次。NTP(Network Time Protocol)------网络时间协议-----应用层协议,用来在分布式时间服务器和客户端之间进行时间同步。_ntp
文章浏览阅读1.4k次。一. 编译工具ActivePerl:5.28下载地址https://www.activestate.com/products/activeperl/downloads/Name:2.14.02下载地址https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/CMake:下载地址https://cmake.org/download/Visu..._windows 如何交叉编译openssl 和 libssh2
文章浏览阅读2.5k次。ViewPager的主要功能是使视图左右滑动1.在布局文件中加入组件android.support.v4.view.ViewPagerandroid:id="@+id/heroPager"android:layout_width="fill_parent"android:layout_height="wrap_content"/>和android的其_android findviewbyid 获取不到子视图
文章浏览阅读8.2k次,点赞4次,收藏27次。做为中小站长来说,一般购买了云服务器之后,可以自己在云服务器ECS上搭建数据库,并不需要另外购买云数据库。但是当网站的数据量规模已经大到一定程度之后,这种应用与数据库不分离的模式就会显露弊端了,会出现服务器反应迟缓卡顿现象。云数据库结合云服务器使用,布局站库分离的网站,这样的站库分离模式速度更快,也减少了数据安全风险,更降低了运营成本。云数据库RDS提供高可用、高可靠、高安全、可扩展的托管数据库服务,性能等同于商业数据库,但是价格相比ECS自建数据库,仅需约1/3,相比自购服务器搭建数据库,仅需约._是否有必须云数据库
文章浏览阅读4k次。python安装panas库时,出现Non-zero exit code (1)问题原因:pip版本过低 方法:window+R →cmd→python -m pip install --upgrade pip(要先输入pip确定pip存在,不存在要下载pip)_non-zero exit code (1)