百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

如何用 ftp 实现一键上传

ahcoder 2024-12-15 11:02 8 浏览

简介

ftp 是 Internet 标准文件传输协议的用户界面, 它允许用户与远程网络站点之间传输文件

使用 ftp 客户端上传文件,需要一个 ftp 服务器,本文主要介绍 ftp 客户端上传相关的命令,默认已经安装好FTP服务器了

FTP服务器的搭建在 Linux下如何部署FTP服务器 中有详细的介绍,感兴趣的可以去看看

安装

使用下面的命令安装 FTP 客户端

yum install ftp

常用选项

进入 ftp 命令行之后,就可以执行上传、下载相关的命令,由于命令比较多,下面只列出一些常用的命令以及一些常用选项

命令

说明

put

本地文件上传到FTP服务器

mput

本地文件批量上传到FTP服务器

get

FTP服务器文件下载到本地

mget

FTP服务器批量下载到本地

delete

删除FTP服务器上的文件

mdelete

批量删除FTP服务器上的文件

ls

FTP服务器当前目录中的文件详细信息

lcd

更换本地工作目录

cd

FTP服务器上更换目录

cdup

FTP服务器当前目录返回到上一层目录

pwd

当前位于FTP服务器上哪个目录

nlist

列出FTP服务器指定目录中的文件名列表

binary

设置传输类型为二进制传输

open

在指定的IP和端口上,与FTP建立一个连接

bye

终止与FTP服务器的会话,退出FTP客户端


选项

说明

-i

文件批量传输时,关闭交互提示

-n

客户端连接上FTP服务器时,禁止自动登录

-v

打印FTP服务器返回的所有消息

!

本地机器上执行命令


上传单个文件

上传单个文件主要使用 put 命令,它的格式是 put local-file [remote-file] , 其中 local-file 表示本地文件,默认是本地当前目录,remote-file 是FTP服务器上的文件,如果不指定的话,上传到服务器之后,默认跟本地文件名同名

下面是把本地 /root/ftptest/haa.txt 上传到服务器的 /files 目录的步骤

  • 步骤说明
1、输入帐号密码,登录FTP服务器

2、'!pwd' 命令表示本地机器当前目录

3、'!ls'  命令表示列出本地当前目录中的文件

4、'pwd'  命令是当前处于FTP服务器的哪个目录,这个目录是相对于用户锁定目录而言的,关于锁定目录请参考上一篇文章

   'cd files' 命令是服务器当前目录( '/' ) 切换到 '/files' 目录

   'ls'  是列出FTP服务器当前目录中的文件,从结果可以看出,服务器当前目录中没有任何文件

5、'binary' 以二进制模式上传,一般在上传之前设置下即可

6、'put haa.txt'  把本地当前目录中的 'haa.txt' 上传到服务器的 '/files' 目录中,上传成功之后,会有 'Transfer complete' 的提示

    如果把本地其他目录的文件上传到服务器的话,需要指定上传到服务器的文件名,
    
    比如:本地存在 /root/ftptest/test/test.txt 文件
    
    可以使用 'put ./test/test.txt  test.txt' 命令将它上传到服务器的 '/files' 目录

7、上传完成之后,执行 'nlist *' 命令查看下服务器当前目录中的文件列表,此处是用来确认是否上传成功,从结果可以看出,服务器当前目录的文件列表中有 'haa.txt' 文件,所以此次上传成功

8、操作完成之后,执行 'bye' 命令断开连接并退出FTP客户端

批量上传

批量上传主要使用 mput 命令,后面可以接文件名列表,也可以接含有通配符的文件名,命令能正确获取通配符指代的文件,文件名之间以空格隔开

下面是将 /root/ftptest 目录下的 haa.txt、hab.txt、ta.log、tb.log 文件上传到服务器的 /files 目录的步骤

上图省略了FTP登录输入帐号密码的步骤,其中第一条执行的命令是 ftp -i -v 192.168.70.20 48888

选项 -i 表示关闭交互提示,在批量上传的时候很有用, mput 批量上传的时候,会逐个文件调用 put上传命令进行上传, 如果没有关闭交互提示,每次上传文件的时候都需要人为输入 y 字符确认,当关闭了交互提示后,就能不间断的上传,直到所有的文件上传成功

  • 步骤说明
1、本地当前所处目录

2、服务器当前所处目录,然后进入 '/files' 目录

3、以二进制模式上传

4、批量上传文件,'mput' 是批量上传的命令,后面可以接 文件名或者通配符组成的文件名,它们之间用空格隔开,这里的意思是批量上传 'haa.txt、hab.txt、ta.log、tb.log '

   执行 'mput haa.txt hab.txt *.log' 命令之后,会逐个文件的上传到服务器
   
   每个文件都会有上传结果信息返回,从图中的结果可以看出,总共上传了 'haa.txt hab.txt ta.log  tb.log' 四个文件,全部都上传成功
   
 5、上传操作之后,通过 'nlist *' 命令确认上传结果是成功的
 
 6、退出客户端

一键上传

每次上传文件都需要输入一些重复的 FTP 命令其实是比较繁琐的操作,可以将这些重复又繁琐的命令合并到一个脚本中,变成一个一键上传的 shell 脚本,具体的内容如下:

#!/bin/sh

#FTP用户名
FTP_USER=mytest
#FTP密码
FTP_PAWD=12345678
#FTP服务器IP
FTP_IP=192.168.70.20
#FTP服务器侦听端口(命令端口)
FTP_PORT=48888
#文件上传到FTP服务器的哪个目录
FTP_PATH=files
#本地对当前目录
LOCAL_PATH=`pwd`

