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

如何用 ftp 实现一键上传

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

简介

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
!

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

相关推荐

KaOS 2025.05版本发布:全面拥抱Qt6,彻底告别Qt5

KaOSLinux2025.05版本重磅发布:全面拥抱Qt6,开启KDE生态新篇章继2025.03版本发布两个月后,专注于KDE桌面环境、采用XFS文件系统的滚动发行版Li...

基于FIMC接口的CMOS摄像头驱动分析与设计

摘要:目前的嵌入式系统中,USB摄像头使用比较普遍,但其应用会受到传输速度的限制。本文采用一款高速CMOS摄像头,其驱动利用S3C6410内置的FIMC接口技术,采用DMA和ping-pong缓冲...

没错是微软 推出基于Linux的交换机系统

2015-09-2205:59:59作者:郑伟你没看错,为了提升自身Azure云数据中心内网络设备的兼容性及开放性,微软也开始推出基于Linux的网络交换机系统了。这个被称为AzureCloud...

Linus Torvalds 宣布首个 Linux 内核 6.16 候选版本

Linux内核负责人兼创始人LinusTorvalds宣布关闭合并窗口,该窗口用于将主要新功能添加到内核中,并开始发布Linux6.16候选版本,从候选版本1(Linux6.16-r...

Linux内核漏洞将影响Haswell架构服务器

在infoq网站上,GilTene最近报告一个十分重要,但并不为人知Linux内核补丁,特别对采用Haswell架构的Linux系统用户和管理员应该特别关注。报告提醒RedHat发行版的用户(包括...

关于Linux性能调优中网络I/O的一些笔记

写在前面和小伙伴分享一些Linux网络优化的笔记,内容很浅,可以用作入门博文内容结合《Linux性能优化》读书笔记整理涉及内容包括常用的优化工具(mii-tool,ethtool,ifconfig,i...

国产操作系统- Veket Linux(国产操作系统之光银河麒麟阅读理解)

VeketLinux是一个随身的可装在U盘的Linux操作系统。主要面向桌面用户。它的设计重点是提供简单易用且稳定的操作系统,同时保持更新和开发。它具有强大的功能集和广泛的用户基础,可满足...

AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术

IT之家5月21日消息,科技媒体linuxiac昨日(5月20日)发布博文,报道称代号为SageMargay的AlmaLinux9.6发行版已上线,距上一版本9.5发...

跟老韩学Linux运维架构师系列,vim与view的基本使用

下面是vim和view的10个实例:用vim打开一个新文件:vimnewfile.txt这个命令将会在vim编辑器中打开一个新文件。在vim中移动光标:使用方向键或h、j、k、l键来移动光标。在v...

malloc底层原理剖析——ptmalloc内存池

malloc底层为什么是内存池malloc大家都用过,其是库函数。我们都知道库函数在不同的操作系统中其实执行的是系统调用,那么malloc在Linux上执行的是哪个系统调用呢?brk()和mmap()...

Zen 6架构首秀Linux,AMD加速下一代处理器布局

IT之家5月15日消息,科技媒体Phoronix昨日(5月14日)发布博文,报道称AMD已经开始为下一代“Zen6”处理器做准备,已为该构架向Linux内核提交了首个补丁,...

为何越来越多企业转向安卓/Linux工业平板电脑?答案在这里

在工业领域,设备的稳定性至关重要,尤其是工业平板电脑,常年运行在高温、粉尘、潮湿等复杂环境下,一旦系统崩溃或者卡顿,可能会影响整个生产流程。那么,为什么越来越多的企业选择安卓/Linux工业平板电脑,...

从3ms到0.8ms:ARM+Linux如何重塑工业控制实时性标杆

在智能制造领域,产线控制系统对实时性的要求越来越高。根据行业调研数据,超过65%的工业现场出现过因系统响应延迟导致的故障停机,平均每次停机造成的直接损失高达2-8万元。传统x86架构搭配Windows...

看Linux如何&quot;挖坑种树&quot;

写在前面,有人看我的Linux文章说技术难度不深,笔者不是不想写深,笔者是觉得Linux难就难在入门,入门之后你就知道如何上网查询你所要要解决的Linux需求。如果你已入门,此文已对你无用,请略过此...

AlmaLinux 9.6 发布,新增功能亮点纷呈!

距离上一版本AlmaLinux9.5发布六个月后,基于5.14内核的AlmaLinux正式宣布其企业级Linux发行版的9.x系列第六个更新——AlmaLinux9.6(Sag...