-
2021-05-14 00:28:38
最近遇到一个很棘手的问题. 问题很简单:
一般情况下使用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
更多相关内容 -
ftp上传文件命令,Linux中使用ftp命令上传文件
2021-05-10 21:57:44Linux中如何使用ftp命令,包括如何连接ftp服务器,上传or下载文件以及创建文件夹。虽然现在有很多ftp桌面应用(例如:iis7服务器管理工具),但是在服务器、SSH、远程会话中掌握命令行ftp的使用还是很有必要的。IIS7...Linux中如何使用ftp命令,包括如何连接ftp服务器,上传or下载文件以及创建文件夹。虽然现在有很多ftp桌面应用(例如:iis7服务器管理工具),但是在服务器、SSH、远程会话中掌握命令行ftp的使用还是很有必要的。
IIS7服务器管理工具可以批量管理、定时上传下载、同步操作、数据备份、到期提醒、自动更新。IIS7服务器管理工具适用于Windows操作系统和liunx操作系统;支持Ftp客户端批量操作。
1.ftp命令
使用格式:ftp [-v] [-d] [-i] [-n] [-g] [-s:filename] [-a] [-w:windowsize] [computer]
-v:禁止显示远程服务器响应信息
-n:禁止自动登录
-i:多文件传输过程中关闭交互提示
-d:启用调试,显示所有客户端与服务器端传递的命令
-g:禁用文件名通配符,允许在本地文件和路径名中使用
实例:ftp 122.122.122.122 2222
输入用户名、密码,即可完成登录。
2.目录操作
FTP命令可以列出、移动、创建文件夹。
ls -- 打印目录列表
!ls -- 查看本地目录
cd -- 改变目录
mkdir -- 创建文件夹
3.使用FTP下载文件
在下载一个文件之前,首先需要使用lcd命令设定本地接收目录位置。
lcd -- 指定下载目录
get file.txt [file_new.txt] -- 下载文件 支持更改名字
mget *.txt -- 使用mget + 通配符下载多个文件
4.使用FTP上传文件
put file.txt [file_new.txt] -- 上传文件 支持更改名字
put /home/data/cwh/file.txt -- 绝对路径
mput *.txt -- 上传多个文件
5.关闭FTP连接
完成FTP工作后,为了安全起见需要关闭连接。有3个命令可以关闭连接:
bye -- 关闭连接
exit -- 关闭连接
quit -- 关闭连接
close -- 关闭连接
6.其他命令
? -- 查询ftp命令
help -- 查询ftp命令
open [ftp server name] -- 和指定的远程Linux FTP服务器连接
user [user name] [password] -- 使用指定远程Linux FTP服务器的用户登录
pwd -- 显示当前路径
ls -- 列出目录和文件
dir -- 列出目录和文件(同上)
mkdir [foldname] -- 创建指定目录
rmdir [foldname] -- 删除指定目录
cd -- 切换目录
delete [filename] -- 删除文件
rename [filename] [newfilename] -- 重命名
close -- 关闭连接 但保留FTP命令参数提示
disconnect -- 关闭连接 但保留FTP命令参数提示(同上)
bye -- 结束连接
quit -- 结束连接
! -- 直接从远程Linux FTP进入到本地Shell中
exit -- (接上步)从本地Shell环境返回远程Linux FTP中
!ls -- 列出本地机器目录和文件
lcd [foldname] -- 更改本地工作目录
binary -- 使用二进制传输文件
prompt -- 切换提示(使用mput或mget上传下载多个文件时避免提示)
case -- 在使用mget时,将远程主机文件名的大写转换为小写字母
cdup -- 进入远程主机目录的父目录
system -- 显示远程主机的操作系统类型
hash -- 每传输1024字节,显示一个hash符号(#)
status -- 显示当前ftp状态
Connected to122.122.122.122.
No proxy connection.
Mode: stream; Type: binary; Form: non-print; Structure: file
Verbose: on; Bell: off; Prompting: off; Globbing: on
Store unique: off; Receive unique: off
Case: off; CR stripping: on
Ntrans: off
Nmap: off
Hash mark printing: off; Use of PORT cmds: on
Tick counter printing: off
7、一个完整的例子
1“开始”→“运行”→输入“FTP” 2open 122.122.122.122 2222 3用户名 4密码 5查看目录 6-- dir 文件及目录 7-- ls 只查看文件 8mkdir xxx 新建目录 9cd xxx 切换目录10binary 采用二进制传输11lcd /home/data 定位本地目录12!dir 查看本地目录及文件13put xyz.txt 上传文件(mput)14get xyz.txt 下载文件(mget)15delete *.txt 删除文件16cd.. 返回上一级17rmdir xxx 删除空文件夹18bye 退出ftp服务器19pwd 查看当前目录
-
linux ftp 上传文件命令
2017-05-25 12:25:38首先我们需要先进入到ftp环境 ... 然后进入到对应的目录 ftp>!ls 查看一下文件列表 ...我们首先需要使用lcd命令设定本地接受目录位置...现在我们就可以直接上传我们的文件了 put 文件名 上传成功之后会提示successfu首先我们需要先进入到ftp环境
$ ftp ip地址 账号/密码
然后进入到对应的目录
ftp>!ls
查看一下文件列表
先执行一个命令 passive
如果没有这个命令是不能使用ls的
我们首先需要使用lcd命令设定本地接受目录位置。
我们首先需要使用lcd命令设定本地接收目录位置
lcd /绝对路径
现在我们就可以直接上传我们的文件了
put 文件名
上传成功之后会提示successful
最后在用!ls命令看一下我们上传的文件
bye 退出
-
详解Python下ftp上传文件linux服务器
2020-12-25 10:27:03模块介绍: from ftplib import FTP ftp = FTP() #设置变量 ... ftp.dir() #显示目录下的文件信息 ftp.nlst() #获取目录下的文件 ftp.mkd(pathname) #新建远程目录 ftp.pwd() #返回当前所在位置 ftp. -
Linux ftp 命令行中下载文件get与上传文件put的命令应用详解
2020-09-15 07:17:31主要介绍了Linux ftp 命令行中下载文件get与上传文件put的命令应用详解,需要的朋友可以参考下 -
Linux shell ftp命令根据文件日期下载文件的方法
2021-01-20 16:27:36需求:ftp获取远程数据的文件,根据文件的创建时间点下载文件。 可以自行扩展根据文件的大小等其他需求。 知识点总结: 1、获取文件的时间: ls -lrt|awk '{print $6 $7 $8}' 时间内容: Sep 8 16:03 2、时间格式... -
linux ftp命令:(从远程ftp服务器上传下载文件)
2021-05-08 22:45:25FTP的命令行格式为:ftp -v -d -i -n -g [主机名] ,其中-v 显示远程...FTP使用的内部命令如下(中括号表示可选项):1.![cmd[args]]:在本地机中执行交互shell,exit回到ftp环境,如:!ls*.zip2.$ macro-ame[args...FTP的命令行格式为:
ftp -v -d -i -n -g [主机名] ,其中
-v 显示远程服务器的所有响应信息;
-n 限制ftp的自动登录,即不使用;.n etrc文件;
-d 使用调试方式;
-g 取消全局文件名。
FTP使用的内部命令如下(中括号表示可选项):
1.![cmd[args]]:在本地机中执行交互shell,exit回到ftp环境,如:!ls*.zip
2.$ macro-ame[args]: 执行宏定义macro-name。
3.account[password]: 提供登录远程系统成功后访问系统资源所需的补充口令。
4.append
local-file[remote-file]:将本地文件追加到远程系统主机,若未指定远程系统文件名,则使用本地文件名。
5.ascii:使用ascii类型传输方式。
6.bell:每个命令执行完毕后计算机响铃一次。
7.bin:使用二进制文件传输方式。
8.bye:退出ftp会话过程。
9.case:在使用mget时,将远程主机文件名中的大写转为小写字母。
10.cd remote-dir:进入远程主机目录。
11.cdup:进入远程主机目录的父目录。
12.chmod mode file-name:将远程主机文件file-name的存取方式设置为mode,如:chmod 777
a.out。
13.close:中断与远程服务器的ftp会话(与open对应)。
14.cr:使用asscii方式传输文件时,将回车换行转换为回行。
15.delete remote-file:删除远程主机文件。
16.debug[debug-value]:设置调试方式, 显示发送至远程主机的每条命令,如:deb up
3,若设为0,表示取消debug。
17.dir[remote-dir][local-file]:显示远程主机目录,并将结果存入本地文件
18.disconnection:同close。
19.form format:将文件传输方式设置为format,缺省为file方式。
20.get remote-file[local-file]:
将远程主机的文件remote-file传至本地硬盘的local-file。
21.glob:设置mdelete,mget,mput的文件名扩展,缺省时不扩展文件名,同命令行的-g参数。
22.hash:每传输1024字节,显示一个hash符号(#)。
23.help[cmd]:显示ftp内部命令cmd的帮助信息,如:help get。
24.idle[seconds]:将远程服务器的休眠计时器设为[seconds]秒。
25.image:设置二进制传输方式(同binary)。
26.lcd[dir]:将本地工作目录切换至dir。
27.ls[remote-dir][local-file]:显示远程目录remote-dir,
并存入本地文件local-file。
28.macdef macro-name:定义一个宏,遇到macdef下的空行时,宏定义结束。
29.mdelete[remote-file]:删除远程主机文件。
30.mdir remote-files local-file:与dir类似,但可指定多个远程文件,如 :mdir
*.o.*.zipoutfile 。
31.mget remote-files:传输多个远程文件。
32.mkdir dir-name:在远程主机中建一目录。
33.mls remote-file local-file:同nlist,但可指定多个文件名。
34.mode[modename]:将文件传输方式设置为modename, 缺省为stream方式。
35.modtime file-name:显示远程主机文件的最后修改时间。
36.mput local-file:将多个文件传输至远程主机。
37.newer file-name:
如果远程机中file-name的修改时间比本地硬盘同名文件的时间更近,则重传该文件。
38.nlist[remote-dir][local-file]:显示远程主机目录的文件清单,并存入本地硬盘的local-file。
39.nmap[inpattern outpattern]:设置文件名映射机制, 使得文件传输时,文件中的某些字符相互转换,
如:nmap $1.$2.$3[$1,$2].[$2,$3],则传输文件a1.a2.a3时,文件名变为a1,a2。
该命令特别适用于远程主机为非UNIX机的情况。
40.ntrans[inchars[outchars]]:设置文件名字符的翻译机制,如ntrans1R,则文件名LLL将变为RRR。
41.open host[port]:建立指定ftp服务器连接,可指定连接端口。
42.passive:进入被动传输方式。
43.prompt:设置多个文件传输时的交互提示。
44.proxy ftp-cmd:在次要控制连接中,执行一条ftp命令,
该命令允许连接两个ftp服务器,以在两个服务器间传输文件。第一条ftp命令必须为open,以首先建立两个服务器间的连接。
45.put local-file[remote-file]:将本地文件local-file传送至远程主机。
46.pwd:显示远程主机的当前工作目录。
47.quit:同bye,退出ftp会话。
48.quote arg1,arg2…:将参数逐字发至远程ftp服务器,如:quote syst.
49.recv remote-file[local-file]:同get。
50.reget remote-file[local-file]:类似于get,
但若local-file存在,则从上次传输中断处续传。
51.rhelp[cmd-name]:请求获得远程主机的帮助。
52.rstatus[file-name]:若未指定文件名,则显示远程主机的状态, 否则显示文件状态。
53.rename[from][to]:更改远程主机文件名。
54.reset:清除回答队列。
55.restart marker:从指定的标志marker处,重新开始get或put,如:restart 130。
56.rmdir dir-name:删除远程主机目录。
57.runique:设置文件名只一性存储,若文件存在,则在原文件后加后缀.1, .2等。
58.send local-file[remote-file]:同put。
59.sendport:设置PORT命令的使用。
60.site arg1,arg2…:将参数作为SITE命令逐字发送至远程ftp主机。
61.size file-name:显示远程主机文件大小,如:site idle 7200。
62.status:显示当前ftp状态。
63.struct[struct-name]:将文件传输结构设置为struct-name, 缺省时使用stream结构。
64.sunique:将远程主机文件名存储设置为只一(与runique对应)。
65.system:显示远程主机的操作系统类型。
66.tenex:将文件传输类型设置为TENEX机的所需的类型。
67.tick:设置传输时的字节计数器。
68.trace:设置包跟踪。
69.type[type-name]:设置文件传输类型为type-name,缺省为ascii,如:type
binary,设置二进制传输方式。
70.umask[newmask]:将远程服务器的缺省umask设置为newmask,如:umask 3
71.user
user-name[password][account]:向远程主机表明自己的身份,需要口令时,必须输入口令,如:user
anonymous my@email。
72.verbose:同命令行的-v参数,即设置详尽报告方式,ftp 服务器的所有响 应都将显示给用户,缺省为on.
73.?[cmd]:同help.
FTP自动登录批量下载文件
从ftp服务器192.168.1.171上的/home/data 到本地的/home/databackup
!/bin/bash
ftp -v -n 192.168.1.171
user guest 123456
binary
cd /home/data
lcd /home/databackup
prompt
mget *
close
bye
#!/bin/bash
#文件下载
#cd 在远程机上改变工作目录
#lcd 在本地机上改变工作目录
#binary 设置文件传输方式为二进制模式
#close 终止当前的 ftp 会话
#bye:退出ftp会话过程。
#hash 每次传输完数据缓冲区中的数据后就显示一个#号
#prompt:设置多个文件传输时的交互提示。
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/loacl/sbin:~/bin
export PATT
ftp -v -n $1
user $2 $3
binary
cd $4
lcd $5
prompt
mget $6
close
bye
FTP自动登录批量上传文件
从ftp服务器192.168.1.171上的/home/data 到本地的/home/databackup
#!/bin/bash
ftp -v -n 192.168.1.171 << END
user guest 123456
binary
hash
cd /home/data
lcd /home/databackup
prompt
mput *
bye
END
linux下自动登陆ftp下载文件
操作系统:linux
说明:使用了expect,参数为ftp服务器地址和要下载的文件名
参数:lindex $argv 0 读取ftp服务器ip地址
lindex
$argv 1 读取要下载的文件名
编辑:
spawn ftp [lindex $argv 0]
expect "Name (*):"
send "anonymous\r"
expect "Password:*"
send "\r"
expect "ftp>"
send "binary\r"
expect "ftp>"
send "hash\r"
expect "ftp>"
send "get [lindex $argv 1]\r"
expect "* Transfer complete."
send "exit\r"
执行方法:expect ftp.sh
服务器ip地址 文件名称
(expect
ftp.sh 192.168.0.1 filename.txt )
扩展:可以根据需要把用户名和密码也作为参数输入里边,这个根据个人需求去做
-
详解ftp文件上传下载命令
2021-01-10 23:35:25查看远程ftp服务器上用户lte****相应目录下的文件所使用的命令为:ls,登录到ftp后在ftp命令提示符下查看本地机器用户wasqry相应目录下文件的命令是:!ls。查询ftp命令可在提示符下输入:?,然后回车。 1、从... -
在Linux中通过FTP方式上传文件
2021-05-10 06:00:38在LINUX中通过FTP方式上传文件或下载文件以下是简单版本[fengsy@ctihost len.shell]$ cat Leave#Copy File From FtpServ To Local#Author : Feng ShuYanleave(){#local FILEecho $*File_Ls=`ls -l $4 |awk '{print $... -
Linux服务器 通过ftp命令下载或上传文件
2022-05-24 19:03:49下载文件的命令 get 远程ftp服务器上当前目录下要下载的文件名 [下载到本地机器上当前目录时的文件名], 如:get warn.log [project.log],带括号表示可写可不写,不写的话是以服务器的文件名下载 getwarn.... -
Linux使用FTP命令上传下载文件
2020-06-14 16:01:08第一步:连接目标服务器 ftp 192.168.xxx.xxx Username: Password: 第二部:新建目录 mkdir xxx 第三步:指定本地目录 ...第六步:上传/下载/删除文件 put xxx.txt get xxx.txt delete xxx.txt ... -
FTP传输文件jar包和代码上传文件到linux
2017-10-05 19:44:24上传文件到linux,通过java代码上传文件到linux中所依赖的jar包 -
Linux之FTP文件自动上传
2022-02-16 10:29:13使用 FTP 自动上传图片 -
Linux上ftp命令行下载文件与上传文件命令应用
2021-05-14 19:01:44首先,从本地的某个目录(/data/ftp/)登陆到远程服务器,并进入要下载文件的目录(/data/logs/),使用get命令从远程服务器的当前目录(/data/logs/)下载文件到本地登陆远程服务器时的目录(/data/ftp/)。get 远程ftp... -
阿里云 SUSE Linux 上传文件 FTP
2021-01-06 13:04:371、本地windows 下载FTP工具,我用的是FileZilla 下载地址:https://filezilla-project.org/download.php?type=client 2、输入阿里云服务器公网IP地址,用户名和密码。端口号输入:22(如下图)阿里云服务器上什么... -
Linux下ftp上传文件后文件大小改变成不一样或者文件不能上传的问题解决方法
2021-05-10 00:58:24在网络环境下,想ftp服务器推送文件是开发中经常会用到的,本文不讲解ftp命令,主要针对ftp上传文件中可能遇到的几种错误情况及解决方法进行一下介绍,当然,只是作为一种参考。1、ftp上传文件后,大小被改变了,... -
linux-往ftp服务器上传文件
2021-06-07 10:18:261.Linux终端连接FTP [oracle@Dave ~]$ftp 219.212.41.323001 Connected to219.212.41.32. 220219.212.41.32FTP server ready 500 AUTH not understood 500 AUTH not understood KERBEROS_V4 rejected as ... -
Linux实现文件上传ftp服务器脚本代码
2021-01-10 10:07:15工作期间,每次将文件上传至ftp服务器时,均需要手工输入ip、用户名、密码等,因此,考虑编写脚本完成文件的上传任务。具体的脚本sync.sh如下: #!...# 上传文件 get $1 # 结束 bye #退出 EOF 然 -
Linux 服务器 ftp上传文件出现的问题
2021-05-15 07:19:411 安装vsftpd[root@localhost modules]# yum install -y vsftpd2 编辑ftp配置文件[root@localhost modules]# vi /etc/vsftpd/vsftpd.conf做如下修改:anonymous_enable=NO#关闭匿名登录chroot_local_user=YES#用于... -
Linux实现批量上传FTP服务器的shell脚本
2017-07-07 17:44:45实现批量上传FTP服务器备份功能,并支持压缩,可配置备份频率 -
如何使用Linux FTP命令传输文件
2021-05-13 02:43:57在大多数情况下,您将使用桌面FTP客户端连接到远程服务器并下载或上传文件。但是,当您在没有GUI的服务器上工作并且想要通过FTP向远程服务器或从远程服务器传输文件时,ftp命令很有用。开始之前通过ftp传输数据时,... -
linux使用 FTP上传文件失败!
2020-06-29 13:11:45import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream;...import org.apache.commons.net.ftp.FTP; import -
Linux_ftp_命令行下下载文件get与上传文件put的命令应用.pdf
2021-10-30 15:20:22Linux_ftp_命令行下下载文件get与上传文件put的命令应用.pdf -
linux ftp上传乱码,centos下ftp上传文件出现中文乱码怎么解决
2021-05-15 14:01:11原因:windows系统中文采用GB2312编码,而linux采用utf-8编码。解决方法:查看是否有中文语言包locale若没有zh_CN.UTF-8相关内容,说明没有安装语言包,安装方法如下:yum groupinstall chinese-support有了中文语言... -
Linux基础命令---put上传ftp文件
2020-09-16 09:31:43使用lftp登录ftp服务器之后,可以使用put指令将文件上传到服务器。 1、语法 put[-E][-a][-c][-O base]lfile[-o rfile] 2、选项列表 选项 说明 -o 指定输出文件的名字,不... -
在linux下使用FTP命令传输文件
2021-05-08 22:46:27在大多数情况下,您将使用桌面FTP客户端连接到远程服务器下载或上传文件。但是,ftp当您在没有GUI的服务器上工作并且希望通过FTP将文件传输到远程服务器或从远程服务器传输文件时,这时命令行客户端就很有用通过ftp... -
linux中ftp下载文件命令的用法
2021-05-11 05:06:54linxu下的ftp命令是用来下载文件或者上传文件的,下面由学习啦小编为大家整理了linux的ftp下载文件命令的用法的相关知识,希望对大家有帮助!一、linux中的ftp下载文件命令的用法从远程ftp服务器下载文件的命令格式:...