#传入参数校验
if [ $# != 1 ]; then 
  echo "param count error..please input file"
  exit 1
fi

echo "begin ftp $1 ..."

#关闭交互提示、禁止自动登录
ftp -v -i -n<<!
#与指定IP和端口的FTP服务器建立连接
open ${FTP_IP} ${FTP_PORT}
#验证FTP用户和密码
user ${FTP_USER} ${FTP_PAWD}
#以二进制模式传输文件
binary
#服务器目录切换到指定目录
cd ${FTP_PATH}
#切换本地目录
lcd ${LOCAL_PATH}
#上传文件 $1 表示执行脚本时传入的文件名
put $1
#断开连接,退出FTP客户端
bye
!

脚本中有详细的注释,就不再做额外的说明了,此脚本只提供了一个基础的一键上传的模版,而且一次只能上传一个文件,大家可以根据自身的需求去扩充或者调整

相关推荐

PC也能装MAX OS X

MACBOOK向来以其时尚的外观以及易用的OSX操作系统成为了时(zhuang)尚(bi)人士的最爱。但是其动不动就上万元的昂贵价格,也将一批立志时(zhuang)尚(bi)人士的拒之门外。但是最近...

一千多元的笔记本能买吗?英特尔11代+大屏幕,豆小谷值得选吗?

前言:有很多粉丝都问过本人,一千多元到底能买到什么样的笔记本?在此笔者只想说,这样的资金预算真的太低了!如果想买全新的,那大概率买的就是性能比较拉垮的上网本,比如搭载英特赛扬N系列、J系列处理器的轻薄...

首款配备骁龙X Elite处理器的Linux笔记本:采用KDE Plasma桌面环境

德国Linux硬件供应商TUXEDOComputers宣布正在开发一款配备高通骁龙XElite处理器(SnapdragonXEliteSoC)的ARM笔记本电脑,内部将该...

System76推出Gazelle Linux笔记本:配酷睿i9-13900H处理器

IT之家3月30日消息,主打Linux硬件的厂商System76于今天发布了新一代Gazelle笔记本电脑,共有15英寸和17英寸两个版本,将于3月30日接受预订,...

Kubuntu Focus Xe Gen 2笔记本发布,预装Linux系统

IT之家3月25日消息,KubuntuFocusXeGen2笔记本于近日发布,这是一款预装Kubuntu22.04LTSGNU/Linux发行版的轻薄本。上一代Kub...

这台Linux笔记本已用上英特尔12代酷睿,最高可选i7-1255U、卖1149美元起

Linux笔记本可能因为比较小众,一般都是拿Windows笔记本换个系统而来,硬件上也会落后同期Windows笔记本一两代,不过现在专门做Linux电脑的System76,推出了一款名为LemurP...

戴尔Inspiron 14 Plus骁龙笔记本迎新补丁,支持启动Linux

IT之家4月25日消息,科技媒体phoronix今天(4月25日)发布博文,报道称最新发布的Linux内核补丁,针对骁龙芯片的戴尔Inspiron14Plus笔记本,让其...

TUXEDO推出InfinityFlex 14二合一Linux笔记本,配i5-1335U

IT之家8月12日消息,Linux硬件企业TUXEDO当地时间本月2日推出了InfinityFlex14二合一Linux笔记本。该笔记本搭载2+8核的英特尔酷睿i5-...

登月探测器嫦娥使用什么操作系统,是Linux还是其它自主研发?

这是不是国家机密啊。事实什么样的不知道,但是从美国的探测器来看,就算不是也是相似的东西。下面我来说说我知道的。龙芯已经随北斗卫星上天了.就算登月探测器嫦娥是用"龙芯+Linux"也不出奇.没必要...

DNS分离解析实验

如果本文对你有帮助,欢迎关注、点赞、收藏、转发给朋友,让我有持续创作的动力目录一、分离解析概述二、实验需求三、实验步骤3.1双网卡服务器配置3.1.1添加两张网卡(内外网)3.1.2对两个网卡进...

一个小实验巩固下进程管理

先回顾下之前的三篇文章:Linux进程在内核眼中是什么样子的?Linux进程线程是如何创建的?Linux是如何调度进程的?通过这三篇文章的学习我们知道,无论内核进程还是用户进程,都是可以用task...

VMware Kali无线WIFI密码破解

WIFI破解前准备工作一张支持Kali系统监听的无线网卡VMware虚拟机安装好Kali系统(本实验用的是Kali2022版本)Kali系统下载、安装官方网站:https://www.kali.or...

python多进程编程

forkwindows中是没有fork函数的,一开始直接在Windows中测试,直接报错importosimporttimeret=os.fork()ifret==0:...

拔电源十台电脑藏后门!德国实验惊曝Windows致命漏洞

2025年4月15日,央视突然曝出一个超级大新闻!原来美国国家安全局通过黑龙江,往微软Windows系统里发送加密信息,激活了系统里藏着的后门程序,想破坏哈尔滨亚冬会!这消息一出来,大家才发现,竟然已...

深度探索RK3568嵌入式教学平台实战案例:设备驱动开发实验

一、产品简介TL3568-PlusTEB人工智能实验箱国产高性能处理器64位4核低功耗2.0GHz超高主频1T超高算力NPU兼容鸿蒙等国产操作系统二、实验目的1、熟悉基本字符设备的驱动程序...