ssh拷贝文件命令行怎么操作?

在Linux和Unix系统中,通过SSH协议进行文件拷贝是远程管理和服务维护的常见需求,SSH(Secure Shell)提供了安全的加密传输通道,确保文件在传输过程中不被窃听或篡改,本文将详细介绍几种常用的SSH命令行文件拷贝方法,包括scp、rsync和sftp,并分析它们的适用场景和参数使用。

ssh怎么拷贝文件命令行

使用scp命令拷贝文件

scp(secure copy)是基于SSH协议的文件传输工具,语法简单,适合快速拷贝单个或多个文件、目录,其基本语法为:

scp [选项] 源文件 目标地址

本地文件拷贝到远程服务器

将本地文件拷贝到远程服务器的指定目录,需提供远程服务器的用户名、IP(或域名)及目标路径:

scp /path/to/local/file.txt username@remote_ip:/path/to/remote/directory/

将本地/home/user/docs/report.pdf拷贝到远程服务器168.1.100/opt/docs/目录下,使用用户名admin

scp /home/user/docs/report.pdf admin@192.168.1.100:/opt/docs/

远程服务器文件拷贝到本地

与上述操作相反,将远程文件拷贝到本地只需交换源文件和目标地址的位置:

scp username@remote_ip:/path/to/remote/file.txt /path/to/local/directory/

从远程服务器168.1.100/var/log/目录下拷贝access.log到本地/tmp/目录:

scp admin@192.168.1.100:/var/log/access.log /tmp/

远程服务器之间拷贝文件

若需要在两台远程服务器之间直接传输文件,可在本地终端通过SSH代理转发,避免先下载到本地再上传:

scp -3 username1@remote_ip1:/path/to/file.txt username2@remote_ip2:/path/to/directory/

其中-3参数强制通过本地主机转发(默认情况下,若两台远程服务器之间网络互通,可省略-3直接传输)。

拷贝目录

若需拷贝整个目录,需添加-r(递归)参数:

ssh怎么拷贝文件命令行

scp -r /path/to/local/directory/ username@remote_ip:/path/to/remote/

常用参数说明

参数 作用
-r 递归拷贝目录
-P 指定SSH端口(默认22,需大写,避免与-p冲突)
-p 保留文件的修改时间、访问时间和权限
-C 启用压缩传输(适合大文件或网络较慢时)
-v 显示详细传输过程(调试用)
-l 限制传输速率(单位:Kbit/s,如-l 1000限制为1Mbps)

通过2222端口传输文件并启用压缩:

scp -P 2222 -C /local/file.txt user@remote_ip:/remote/

使用rsync命令拷贝文件

rsync(remote sync)是一款更强大的文件同步工具,支持增量传输(仅同步变化的文件)、断点续传、权限保留等功能,适合大文件或频繁同步的场景,其基本语法为:

rsync [选项] 源文件 目标地址

本地同步到远程

rsync -avz /path/to/local/ username@remote_ip:/path/to/remote/

同步本地/home/user/project/目录到远程服务器的/opt/project_backup/

rsync -avz /home/user/project/ admin@192.168.1.100:/opt/project_backup/

远程同步到本地

rsync -avz username@remote_ip:/path/to/remote/ /path/to/local/

增量同步与断点续传

rsync默认仅传输源文件和目标文件有差异的部分(通过文件大小、修改时间判断),大幅减少传输数据量,若传输中断,再次执行相同命令会自动续传(需配合--partial参数显式保留未完成的传输文件):

rsync -avz --partial /large/file.iso user@remote_ip:/remote/

删除目标中多余的文件

使用--delete参数可使目标目录与源目录完全一致(删除目标中存在但源中不存在的文件):

rsync -avz --delete /local/directory/ user@remote_ip:/remote/directory/

常用参数说明

参数 作用
-a 归档模式,相当于-rlptgoD(递归、保留权限、时间等)
-v 显示传输详情
-z 启用压缩传输
-P 显示传输进度,相当于--partial --progress(支持断点续传)
--exclude 排除特定文件(如--exclude "*.tmp"排除临时文件)
--bwlimit 限制带宽(单位:KB/s,如--bwlimit 500限制为500KB/s)

排除.git目录并限制带宽:

rsync -avz --exclude .git --bwlimit 1000 /local/project/ user@remote_ip:/remote/

使用sftp命令拷贝文件

sftp(SSH File Transfer Protocol)是基于SSH的安全文件传输协议,提供交互式命令行界面,支持类似FTP的文件操作(如上传、下载、删除、创建目录等),适合需要复杂操作的场景。

连接远程服务器

sftp username@remote_ip

连接成功后,会显示sftp>提示符。

ssh怎么拷贝文件命令行

