linux自动化上传文件至FTP

先来看看基础的命令,包括了连接,列出列表,下载,上传,断开这最基础的命令,会这些,在使用ftp命令行就毫无压力啦!

1. 连接ftp服务器

格式:ftp [hostname| ip-address]

a)在linux命令行下输入:

ftp 192.168.1.1

b)服务器询问你用户名和密码,分别输入用户名和相应密码,待认证通过即可。

2.列出文件列表以及切换目录

这部分其实和linux并无区别,分别是ls,和cd

列出目录列表

ls

切换当前目录

cd dir

3. 下载文件

下载文件通常用get和mget这两条命令。

a) get

格式:get [remote-file] [local-file]

将文件从远端主机中传送至本地主机中。

如要获取远程服务器上/usr/your/1.htm,则

ftp> get /usr/your/1.htm 1.htm

b) mget

格式:mget [remote-files]

从远端主机接收一批文件至本地主机。

如要获取服务器上/usr/your/下的所有文件,则

ftp> cd /usr/your/
ftp> mget *.*

此时每下载一个文件,都会有提示。如果要除掉提示,则在mget *.* 命令前先执行:prompt off

注意:文件都下载到了linux主机的当前目录下。比如,在 /usr/my下运行的ftp命令,则文件都下载到了/usr/my下。

c) 显示下载进度

默认情况下,下载是没有进度的,也就是说,只能瞎等着,啥也看不见。

ftp> hash

 

再进行传输,就能够显示下载进度了,以#号显示

4.上传文件

a) put

格式:put local-file [remote-file]

将本地一个文件传送至远端主机中。

如要把本地的1.htm传送到远端主机/usr/your,并改名为2.htm

ftp> put 1.htm /usr/your/2.htm

b) mput

格式:mput local-files

将本地主机中一批文件传送至远端主机。

如要把本地当前目录下所有html文件上传到服务器/usr/your/ 下

ftp> cd /usr/your
ftp> mput *.htm

注意:上传文件都来自于主机的当前目录下。比如,在 /usr/my下运行的ftp命令,则只有在/usr/my下的文件linux才会上传到服务器/usr/your 下。

5. 断开连接

bye:中断与服务器的连接。

ftp> bye

6.改变传输模式

ftp的传输模式有ascii模式和二进制模式

直接输入ascii则设置传输模式为ascii模式

ftp> ascii

直接输入binary则设置传输模式为binary模式

ftp> binary

附录:ftp命令表

FTP采用客户端/服务器模型,客户端和服务器使用TCP建立连接。在服务器端,FTP有两个预分配的的端口号,分别为20和21.其中,端口20用于发送和接受FTP数据(ASCII码或二进制文件),该数据端口只在传输数据是打开,并在传输结束时关闭。端口21用于发送和接受FTP的控制信息,FTP服务器通过侦听这个端口来判断是否有ftp客户端的连接请求,FTP会话建立后,端口21的连接在会话期间始终保持打开状态。

在客户端,当发出请求时动态分配端口号,选择范围为1024~65535.当一个FTP会话开始后,客户端程序打开一个控制端口(如1038),该端连接到服务器上的21端口,接受和发送控制信命令;需要传输数据时,客户端再打开第二个端口(如1039),连接到服务器上的20端口。每当开始传输文件时,客户端程序会打开一个新的数据端口,在文件传输完毕后,再自动释放该端口。

该命令的语法格式如下所示:

ftp [-v] [-d] [–i] [-n] [-g] [-k realm] [-x] [-u] [host]

ftp命令主要选项说明

 选项 说明
 -d 启动调试模式
 -u 关闭自动认证
 -e 不记录历史指令
 -i 关闭交互模式
 -x 在成功认证之后,协商密钥
 -n 关闭自动登录功能
 -p 传输文件模式为被动模式
 -v 程序运行时,显示详细的处理信息
 -k realm 使用Kerberos v4认证时,从realm中得到信息
 host FTP服务器的主机名/IP地址

在客户端访问FTP时,如果没有在命令行给出服务器的主机名或IP,则客户端将出现“ftp>”提示符,等待用户输入ftp内部命令
常见ftp内部命令及其说明

 内部命令 说明
 ls 显示服务器上的目录
 get 从服务器下载指定文件到客户端
 put 从客户端传送指定文件到服务器
 open 连接ftp服务器
 quit 断开连接并退出ftp服务器
 cd directory 改变服务器的当前目录为directory
 lcd directory 改变本地的当前目录为directory
 bye 退出ftp命令状态
 ascii 设置文件传输方式为ASCII模式
 binary 设置文件传输方式为二进制模式
 ! 执行本地主机命令
 cd 切换远端ftp服务器上的目录
 cdup 上一层目录
 close 在不结束ftp进程的情况下,关闭与ftp服务器的连接
 delete 删除远端ftp服务器上的文件
 get 下载
 hash 显示#表示下载进度
 mdelete 删除文件,模糊匹配
 mget 下载文件,模糊匹配
 mput 上传文件,模糊匹配
 mkdir 在远端ftp服务器上,建立文件夹
 newer 下载时,检测是不是新文件
 prompt 关闭交互模式
 put 上传
 pwd 显示当前目录

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]:显示远程主机目录,并将结果存入本地文件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]]:设置文件名字符的翻译机制,如ntrans 1R,则文件名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上传文件

upload.sh

#!/bin/sh

export today=`date +%Y%m%d`

ftp -v -n 10.40.242.200 <<EOF
user username password
binary
hash
cd bak
lcd /backup/lmis/dbbak
prompt
mput lmis_$today.dmp.gz
bye
#here document
EOF
echo "commit to ftp successfully"

输出日志脚本

main.sh

#!/bin/bash
export today=`date +%Y%m%d`
export log=/backup/lmis/ftplog/ftp_$today.log
/bin/sh /backup/lmis/script/upload.sh > "$log" 2>&1 &

添加计划任务

0 6 * * * /backup/lmis/script/main.sh

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值