anolis openeuler 文件复制上用命令-学习篇

在 Linux 系统中,上传文件的核心场景分为 本地文件上传到远程 Linux 服务器本地 Linux 内部不同路径间传输文件,以下是最常用、高效的命令,附带详细用法和场景说明:

一、核心场景 1:本地 → 远程 Linux 服务器(最常用)

需通过 网络传输 ,核心命令为 scp(简单可靠)、rsync(高效增量传输)、sftp(交互式传输),均基于 SSH 协议(默认 22 端口),需知道远程服务器的 IP、用户名、密码 / SSH 密钥

1. scp 命令(Secure Copy,简单直接)

scp 是基于 SSH 的安全拷贝命令,支持文件 / 目录传输,用法简单,适合一次性上传少量文件。

基本语法

bash

本地文件 → 远程服务器

scp[选项] 本地文件路径 远程用户名@远程IP:远程目标路径

`

本地目录 → 远程服务器(需加 -r 递归)`

scp-r[选项] 本地目录路径 远程用户名@远程IP:远程目标路径

常用选项
  • -r

    :递归传输目录(必须加,否则无法上传文件夹);

  • -P 端口号

    :指定远程 SSH 端口(默认 22,若服务器端口修改需显式指定);

  • -i 密钥文件路径

    :使用 SSH 私钥认证(免密码,比密码登录更安全);

  • -l 带宽限制

    :限制传输速率(如 -l 1024 表示 1MB/s)。

实操示例

bash

1. 上传本地单个文件(如本地的 test.txt 上传到远程 /home/user 目录)

scp /home/local/test.txt root@192.168.1.100:/home/user/

`

2. 上传本地目录(如本地的 docs 文件夹上传到远程 /home/user 目录)`

scp-r /home/local/docs root@192.168.1.100:/home/user/

`

3. 服务器端口非默认(如 2222),上传文件`

scp-P2222 /home/local/image.jpg root@192.168.1.100:/home/user/images/

`

4. 使用 SSH 密钥认证(免密码),上传目录`

scp-r-i ~/.ssh/my_key.pem /home/local/project root@192.168.1.100:/opt/

注意事项
  • 若远程目标路径是 目录,需确保目录已存在(否则会报错);

  • 密码登录时,执行命令后会提示输入远程服务器的用户名密码;密钥登录需确保私钥权限为 600chmod 600 ~/.ssh/my_key.pem),否则 SSH 会拒绝使用。

2. rsync 命令(高效增量传输,适合大文件 / 频繁同步)

rsync 是 Linux 下最强的同步工具,支持 增量传输 (仅传输变化的文件 / 文件片段),速度比 scp 快,且支持断点续传,适合上传大文件、频繁同步目录(如备份场景)。

基本语法

bash

本地文件/目录 → 远程服务器

rsync[选项] 本地路径 远程用户名@远程IP:远程目标路径

核心选项(必记)
  • -a

    :归档模式(等价于 -rlptgoD),递归传输目录、保留文件权限 / 时间戳 / 所有者等(推荐默认加);

  • -v

    :显示详细传输日志(便于排查问题);

  • -z

    :传输时压缩数据(减少网络带宽占用);

  • -P

    :断点续传(--partial --progress 缩写,支持大文件中断后继续传输,且显示进度条);

  • -e "ssh -p 端口号"

    :指定 SSH 端口(如服务器端口非 22 时使用);

  • --delete

    :同步时删除远程目标路径中本地没有的文件(谨慎使用,适合全量同步场景)。

实操示例

bash

1. 上传大文件(如 10GB 的 video.mp4),支持断点续传+进度条

rsync-avzP /home/local/video.mp4 root@192.168.1.100:/home/user/media/

`

2. 同步本地目录到远程,保留权限+压缩传输,服务器端口 2222`

rsync-avzP-e"ssh -p 2222" /home/local/data root@192.168.1.100:/home/user/

`

3. 增量同步(仅传输变化的文件),适合频繁更新的项目目录`

rsync-avzP /home/local/project root@192.168.1.100:/opt/project/

优势对比 scp
  • 大文件传输:rsync 支持断点续传,scp 中断后需重新传输;

  • 频繁同步:rsync 仅传变化部分,scp 每次全量传输,效率天差地别;

  • 带宽占用:-z 选项压缩数据,弱网环境下优势明显。

3. sftp 命令(交互式传输,适合手动选择文件)

sftp 是 SSH File Transfer Protocol 的缩写,交互式操作(类似 FTP 命令),适合需要手动浏览远程目录、选择上传 / 下载文件的场景(如临时上传少量文件,不确定远程路径时)。

基本用法

bash

1. 连接远程服务器(默认 22 端口,非默认端口加 -P)

sftp 远程用户名@远程IP # 或 sftp -P 2222 远程用户名@远程IP

