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 $1bye
!
}#日志定义
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 606sleep20
#处理文件目录--本地
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