Shell脚本实现FTP/SFTP上传下载文件

shell脚本上传文件到ftp服务器,shell脚本实现FTP自动上传文件 -----多个文件-----#!/bin/bashftp -n<open 172.20.10.242user logftp logftpbinarycd /data/ftp/pcidata/pcilogftp/AppFile/loglcd /data/localaccpromptmget *.gzclosebye!----单个文件-----#!/bin/bashftp -n<open ... 阅读详情
AI摘要

本文介绍如何使用Linux下的Shell脚本实现FTP文件的自动上传和下载。包括批量和单个文件的操作,以及登录FTP服务器的详细步骤和命令解释。

Linux下使用Shell脚本实现FTP自动上传和下载文件
登录FTP实现下载文件功能
FTP服务器:10.11.10.11 
FTP路径:Down 
本地路径: ./ 
将文件从FTP下载到本地的脚本如下:

批量下载脚本代码:

#从FTP上批量下载文件到本地
#!/bin/sh
ftp -v -n 10.11.10.11<<EOF
user ftpuser ftppwd
binary
cd Down
lcd ./
prompt
mget *
bye
EOF
echo "download from ftp successfully"

下载单个文件脚本代码:

#从FTP上下载单文件到本地
#!/bin/sh
ftp -v -n 10.11.10.11<<EOF
user ftpuser ftppwd
binary
cd Down
lcd ./
prompt
#get down.txt
get down.txt note.txt
bye
EOF
echo "download from ftp successfully"

登录FTP实现上传文件功能
FTP服务器:10.11.10.11 
FTP路径:Up 
本地路径: ./ 
将文件从本地传到FTP的脚本如下:

批量上传脚本代码:

#从本地向FTP批量上传文档
#!/bin/sh
ftp -v -n 10.11.10.11<<EOF
user ftpuser ftppwd
binary
hash
cd Up
lcd ./
prompt
mput *
bye
#here document
EOF
echo "commit to ftp successfully"

上传单个文件脚本代码:

#从本地向FTP上传单个文档
#!/bin/sh
PUTFILE = up.txt
ftp -v -n 10.11.10.11<<EOF
user ftpuser ftppwd
binary
cd Up
lcd ./
prompt
put $PUTFILE
bye
#here document
EOF
echo "commit to ftp successfully"

命令解释
登录FTP
ftp -i -n 10.11.10.11 << EOF
1
<< 是使用即时文件重定向输入 
EOF是即时文件的标志它必须成对出现,以标识即时文件的开始和结尾。 
ftp常见的几个标志有:

-d:使用调试模式,但必须编辑 /etc/syslog.conf 文件并添加以下中的一项:user.info FileName 或 user.debug FileName。 
-g:禁用文件名中的元字符拓展,即取消全局文件名。 
-i :关闭多文件传输中的交互式提示。 
-n:防止在起始连接中的自动登录。否则, ftp 命令会搜索 $HOME/.netrc 登录项,该登录项描述了远程主机的登录和初始化过程。 
-v:显示远程服务器的全部响应,并提供数据传输的统计信息,即在程序运行时显示详细的处理信息。

输入FTP用户名和密码
user ftpuser ftppwd
1
ftpuser:登录FTP时的用户名 
ftppwd:登录FTP时的密码

通过binary命令传输文件
binary
1
FTP文件传输类型有: ascii、binary、ebcdic、image、local M 和 tenex。

– ascii:将文件传输类型设置为网络 ASCII。此类型为缺省值,即默认使用ascii方式进行传输。 
– binary:将文件传输类型设置为二进制映像。需要使用binary方式传输的文件类型有ISO文件、可执行文件、压缩文件、图片等。此类型可能比 ASCII 传送更有效。 
– ebcdic:将文件传输类型设为 EBCDIC。 
– image:将文件传输类型设置为二进制映像。此类型可能比 ASCII 传送更有效。 
– local M:将文件传输类型设置为本地。M 参数定义每计算机字位的十进制数。此参数没有缺省值。 
– tenex:将文件传输类型设为 TENEX 机器需要的类型。

