Skip to main content

4.FTP工具使用

简介

FTP(File Transfer Protocol)是一种用于在计算机网络上进行文件传输的标准协议。它允许用户在客户端和服务器之间传输文件,包括上传(从客户端到服务器)和下载(从服务器到客户端)操作。以下是FTP的一些详细解释:

工作原理

  • FTP基于客户端-服务器模型工作。客户端通过FTP客户端程序与FTP服务器建立连接,然后进行文件传输。
  • FTP使用两个TCP连接进行通信:一个控制连接(Control Connection)和一个数据连接(Data Connection)。
  • 控制连接用于发送命令和接收响应,如登录、切换目录、上传、下载等操作;数据连接用于传输实际的文件数据。

连接模式

FTP支持两种连接模式:主动模式(Active Mode)和被动模式(Passive Mode)。

  • 主动模式,客户端在进行数据传输时主动发起连接到服务器端的数据端口。
  • 被动模式,服务器端在进行数据传输时主动打开一个数据端口,客户端连接到该端口进行数据传输。

授权认证

  • FTP服务器通常需要用户进行身份认证才能访问,常见的认证方式包括用户名和密码认证,以及匿名访问。
  • 匿名访问允许用户使用公共用户名(如"anonymous")和任意电子邮件地址作为密码进行登录。

工作端口

FTP的控制连接默认使用TCP端口21进行通信。

数据连接的端口号是动态分配的,根据FTP服务器的不同实现和配置方式,数据连接的端口号可以是任意的。在主动模式下,FTP服务器使用端口20进行数据连接,而在被动模式下,FTP服务器会在一个范围内动态分配端口号,并告知客户端用于数据传输。

安全性

  • 传统的FTP协议使用明文传输,存在安全风险,如密码被窃听和文件被篡改。
  • 为了增加安全性,可以使用FTP over SSL/TLS(FTPS)或SSH File Transfer Protocol(SFTP)等安全协议进行加密传输。

操作命令

登录授权

USER username		#用指定的用户名登录到FTP服务器
PASS password #用指定的密码登录到FTP服务器

目录操作

pwd				#显示当前工作目录的路径
cd directory #切换到指定的远程目录
lcd #切换本地目录
ls [option][[directory] #列出指定目录下的文件和子目录。如果不指定目录,则列出当前工作目录下的内容。

mkdir directory #创建新的目录
rmdir directory #删除指定的目录

示例

ls -l  				#显示当前目录详细信息
lcd d:\ #切换本地目录到D盘

文件操作

get filename		#从服务器下载指定的文件
put filename #上传本地文件到服务器

mget *filename #批量下载文件,如 *.txt 所有txt文件
mput *filename #批量上传文件
delete filename #删除服务器上的指定文件,可使用缩写 del file

示例:

del test.txt		#删除文件
del "test1 - 副本.txt" #删除含中文或者空格文件名需要加引号

退出

quit			#退出FTP会话并关闭连接

shell脚本自动上传ftp文件

用于将文件打包后自动上传到FTP服务器

#!/bin/bash

# FTP服务器信息
ftp_server="ftp.example.com"
ftp_user="username"
ftp_password="password"

# 本地文件路径和文件名
local_file="/path/to/local/file.txt"

# 远程目录路径
remote_dir="/path/to/remote/directory"

# 使用ftp命令上传文件
ftp -n $ftp_server <<END_SCRIPT
quote USER $ftp_user
quote PASS $ftp_password
cd $remote_dir
put $local_file
quit
END_SCRIPT
  • <<END_SCRIPTEND_SCRIPT之间的部分是一个Here文档,用于在脚本中输入多行命令以便与FTP服务器进行交互。
  • FTP支持两种连接模式:主动模式(Active Mode)和被动模式(Passive Mode)。
  • 在主动模式中,客户端在进行数据传输时主动发起连接到服务器端的数据端口。
  • 在被动模式中,服务器端在进行数据传输时主动打开一个数据端口,客户端连接到该端口进行数据传输。