上传文件(本地→远程)

put /path/to/local/file.txt /path/to/remote/directory/

上传report.pdf到远程服务器的/opt/docs/

put /home/user/docs/report.pdf /opt/docs/

下载文件(远程→本地)

get /path/to/remote/file.txt /path/to/local/directory/

下载远程的access.log到本地/tmp/

get /var/log/access.log /tmp/

拷贝目录

需添加-r参数:

put -r /local/directory/ /remote/directory/
get -r /remote/directory/ /local/directory/

常用交互命令

命令 作用
ls 列出远程当前目录文件
lls 列出本地当前目录文件
cd 切换远程目录
lcd 切换本地目录
mkdir 创建远程目录
lmkdir 创建本地目录
rm 删除远程文件
lrmdir 删除本地目录
bye 退出sftp

交互式上传整个project目录并排除node_modules

sftp admin@192.168.1.100
lcd /home/user/project
mkdir -p /remote/project
cd /remote/project
put -r *
bye

三种工具对比与选择

工具 核心功能 适用场景
scp 基于SSH的快速文件/目录拷贝 小文件、简单传输,无需增量同步
rsync 增量同步、断点续传、权限保留 大文件、频繁同步、需保持目录一致性
sftp 交互式文件管理(上传/下载/删除等) 需要复杂操作(如批量处理文件、远程管理目录)

相关问答FAQs

Q1: scp和rsync有什么区别?什么时候选择rsync而不是scp?
A: scp适合简单、一次性文件拷贝,语法简单,但每次传输完整文件,无法增量同步;rsync支持增量传输(仅同步变化部分)、断点续传、带宽限制等功能,适合大文件、频繁同步或需保持目录一致的场景(如备份代码目录),若仅需传输少量文件且无需断点续传,scp更简洁;若传输大文件或需定期同步,rsync效率更高。

Q2: 使用SSH拷贝文件时提示“Permission denied”,如何解决?
A: 常见原因及解决方法:

  1. 用户名错误:确认远程服务器用户名是否正确,如admin@remote_ip中的admin是否存在。
  2. 密码错误或密钥未配置:若使用密码登录,确认输入密码正确;若使用SSH密钥,需确保本地公钥已添加到远程服务器的~/.ssh/authorized_keys文件中,且权限设置正确(~/.ssh目录权限为700,authorized_keys权限为600)。
  3. 目标目录权限不足:确认远程服务器目标目录的所属用户是否有写入权限,可通过chmod修改权限(如chmod 755 /remote/directory/)。
  4. 防火墙或端口限制:确认远程服务器防火墙允许SSH端口(默认22)的访问,或使用-P参数指定正确的SSH端口。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/18393.html

(0)
酷番叔酷番叔
上一篇 2小时前
下一篇 2小时前

相关推荐

  • CAD缩放命令如何精准控制图形大小?

    CAD缩放命令是调整图形尺寸的核心功能,通过指定比例因子或参照点,可精确放大或缩小选定对象,确保图形比例准确,是工程制图和设计修改中不可或缺的工具。

    2025年8月4日
    1000
  • 事务为何是回滚核心?

    在数据库操作中,”回滚”(Rollback)指撤销未提交的事务,将数据恢复到事务开始前的状态,这是保证数据一致性和完整性的核心机制,尤其在执行错误操作(如误删数据、逻辑错误)时能避免灾难性后果,下面详细说明SQL中实现回滚的方法和注意事项,回滚需通过事务实现,事务是一组SQL操作的逻辑单元,满足ACID原则(原……

    2025年7月17日
    2400
  • 为什么会出现常见问题?怎么办?

    当在Windows命令提示符或PowerShell中输入telnet命令时,系统提示”不是内部或外部命令”,根本原因是Telnet客户端未启用,自Windows 7起,微软出于安全考虑(Telnet协议传输明文数据),默认不再预装该功能,需手动启用,解决方案(适用Windows 10/11/8/7)✅ 方法1……

    2025年7月26日
    1100
  • Linux命令与软件包如何快速互查?

    查看命令由哪个软件包提供(适用于未安装的命令)当命令未安装时,需通过包管理器搜索:Debian/Ubuntu(APT系列)使用 apt-file 工具(需先安装):sudo apt updatesudo apt install apt-file # 安装工具sudo apt-file update # 更新文件……

    2025年6月28日
    2900
  • Mac 终端,不懂=浪费潜能?解锁高效操作!

    解锁Mac隐藏能力:终端是高效管理系统的核心工具,本指南详解基础命令与高级技巧,助你掌控文件操作、自动化任务及系统配置,释放macOS真正潜力,大幅提升工作效率。

    2025年8月4日
    1000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信