SSH(Secure Shell)是一种加密的网络协议,常用于远程登录和文件传输,在SSH环境下,拷贝文件主要通过scp(secure copy)和sftp(SSH file transfer protocol)两种命令实现,rsync(remote synchronization)工具也可结合SSH使用,适合增量同步场景,以下是具体命令用法和场景说明。
scp命令:快速单次文件/目录拷贝
scp基于SSH协议,通过加密传输保障安全性,适合小文件或一次性拷贝,语法格式为:scp [选项] 源文件 目标地址
源文件/目标地址格式:本地路径(如/home/file.txt
)或远程路径(如user@host:/path/to/file
)。
常用选项及场景
选项 | 作用 | 示例 |
---|---|---|
-r |
递归拷贝目录 | 本地目录→远程:scp -r /local/folder user@remote:/remote/folder |
-P |
指定SSH端口(默认22,需大写) | scp -P 2222 file.txt user@remote:/home/ |
-p |
保留文件权限、时间戳 | scp -p file.txt user@remote:/home/ |
-C |
启用压缩(适合大文件) | scp -C large_file.zip user@remote:/home/ |
-v |
显示详细传输过程(调试用) | scp -v file.txt user@remote:/home/ |
典型用例
- 本地→远程:拷贝本地文件到远程服务器指定目录
scp /home/user/file.txt root@192.168.1.100:/opt/
- 远程→本地:从远程服务器下载文件到本地
scp root@192.168.1.100:/opt/file.txt /home/user/
- 远程→远程:通过本地主机中转,直接在两台远程服务器间拷贝(避免本地存储)
scp user1@host1:/file.txt user2@host2:/backup/
sftp命令:交互式文件管理
sftp是SSH的文件传输协议,提供类似FTP的交互式界面,支持上传、下载、删除、目录操作等,适合批量管理或复杂场景,通过sftp user@host
登录后,进入命令行交互模式:
常用交互命令
命令 | 作用 | 示例 |
---|---|---|
get |
下载远程文件到本地 | get remote_file.txt /home/local/ |
put |
上传本地文件到远程 | put local_file.txt /home/remote/ |
lcd |
切换本地目录 | lcd /home/user/download |
cd |
切换远程目录 | cd /var/log |
mget/mput |
批量下载/上传(支持通配符) | mget *.log |
ls/dir |
列出远程目录文件 | ls -l |
rm |
删除远程文件 | rm old_file.txt |
使用流程
- 连接远程服务器:
sftp user@192.168.1.100
- 下载文件:
get /remote/path/file.txt /local/path/
- 上传文件:
put /local/path/file.txt /remote/path/
- 退出:
exit
rsync命令:增量同步(高效大文件/目录同步)
rsync通过差异算法仅传输变化的文件,适合大文件、频繁同步或备份场景,结合SSH使用时语法为:rsync [选项] 源路径 目标路径
核心优势与选项
选项 | 作用 | 示例 |
---|---|---|
-a |
归档模式(保留权限、时间戳等,相当于-rlptgoD ) |
rsync -av /local/folder/ user@remote:/remote/ |
-v |
显示同步过程 | rsync -v file.txt user@remote:/home/ |
-z |
压缩传输(节省带宽) | rsync -az /local/ user@remote:/remote/ |
--progress |
显示传输进度条 | rsync --progress large_file.zip user@remote:/home/ |
--delete |
删除目标中多余的文件(确保同步一致性) | rsync -a --delete /source/ /destination/ |
注意事项
- 源路径末尾加(如
/local/folder/
)表示同步目录内容,不加则同步目录本身。 - 需在远程服务器安装rsync(默认多数Linux系统已安装)。
注意事项
- 权限与认证:确保本地用户有远程服务器目标路径的读写权限,推荐使用SSH密钥认证(避免密码输错)。
- 端口与防火墙:若SSH端口非默认22,需用
-P
指定,并确保防火墙开放该端口。 - 大文件传输:超大文件可能因网络波动中断,rsync支持断点续传(通过
--partial
选项),scp需手动重新传输。
相关问答FAQs
Q1: scp和rsync有什么区别?如何选择?
A: scp基于SSH协议,适合小文件或一次性拷贝,简单直接但无法断点续传;rsync通过增量算法传输,仅同步变化部分,适合大文件、频繁同步或备份场景,支持断点续传和删除多余文件,若需快速传输小文件用scp,需高效同步或大文件传输用rsync。
Q2: sftp和ftp有什么区别?为什么推荐sftp?
A: ftp(文件传输协议)是明文传输,不安全;sftp基于SSH协议,所有数据均加密传输,且支持SSH的密钥认证和端口转发,安全性更高,sftp可直接通过SSH登录(无需额外服务),而ftp需单独配置ftp服务,因此推荐使用sftp替代ftp。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/18401.html