shell之ftp上传下载

本文详细介绍了如何使用FTP命令进行文件传输,包括登录FTP服务器、删除文件、下载和上传文件等基本操作,同时提供了脚本批量上传和下载文件的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 登陆ftp服务器
ftp -n
open 192.168.1.122

或者

>ftp 192.168.1.122
Connected to 192.168.1.122.
220-FileZilla Server version 0.9.41 beta
220-written by Tim Kosse (Tim.Kosse@gmx.de)
220 Please visit http://sourceforge.net/projects/filezilla/
Name (192.168.1.122:admin1): test
331 Password required for test
Password: 
230 Logged on
Remote system type is UNIX.
ftp>
2. 从服务器上删除文件:
delete 文件路径+文件名
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下。

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

ftp> exit
221 Goodbye

ftp>quit
6. 脚本上传文件到服务器
#!/bin/bash
ftp -n<<!
open 192.168.1.122
user test test
cd /mobile/test/ycf
lcd /Volumes/wd/app/ycf
prompt
binary
put test.ipa test.ipa
sleep 5
close
bye
!

其中:binary #以二进制传输

传输模式默认ASCII模式,ASCII模式和Binary模式的区别是回车换行的处理,Binary模式不对数据进行任何处理,ASCII模式将回车换行转换为本机的回车字符,比如:UNIX下是\n,Windows下是\r\n,Mac下是\r。

缺少binary传输app,app文件比实际文件偏大,并且不能安装。

7. 脚本下载文件到服务器
#!/bin/bash
ftp -n<<!
open 192.168.1.171
user guest 123456
binary
cd /home/data
lcd /home/databackup
prompt
get a.sh a.sh 
close
bye
!
### 使用Shell脚本实现FTP文件上传与下载 #### FTP 文件上传 为了通过 Shell 脚本实现 FTP 文件上传,通常会创建一个包含 FTP 命令序列的批处理文件,并使用 `ftp` 或者更推荐的 `lftp` 工具来执行这些命令。下面是一个简单的例子展示如何编写用于上传文件到远程 FTP 服务器的 Shell 脚本。 ```bash #!/bin/bash HOST=&#39;ftp.example.com&#39; USER=&#39;your_username&#39; PASSWD=&#39;your_password&#39; FILE=&#39;/path/to/local/file&#39; echo "open $HOST" > ftpcmd.dat echo "user $USER $PASSWD" >> ftpcmd.dat echo "binary" >> ftpcmd.dat echo "put $FILE" >> ftpcmd.dat echo "bye" >> ftpcmd.dat ftp -n < ftpcmd.dat && rm ftpcmd.dat ``` 此脚本首先定义了一些变量以便于管理和修改配置参数[^1]。接着构建了一个名为 `ftpcmd.dat` 的临时文件,其中包含了要发送给 FTP 客户端的一系列指令。最后调用了 `ftp` 命令并传入该临时文件作为输入源,在完成操作之后删除了这个临时文件以保持环境整洁。 对于更加复杂的场景,比如需要支持断点续传或是更好的错误恢复机制,则建议采用功能更为强大的工具如 `lftp` 来代替标准的 `ftp` 命令: ```bash #!/bin/bash LFTP_HOST=&#39;ftp.example.com&#39; LFTP_USER=&#39;your_username&#39; LFTP_PASSWD=&#39;your_password&#39; LOCAL_DIR=&#39;/home/user/files/&#39; REMOTE_DIR=&#39;/remote/path/&#39; lftp -c "set net:max-retries 3; \ set net:timeout 60; \ open ${LFTP_HOST}; \ user ${LFTP_USER} ${LFTP_PASSWD}; \ mirror --reverse --delete --verbose ${LOCAL_DIR} ${REMOTE_DIR}" ``` 这段代码展示了怎样利用 `lftp` 进行双向同步(`mirror`)操作,它不仅能够上传本地更改过的文件到远端目录,还可以根据情况移除不再存在的项目,从而确保两个位置的数据一致性[^2]。 #### FTP 文件下载 同样地,如果目的是从 FTP 服务器上获取数据而不是上传的话,只需要调整上述脚本中的某些部分即可满足需求。这里给出一段用来批量下载指定路径下所有文件的例子: ```bash #!/bin/bash FTPHOST="ftp.example.com" FTPUSR="username" FTPPASS="password" REMOTEDIR="/remote/directory/" LOCALDIR="./local_directory/" # 创建目标存储位置(如果不存在) mkdir -p "$LOCALDIR" # 开始下载过程 curl -u "${FTPUSR}:${FTPPASS}" ftp://${FTPHOST}${REMOTEDIR}/* -o "${LOCALDIR}/%{name}" # 清理工作区 rm -f curlrc.txt ``` 在这个实例里选择了 `curl` 作为一个替代方案来进行 FTP 数据传输;相比传统的 `ftp` 命令而言,`curl` 提供了一种简洁的方式去处理 URL 风格的目标地址字符串,并且可以直接控制输出文件名模式[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值