Linux sftp命令用法总结
sftp是Secure File Transfer Protocol的缩写,是基于SSH协议的安全文件传输工具,相比传统的ftp,它在传输过程中对所有数据进行了加密,避免了明文传输带来的安全风险。sftp命令可以在本地主机和远程服务器之间安全地传输文件、管理目录,是Linux系统运维中常用的文件操作工具之一。
sftp连接远程服务器
使用sftp连接远程服务器的基本语法如下:
sftp [选项] [用户名@]远程主机地址[:端口]
最常用的连接方式是指定用户名和远程主机IP或域名,示例如下:
# 连接远程服务器,默认使用当前本地用户名,端口为22 sftp 192.168.0.100 # 指定用户名连接远程服务器 sftp user@192.168.0.100 # 指定端口连接(如果远程服务器SSH端口不是默认的22) sftp -P 2222 user@192.168.0.100
连接成功后会进入sftp交互模式,终端提示符会变为sftp>,此时可以输入sftp相关命令操作文件。
sftp常用交互命令
本地和远程路径切换
sftp交互模式下可以分别切换本地和远程的工作目录,相关命令如下:
pwd:查看远程服务器当前工作目录lpwd:查看本地当前工作目录cd 目录路径:切换远程服务器的工作目录lcd 目录路径:切换本地的工作目录
示例如下:
# 查看远程当前目录 sftp> pwd Remote working directory: /home/user # 切换到远程的/tmp目录 sftp> cd /tmp # 查看本地当前目录 sftp> lpwd Local working directory: /home/local_user/documents # 切换到本地的~/downloads目录 sftp> lcd ~/downloads
文件传输操作
文件传输是sftp的核心功能,支持从远程下载文件到本地,以及从本地上传文件到远程服务器。
下载文件(远程到本地)
get 远程文件路径:下载单个文件到本地当前目录,文件名保持不变get 远程文件路径 本地文件路径:下载远程文件到指定的本地路径,可重命名文件mget 远程文件1 远程文件2 ...:批量下载多个远程文件到本地当前目录
示例如下:
# 下载远程的test.txt到本地当前目录 sftp> get test.txt # 下载远程的data.log到本地并重命名为data_backup.log sftp> get data.log /home/local_user/backup/data_backup.log # 批量下载远程目录下所有.txt文件 sftp> mget *.txt
上传文件(本地到远程)
put 本地文件路径:上传单个本地文件到远程当前目录,文件名保持不变put 本地文件路径 远程文件路径:上传本地文件到指定的远程路径,可重命名文件mput 本地文件1 本地文件2 ...:批量上传多个本地文件到远程当前目录
示例如下:
# 上传本地的config.ini到远程当前目录 sftp> put config.ini # 上传本地的image.png到远程的/var/www/images目录并重命名为logo.png sftp> put image.png /var/www/images/logo.png # 批量上传本地所有.jpg文件到远程当前目录 sftp> mput *.jpg
目录和文件管理
sftp交互模式下也支持对远程和本地的目录、文件进行基础管理操作:
ls:列出远程当前目录下的文件和子目录lls:列出本地当前目录下的文件和子目录mkdir 目录名:在远程服务器创建新目录lmkdir 目录名:在本地创建新目录rm 文件名:删除远程服务器上的文件rmdir 目录名:删除远程服务器上的空目录rename 旧文件名 新文件名:重命名远程服务器上的文件
示例如下:
# 列出远程当前目录内容 sftp> ls # 在远程创建test_dir目录 sftp> mkdir test_dir # 删除远程的old.log文件 sftp> rm old.log # 重命名远程的file1.txt为file_new.txt sftp> rename file1.txt file_new.txt
其他常用命令
help或?:查看sftp支持的所有交互命令及说明exit或bye或quit:退出sftp交互模式,断开连接version:查看当前sftp客户端的版本信息df -h:查看远程服务器的磁盘空间使用情况
非交互模式使用sftp
除了进入交互模式操作,sftp也支持在命令行直接执行单个操作,适用于脚本自动化场景,语法如下:
sftp [选项] [用户名@]远程主机地址[:端口] 命令
示例如下:
# 非交互模式下下载远程文件到本地 sftp user@192.168.0.100 "get /home/user/report.pdf /tmp/" # 非交互模式下上传本地文件到远程 sftp user@192.168.0.100 "put /tmp/local_data.txt /home/user/"
sftp与scp的区别
sftp和scp都是基于SSH的安全文件传输工具,二者的主要区别如下:
| 对比项 | sftp | scp |
|---|---|---|
| 工作模式 | 交互式,支持会话内多次操作 | 非交互式,单次命令完成传输 |
| 功能丰富度 | 支持文件管理、目录操作、断点续传等 | 仅支持基础的文件上传下载 |
| 适用场景 | 需要多次文件操作、目录管理的场景 | 单次快速传输文件的场景 |
注意事项
使用sftp连接远程服务器时,需要确保远程服务器的SSH服务正常运行,且对应的端口(默认22)开放
如果远程服务器修改了SSH默认端口,连接时需要用
-P指定端口,注意是大写P,和scp的小写p区分sftp传输大文件时如果连接中断,部分新版本sftp支持断点续传,可通过
reget(下载断点续传)和reput(上传断点续传)命令实现操作远程文件时需要注意权限问题,避免删除重要文件或操作权限不足的文件
提示:如果需要了解sftp更多的参数和用法,可以通过
man sftp命令查看完整的手册文档。