`

2. 连接成功后,进入交互式命令行(常用命令如下)`

sftp> put 本地文件路径 远程目标路径 # 上传本地文件到远程
sftp> put -r 本地目录路径 远程目标路径 # 上传本地目录(-r 递归)
sftp>ls# 查看远程当前目录文件
sftp>cd 远程目录路径 # 切换远程目录
sftp> lls # 查看本地当前目录文件(加 l 表示本地操作)
sftp> lcd 本地目录路径 # 切换本地目录
sftp>exit# 退出 sftp 连接

实操示例

bash

1. 连接远程服务器

sftp root@192.168.1.100

`

2. 上传本地 /home/local/test.txt 到远程 /home/user 目录`

sftp> put /home/local/test.txt /home/user/

`

3. 上传本地 /home/local/docs 目录到远程 /home/user 目录`

sftp> put -r /home/local/docs /home/user/

`

4. 浏览远程目录,确认上传结果`

sftp>cd /home/user
sftp>ls# 查看是否有 test.txt 和 docs 目录
sftp>exit# 退出

特点
  • 交互式操作,无需记忆复杂命令,适合临时手动传输;

  • 基于 SSH 安全传输,支持密码 / 密钥认证;

  • 不支持断点续传(大文件不推荐)。

二、场景 2:本地 Linux 内部传输文件(同一主机不同路径)

无需网络,直接通过 cp 命令(复制)或 mv 命令(移动,等价于 "剪切上传")操作。

1. cp 命令(复制文件 / 目录)

bash

复制单个文件到目标路径

cp /home/local/file.txt /home/user/backup/

`

复制目录(递归,加 -r)`

cp-r /home/local/docs /home/user/backup/

`

复制时保留文件属性(权限、时间戳等),加 -a`

cp-a /home/local/data /home/user/backup/

2. mv 命令(移动文件 / 目录,剪切 + 粘贴)

bash

移动单个文件到目标路径

mv /home/local/file.txt /home/user/backup/

`

移动目录(无需加 -r,直接移动)`

mv /home/local/docs /home/user/backup/

三、常见问题排查

1. 上传失败:"Permission denied"(权限不足)

  • 原因:远程目标路径的写入权限不足(如远程目录是 root 所有,普通用户无法写入);

  • 解决:

    1. 切换到有权限的用户(如 root)上传;

    2. 给远程目录授权:ssh 远程用户名@远程IP "chmod 777 /远程目标路径"(临时测试用,生产环境不推荐 777);

    3. 选择远程用户有权限的目录(如 /home/用户名/ 目录)。

2. 上传超时 / 连接失败

  • 原因:远程服务器 SSH 服务未启动、端口被防火墙拦截、IP / 端口错误;

  • 解决:

    1. 测试 SSH 连接是否正常:ssh 远程用户名@远程IP -p 端口号(能登录则 SSH 正常);

    2. 检查防火墙:远程服务器开放 22 端口(或自定义端口),如 firewall-cmd --permanent --add-port=22/tcp && firewall-cmd --reload(CentOS);

    3. 确认远程服务器 IP 可达(ping 远程IP)。

3. 大文件上传中断

  • 解决:使用 rsync -P 命令(断点续传),重新执行相同命令即可继续传输,无需从头开始。

四、命令选择建议

场景 推荐命令 核心优势
一次性上传少量文件 / 目录 scp 语法简单,无需记忆复杂选项
大文件、频繁同步、增量传输 rsync 断点续传、高效增量、压缩传输
交互式操作、手动选择文件 sftp 可视化浏览目录,操作灵活
本地 Linux 内部文件移动 / 复制 cp/mv 本地操作,无需网络

掌握 scp(简单场景)和 rsync(复杂场景)即可覆盖 99% 的 Linux 上传需求,生产环境中优先使用 rsync 传输大文件或频繁同步的目录,效率和稳定性更优。

相关推荐
I***t7161 小时前
自己编译RustDesk,并将自建ID服务器和key信息写入客户端
运维·服务器
誰能久伴不乏1 小时前
Linux文件套接字AF_UNIX
linux·服务器·c语言·c++·unix
可爱又迷人的反派角色“yang”1 小时前
LVS+Keepalived群集
linux·运维·服务器·前端·nginx·lvs
AI视觉网奇2 小时前
vscode 远程失败
linux·服务器
曹牧2 小时前
C#中的StartsWith
java·服务器·c#
V***u4532 小时前
SQL2000在win10上安装的方法
运维·服务器
边疆.2 小时前
【Linux】基础IO
linux·运维·服务器·io·文件操作·重定向
ZeroNews内网穿透2 小时前
ZeroNews IP 访问控制能力
服务器·网络·网络协议·tcp/ip·安全·web安全·小程序
nukix2 小时前
Linux 查看应用端口情况
linux·运维·服务器