Linux利用ftp命令上传下载文件

Linux中如何使用ftp命令,包括如何连接ftp服务器,上传or下载文件以及创建文件夹。虽然现在有很多ftp桌面应用(例如:FlashFXP),但是在服务器、SSH、远程会话中掌握命令行ftp的使用还是很有必要的。

ftp命令

使用格式:ftp [-v] [-d] [-i] [-n] [-g] [-s:filename] [-a] [-w:windowsize] [computer]

    -v:禁止显示远程服务器响应信息

              -n:禁止自动登录

    -i:多文件传输过程中关闭交互提示

    -d:启用调试,显示所有客户端与服务器端传递的命令

    -g:禁用文件名通配符,允许在本地文件和路径名中使用

         实例:ftp 122.122.122.122 2222

         输入用户名、密码,即可完成登录。

目录操作

  FTP命令可以列出、移动、创建文件夹。

  • ls -- 打印目录列表
  • !ls -- 查看本地目录
  • cd -- 改变目录
  • mkdir -- 创建文件夹

使用FTP下载文件

  在下载一个文件之前,首先需要使用lcd命令设定本地接收目录位置。

  • lcd -- 指定下载目录
  • get file.txt [file_new.txt] -- 下载文件 支持更改名字
  • mget *.txt -- 使用mget + 通配符下载多个文件

使用FTP上传文件

  • lcd -- 指定即将上传的文件,所在的本地目录。
  • put file.txt [file_new.txt] -- 上传文件 支持更改名字
  • put /home/data/cwh/file.txt -- 绝对路径
  • mput *.txt -- 上传多个文件

关闭FTP连接

  完成FTP工作后,为了安全起见需要关闭连接。有3个命令可以关闭连接:

  • bye -- 关闭连接
  • exit -- 关闭连接
  • quit -- 关闭连接
  • close -- 关闭连接

其他命令

  • ? -- 查询ftp命令
  • help -- 查询ftp命令
  • open [ftp server name] -- 和指定的远程Linux FTP服务器连接
  • user [user name] [password] -- 使用指定远程Linux FTP服务器的用户登录
  • pwd -- 显示当前路径
  • ls -- 列出目录和文件
  • dir -- 列出目录和文件(同上)
  • mkdir [foldname] -- 创建指定目录
  • rmdir [foldname] -- 删除指定目录
  • cd -- 切换目录
  • delete [filename] -- 删除文件
  • rename [filename] [newfilename] -- 重命名
  • close -- 关闭连接 但保留FTP命令参数提示
  • disconnect -- 关闭连接 但保留FTP命令参数提示(同上)
  • bye -- 结束连接
  • quit -- 结束连接
  • ! -- 直接从远程Linux FTP进入到本地Shell中
  • exit -- (接上步)从本地Shell环境返回远程Linux FTP中
  • !ls -- 列出本地机器目录和文件
  • lcd [foldname] -- 更改本地工作目录
  • binary -- 使用二进制传输文件
  • prompt -- 切换提示(使用mput或mget上传下载多个文件时避免提示)
  • case -- 在使用mget时,将远程主机文件名的大写转换为小写字母
  • cdup -- 进入远程主机目录的父目录
  • system -- 显示远程主机的操作系统类型
  • hash  -- 每传输1024字节,显示一个hash符号(#)
  • status -- 显示当前ftp状态

一个完整的shell脚本

文件上传脚本

#!/bin/bash
#by anding 20200620
#for upload UBF

function putftp
{
Pass='xxxxxxxxxxx'
ftp -n 10.254.104.23 21 <<!
user mcb3tran $Pass
bin 
#对端目录 cd
/opt/cbbs/pcs/all/data/outgoing put $1 bye ! } # 日志定义 log_date="$(date +'%Y%m%d')" log_dir="$HOME/log/$log_date/upload" log_file="$log_dir/put_%s_${log_date}.log" date1=`date +%Y%m` month1=`date -d "2 month ago" +%Y%m` file="SM"$month1"000.931" #生成文件,调用606接口生成文件 tpssreceive -i 606 sleep 20 #处理文件目录--本地 cd /jsyy/tpss/jt_upload/SM_temp file1=`ls /jsyy/tpss/jt_upload/SM_temp/*$date1*` sed -i s/$date1/$month1/g $file1 cat $file1>$file #文件校验 count1=`diff $file1 $file |wc -l` if [ $count1 -gt 0 ]; then echo "====================文件复制出错,请检查!!!!=====================" else echo "===================上传文件中================" rm $file1 fi #上传文件 putftp $file echo `date +"%Y/%m/%d %H:%M:%S"`" 上传${file1}文件成功" &>$(printf "$log_file" "SM") mv $file1 BAK_$file1
原文地址:https://www.cnblogs.com/yanl55555/p/13523674.html