切换散列符号 (#) 打印
hash


当用get或put命令传送一个数据块时,让FTP显示一个#,这是看得见的确定数据在传输的信号,在用户不确信网络是否工作时有用。当传输很大的文件时,如果FTP已显示这种信息,表示传输正在进行。hash命令是一个布尔变量式的命令,用hash命令打开显示#开关,再用hash命令关闭显示。

切换目录
分别在本地和FTP上进入对应文件夹下: 
到FTP上对应路径(这里表示进入Dwon文件夹下):

cd ./Down

到本地的对应路径(这里表示在当前文件夹下):

lcd ./

切换交互式提示
prompt

使用mget或mput时,prompt命令让FTP在传输每个文件前进行提示,这样防止覆盖已有的文件。若发出prompt命令时已经启动了提示,FTP将把提示关掉,此时再传输所有的文件则不会有任何提问。

文件传输
下载文件
下载多个文件: 
格式:mget [remote-files] 
例如:获取远端所在文件夹下所有文件

mget *
#或
mget *.*

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

下载单个文件: 
格式:get [remote-file] [local-file] 
例如:获取远端FTP上的a.txt文件

get a.txt


上传文件
上传多个文件: 
格式:mput local-files 
例如:将所在文件夹下所有文件上传到FTP上

mput *

上传单个文件: 
格式:put local-file [remote-file] 
例如:将本地a.txt文件上传到远端FTP上

put a.txt

断开连接
bye

结束文件传输会话并退出 ftp 命令,与quit命令相同。

分界符标志
... << EOF
#execute shell
EOF
EOF只是一个分界符标志,完全可以用abc, ! 等替换,也一样的功能,只是大家都习惯用EOF来表示。 
<<用法:当shell看到<<的时候,它就会知道下一个词是一个分界符。在该分界符以后的内容都被当作输入,直到shell又看到该分界符(位于单独的一行)。因此分界符可以是定义的任何字符串。

--------------------- 

使用linux 的shell脚本进行sftp文件上传与下载

批量上传:

#!/bin/bash

#SFTP配置信息
#用户名
USER=root
#密码
PASSWORD=5EYS40T04BMF
#待上传文件根目录
SRCDIR=/u02/dab/sftpFiles
#FTP目录
DESDIR=/u01/sftpFiles
#IP
IP=192.168.10.11
#端口
PORT=22022

#获取文件
cd ${SRCDIR} ;
#目录下的所有文件
#FILES=`ls` 
#修改时间在执行时间五分钟之前的xml文件
FILES=`find ${SRCDIR} -mmin -50 -name '*.xml'`

for FILE in ${FILES}
do
    echo ${FILE}
#发送文件 (关键部分)
lftp -u ${USER},${PASSWORD} sftp://${IP}:${PORT} <<EOF
cd ${DESDIR}/
lcd ${SRCDIR}
put ${FILE}
by
EOF

done

单文件下载:

#!/bin/bash

USER=root
#密码
PASSWORD=5EYS40T04BMF
#下载文件目录
SRCDIR=/u02/dab
#FTP目录(待下载文件目录)
DESDIR=/u01/sftpFiles
#银联IP
IP=192.168.1.10
#端口
PORT=22022

lftp -u ${USER},${PASSWORD} sftp://${IP}:${PORT}<<EOF
cd ${DESDIR}
lcd ${SRCDIR}
#需要下载的文件为text.xml
get text.xml
by
EOF
--------------------- 

 

linux下用shell脚本实现sftp文件上传 先实现文件上传,文件下载过后在和大家分享。先把代码贴出来,亲测可用的,你们用需要改一些用户名,密码,待上传文件目录、sftp目录等。 #!/bin/bash #SFTP配置信息 #用户名 USER=jijian #密码 PASSWORD=jj #待上传文件根目录 SRCDIR=/home/databackup #SFTP目录 DESDIR=/home/jijian #IP IP=10.2.5.142 #端口 PORT=22 #获取文件 cd ${SRCDIR} ; #目录下的所有文件 #FILES=`ls 阅读详情

相关推荐

Shell通过except实现sftp文件上传下载(定时执行)

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

qq_42831501的博客 1928

shell脚本FTP文件传输

shell脚本实现ftp服务文件传输

qq_30895747的博客 3180

CODESYS文件操作进阶:用批处理脚本实现PLC与PC的实时数据备份(Windows/Linux双平台)

本文详细介绍了如何利用批处理脚本实现CODESYS平台下PLC与PC的实时数据备份,涵盖Windows和Linux双平台方案。通过FTP协议和差异同步技术,解决文件路径乱码、异常中断续传等工业自动化常见问题,提供企业级功能增强和安全加固措施,显著提升数据备份效率和可靠性。

weixin_29233857的博客 374

sftp文件下载三种方式(shell)

【代码】sftp文件下载三种方式(shell)

lenglovexu的博客 7902

shell脚本sftp上传文件

shell脚本sftp上传文件

xiejunna的博客 4269

工创赛智能搬运小车实战:视觉定位、底盘控制与RTOS调度

智能搬运系统是嵌入式控制与机器视觉融合的典型工程实践,其核心在于视觉定位精度、运动控制稳定性与实时任务调度能力。在有限算力(如STM32H7)、低功耗约束和结构化场景下,传统CV方法(如FAST+RANSAC)比轻量级深度学习更具鲁棒性与实时性;而底盘控制需穿透PID表层,直击死区补偿、编码器硬件滤波与负载自适应等物理层细节;RTOS则不是炫技工具,而是保障多模块时序确定性的刚需——尤其在视觉-控制-执行强耦合链路中,任务优先级、事件组通信与栈安全直接影响系统存活。本文聚焦全国大学生工程训练竞赛(工创赛)真

weixin_29194693的博客 262

sftp ftp文件同步方案

sftp ftp文件同步方案 1. 需求 1.1实现网关服务器的ftp服务器的/batchFileRequest目录下文件向徽商所使用的sftp服务器的/batchFileRequest目录同步文件 1.2实现徽商所使用的sftp服务器的/batchFileResult目录文件向网关服务器的ftp服务器/batchFileResult目录同步文件 1.3实现徽商所使用的sftp服务器的/s...

weixin_30808693的博客 875

STM32硬件SPI驱动W5500以太网模块全流程(附避坑指南)

本文详细介绍了STM32硬件SPI驱动W5500以太网模块的全流程,包括硬件架构设计、SPI接口选型、官方驱动移植、网络协议栈配置与优化等关键步骤。通过实战案例和性能对比数据,帮助开发者快速实现稳定高效的网络连接,特别提供了常见问题排查指南和性能调优技巧。

weixin_29194693的博客 268

【服务器入门】Linux系统基础知识

总结Linux系统基础知识

WW、forever的博客 1180

知识图谱初步学习(一)——本体+Protege新手学习

文章目录前言(本体详解)1.本体概念2.本体分类3.本体组成4.本体构建方法一、protege简介二、软件使用步骤1.安装2.使用三、问题解决方案汇总 前言(本体详解) 在开始学习知识图谱的过程中,首先就是要了解什么是本体(ontology)。 1.本体概念 本体的概念最初源自于哲学领域,在哲学中的定义为“对世界上客观事物的系统描述,即存在论”。哲学中的本体关心的是客观现实的抽象本质。而在计算机领域,本体是可以在语义的层次上来对知识进行描述,可以看做是某一个领域知识的通用模型。 本体是从客观世界中抽象出来

qq_43654669的博客 3万+

pycharm报错cannot start the IED:Error occurred during initialization of VMagent library failed...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1925

自动化部署项目到服务器

如果你准备上传项目到服务器(ftp 或者 Sftp服务器Sftp和ftp 区别、工作原理等(汇总ing)),那么开始阅读吧,希望会对你有所帮助。

Fa(ye)iryland I(a)n Reality(FIR-现实中的仙境)[2017前端路] 439

XCP实战系列介绍09-基于Vehicle Spy进行XCP测量步骤详解

详细介绍如何使用Vehicle Spy进行XCP测量

initiallizer的博客 1390

Linux随记(九)

注意事项:无外网/离线环境下,所需的bclinux euler的rpm包。

Nightwish5的博客 1624

Open3D 使用CPD算法对点云配准【2025最新版】

Coherent Point Drift相干点漂移算法实现点云配准(python代码)博客长期更新,本文最近更新时间为:2025年2月2日。

点云侠的博客 8万+

Android 车载开发深度解析:CarPropertyManager 核心机制与实践指南

摘要: Android Automotive OS中,CarPropertyManager作为车载信息娱乐系统的核心组件,连接应用层与车辆硬件(如车速、油量等),其架构基于分层设计(App→CarAPI→VHAL→ECU),采用发布-订阅模式实现高效数据通信。通过HIDL/AIDL跨进程交互及共享内存优化,延迟可降至2ms以下。安全机制包括分级权限控制(VISIBLE/PROTECTED/SYSTEM_RESTRICTED)和HMAC防篡改。开发时需注意监听器生命周期管理、事件合并降负载及低功耗适配。

郑伟强dev的专栏 344

FTP与SFTP传输文件的Python、shell脚本

在工作中我们经常遇到在不同的电脑之间传输文件,有时是同一网络下,有时是不同的网络之间传输文件,甚至是向客户传输文件。本文主要介绍常用的两种传输方式:FTP和SFTP,以及Python和shell脚本实现。或许你会说,传文件嘛,U盘拷一下喽,QQ、微信、邮箱等都可以呀!是的,方法有很多,但是如果每天都要你定时传一份文件给对方呢?你天天定时去插U盘拔U盘吗?对于同一网络之间的电脑,我们可以在一台机器上设置一个共享目录,然后其他的电脑挂载这一个共享目录,这样就不用互传了。

追光的鲲的博客 5419

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

使用shell脚本下载sftp文件

功能:shell脚本实现sftp自动登录并下载文件 系统环境:centos7 使用到的工具:lftp (安装方式 yum -y install lftp) lftp:lftp 是一个功能强大的下载工具,它支持访问文件的协议: ftp, ftps, http, https, hftp, fish.(其中ftps和https需要在编译的时候包含openssl库)。llftp的界面非常想一个shell: 有命令补全,历史记录,允许多个后台任务执行等功能,使用起来非常方便。它还有书签、排队、镜像、断点续传、多进程下

Jepson的博客 9777

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

sftp shell 批量上传文件_shell脚本进行sftp、ftp文件批量上传与下载

SFTP传送:若使用SecureCRT,按下ALT+P开启新的会话即进行sftp操作输入help命令,显示该SFTP提供所有的命令cd 路径 更改远程目录到“路径”lcd 路径 更改本地目录到“路径”exit 退出 sftphelp ...

weixin_36423062的博客 1976

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

hive导出数据FTP和SFTP的shell脚本实现文件的传输

1.脚本入参 /home/bdp/shangeshishi/shellTest/exportTargrp.sh 10.45.47.63 dauser dauser /work/dauser/da/test/ "select * from smart_test.ed3_prd_inst_inject_label_ext0 limit 100" /home/bdp/shangeshishi/she...

SimpleSimpleSimples的博客 1361

sftp批量下载文件的shell脚本

Sftp不同于ftp,不能将密码直接编码进程序指令(sftp没有提供选项如 -i ),因为使用sftp指令,会自动请求用户输入密码,所以输入密码的方式就成为难点,在shell脚本中sftp输入密码的方式有三种: 1. lftp方式 LFTP是一款非常著名的字符界面的文件传输工具(如果没有该工具,需要预先安装),支持FTP、HTTP、FISH、SFTP、HTTPS和FTPS协议,命令: lf...

weixin_39309402的博客 5025

shell脚本--ftp上传和sftp上传

使用shell脚本,上传文件到指定ftp服务器或者sftp服务器,代码如下: 注意:第二个EOF,必须是顶格写,在一行的最开始位置,之前不可有空格,否则会报错 核心代码如下: EOF 中,cd命令是操作远程机子上的,(ftp或者sftp) lcd是操作,本地机子上的命令: ftp服务器: #开发 SFTP_HOST=10.19.105.122 SFTP_PORT=21 SFTP_US...

RUIMENG061511332的博客 7137

Shell脚本实现FTP上传下载文件

Linux下使用Shell脚本实现FTP自动上传和下载文件Linux下使用Shell脚本实现FTP自动上传和下载文件 登录FTP实现下载文件功能 批量下载脚本代码 下载单个文件脚本代码 登录FTP实现上传文件功能 批量上传脚本代码 上传单个文件脚本代码 命令解释 登录FTP 输入FTP用户名和密码 通过binary命令传输文件 切换散列符号 打印 切换目录 切换交互式提示 文件传输 断开连接 分界符标志

煊琦的优快云小窝 4万+
上一篇: linux下如果指令太长,怎么换行输入;怎么快速删除整行命令;怎么快速移动到命令最前或者最后
下一篇: Java Jar包压缩、解压使用指南
shadow_zed
博客等级 码龄10年 6289粉丝 68原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值