跳转至

ftp sftp scp 文件传输

概要: 利用FTP, SFTPSCP在Linux主机之间传输文件。

创建时间: 2022.12.18 21:33:38

更新时间: 2023.07.28 23:12:50

FTP

文件传输协议(File Transfer Protocol, FTP)是一个用于在计算机网络上在客户端和服务器之间进行文件传输的应用层协议。

利用curl工具,使用FTP传输文件的示例如下:

上传文件

Bash
echo "test" > testfile.txt
curl ftp://192.168.2.17/ -T ./testfile.txt --user tester:password

列出文件

Bash
curl ftp://192.168.2.17/ --user tester:password
如果使用了特定的ftp端口(如5566),命令改为如下:
Bash
curl ftp://192.168.2.17:5566/ --user tester:password

下载文件

Bash
curl ftp://192.168.2.17/testfile.txt -o local_testfile.txt --user tester:password

删除文件

Bash
curl ftp://192.168.2.17/ -X 'DELE testfile.txt' --user tester:password

SFTP

SSH文件传输协议(SSH File Transfer Protocol, SFTP)是一种通过SSH通道进行的安全文件传输协议。

SFTP的命令分为三类,分别针对远程主机,本地主机和上传下载操作。

登录SFTP服务器

Bash
1
2
3
4
sftp ${user}@${host} -P ${port}

# 示例
sftp lzwang@192.168.2.247 -P 5543
以下命令在登录SFTP服务器后,键入?即可看到官方使用说明。

SFTP远程命令

  1. 列出文件: ls或者dir
  2. 新建目录: mkdir ${dir}
  3. 删除空目录: rmdir ${empty_dir}
  4. 删除文件: rm ${file}
  5. 显示当前目录: pwd
  6. 切换目录: cd ${dir}
  7. 重命名文件/目录: rename ${old_name} ${new_name}
  8. 退出: bye, exit或者quit

SFTP本地命令

  1. 列出文件: lls
  2. 新建目录: lmkdir ${dir}
  3. 显示当前目录: lpwd
  4. 切换目录: lcd ${dir}

SFTP上传下载命令

上传

如果不填写${remote}参数,则默认地址为远程当前目录

  1. 上传本地文件到远程: put ${local_file} ${remote_dir}
  2. 上传本地文件夹到远程: put -R ${local_folder} ${remote_dir}

下载

  1. 下载远程文件到本地: get ${remote_file} ${local_dir}
  2. 下载远程文件夹到本地: get -R ${remote_file} ${local_dir}

SCP

安全复制(Secure copy, SCP)是指在本地主机与远程主机或者两台远程主机之间基于Secure Shell(SSH)协议安全地传输电脑文件。

注意:如果不需要指定端口(使用默认SSH端口),去掉-P ${port}参数即可,下面示例中使用12345端口号。

上传

Bash
1
2
3
4
5
从本地上传文件到远端
scp -P 12345 /local_folder/abc.py root@192.168.2.177:/remote_folder/

从本地上传文件夹到远端
scp -P 12345 -r /local_folder/ root@192.168.2.177:/remote_folder/

下载

Bash
1
2
3
4
5
从远端下载文件到本地
scp -P 12345 root@192.168.2.177:/remote_folder/xyz.py /local_folder

从远端下载文件夹到本地
scp -P 12345 -r root@192.168.2.177:/remote_folder /local_folder