当前位置:首页>Linux>《Linux 拷贝文件命令详解大全》

《Linux 拷贝文件命令详解大全》

  • 2026-09-16 14:27:21
《Linux 拷贝文件命令详解大全》

Linux 拷贝文件命令详解大全

📁 一、主要拷贝命令对比

命令
特点
适用场景
不适用场景
cp
基础文件复制
简单、快速复制
大文件、网络、同步
rsync
智能同步
备份、同步、网络传输
极简快速复制
scp
安全远程复制
SSH 远程文件传输
复杂同步、断点续传
tar
归档打包复制
保留属性、批量处理
日常简单复制
dd
底层块复制
磁盘克隆、镜像制作
普通文件复制

🔧 二、cp 命令详解

基本语法

cp [选项] 源文件 目标文件cp [选项] 源文件... 目标目录

常用参数详解

参数
含义
示例
说明
-r / -R
递归复制目录
cp -r dir1 dir2
复制目录及子目录
-a
归档模式
cp -a src dst
保留所有属性(权限、时间、链接等)
-p
保留属性
cp -p file1 file2
保留权限、时间戳
-u
更新模式
cp -u src dst
只复制更新的文件
-i
交互确认
cp -i file1 file2
覆盖前询问
-f
强制覆盖
cp -f file1 file2
强制覆盖不提示
-l
创建硬链接
cp -l file1 file2
不复制数据,只建硬链接
-s
创建软链接
cp -s file1 file2
创建符号链接
-v
显示详情
cp -v file1 file2
显示复制过程
-t
指定目标目录
cp file1 file2 -t dir/
指定目标目录
-b
备份覆盖文件
cp -b file1 file2
覆盖前备份原文件
--backup
备份控制
cp --backup=numbered
带编号备份
-T
目标为文件
cp -T src dst
强制目标为文件
--reflink
写时复制
cp --reflink=auto
使用 CoW(Btrfs/ZFS)
-n
不覆盖
cp -n src dst
不覆盖已存在文件

高级组合示例

# 1. 完整备份目录cp -a /home/user /backup/user_backup# 2. 同步更新目录cp -rup /newdata/* /olddata/# 3. 带备份的复制cp -ab --suffix=.bak file.txt file_new.txt# 4. 批量复制并编号备份cp --backup=numbered *.txt backup/# 5. 使用写时复制(Btrfs/ZFS)cp --reflink=auto large_file.iso backup/

cp 优缺点

优点:

  • • ✅ 简单直接,系统自带
  • • ✅ 速度快,无额外开销
  • • ✅ 参数丰富,功能全面
  • • ✅ 支持硬链接/软链接

缺点:

  • • ❌ 无进度显示
  • • ❌ 不支持断点续传
  • • ❌ 网络传输复杂
  • • ❌ 增量同步需手动

场景推荐:

  • • 本地快速复制小文件
  • • 简单目录复制
  • • 创建链接而非复制
  • • 脚本中的简单复制操作

🔄 三、rsync 命令详解

基本语法

rsync [选项] 源 目标

核心参数详解

参数
组合参数
含义
说明
-a-rlptgoD
归档模式
保留所有属性
-v
详细输出
显示传输文件
-z
压缩传输
节省带宽
-P--progress --partial
进度+断点
显示进度,支持续传
-r
递归目录
复制子目录
-l
保留链接
复制符号链接
-p
保留权限
保持文件权限
-t
保留时间
保持修改时间
-g
保留属组
保持组信息
-o
保留属主
保持所有者
-D
保留设备
保持设备文件
-H
保留硬链接
保持硬链接关系
-A
保留ACL
保持访问控制列表
-X
保留扩展属性
保持文件扩展属性
-S
稀疏文件处理
高效处理稀疏文件
-n--dry-run
试运行
显示但不执行
--delete
删除多余
删除目标多余文件
--exclude
排除文件
排除指定模式文件
--include
包含文件
包含指定模式文件
--bwlimit
限速
限制传输带宽
--checksum
校验和
用校验和而非时间判断
-c
校验模式
基于校验和同步
-u--update
更新模式
跳过更新的文件
--size-only
仅大小
只比较文件大小
--existing
仅存在
只更新目标已有文件
--ignore-existing
忽略存在
跳过目标已有文件
-h--human-readable
人性化显示
用K/M/G显示大小
--stats
统计信息
显示传输统计
-e
指定shell
如 -e "ssh -p 2222"

高级用法示例

# 1. 完整备份(保留一切)rsync -avAXHS --progress /source/ /backup/# 2. 远程同步(压缩+限速)rsync -avzP --bwlimit=10000 -e ssh /local/ user@host:/remote/# 3. 增量备份(硬链接节省空间)rsync -av --link-dest=/backup/previous/ /source/ /backup/current/# 4. 镜像同步(完全一致)rsync -av --delete /source/ /destination/# 5. 排除特定文件rsync -av --exclude='*.tmp' --exclude='.git/' src/ dst/# 6. 仅同步修改的文件rsync -av --checksum src/ dst/# 7. 带宽限制(10MB/s)rsync -av --bwlimit=10240 src/ user@host:dst/

rsync 优缺点

优点:

  • • ✅ 增量同步,节省时间带宽
  • • ✅ 断点续传,不怕中断
  • • ✅ 进度显示,实时反馈
  • • ✅ 网络传输优化
  • • ✅ 保留所有文件属性
  • • ✅ 支持过滤和排除

缺点:

  • • ❌ 第一次同步较慢(需扫描)
  • • ❌ 参数复杂,学习成本高
  • • ❌ 小文件简单复制较慢
  • • ❌ 依赖服务端(daemon模式)

场景推荐:

  • • 日常备份和同步
  • • 远程服务器文件传输
  • • 大文件/目录传输
  • • 需要增量同步的场景
  • • 需要断点续传的传输

🔐 四、scp 命令详解

基本语法

scp [选项] 源文件 目标文件scp [选项] 源文件... 目标目录

参数详解

参数
含义
示例
说明
-r
递归复制
scp -r dir user@host:/path
复制整个目录
-P
指定端口
scp -P 2222 file host:/path
SSH 端口(大写P)
-p
保留属性
scp -p file host:/path
保留时间/权限(小写p)
-C
压缩传输
scp -C file host:/path
传输时压缩
-q
安静模式
scp -q file host:/path
不显示进度/警告
-v
详细模式
scp -v file host:/path
显示调试信息
-c
指定加密
scp -c aes256-ctr file host:/path
加密算法
-i
密钥文件
scp -i key.pem file host:/path
身份密钥
-l
带宽限制
scp -l 1000 file host:/path
限制为 1000Kbit/s
-o
SSH选项
scp -o "StrictHostKeyChecking=no"
SSH配置
-B
批处理模式
scp -B file host:/path
禁止密码询问
-S
SSH程序
scp -S /path/ssh file host:/path
指定SSH程序
-3
通过本地中转
scp -3 src host1:dst
两台远程主机传输

使用示例

# 1. 本地到远程scp file.txt user@192.168.1.100:/home/user/# 2. 远程到本地scp user@host:/path/file.txt .# 3. 远程到远程(通过本地中转)scp -3 user1@host1:/file user2@host2:/path# 4. 保留属性复制目录scp -rp /local/dir user@host:/remote/# 5. 指定端口和密钥scp -P 2222 -i ~/.ssh/key.pem file host:/path# 6. 限制带宽(500KB/s)scp -l 4000 large_file host:/path  # 4000 Kbit/s = 500KB/s

scp 优缺点

优点:

  • • ✅ 简单安全的远程传输
  • • ✅ 基于SSH,无需额外配置
  • • ✅ 系统自带,无需安装
  • • ✅ 支持加密传输
  • • ✅ 可限制带宽

缺点:

  • • ❌ 无进度显示(Linux版)
  • • ❌ 不支持断点续传
  • • ❌ 无增量同步
  • • ❌ 传输大文件可能超时
  • • ❌ 递归复制符号链接可能有问题

场景推荐:

  • • 简单的远程文件传输
  • • 安全要求高的传输
  • • 临时小文件传输
  • • 不熟悉rsync时的替代

📦 五、tar 命令详解(用于复制)

管道复制模式

# 保留属性的目录复制(cd /source && tar cf - .) | (cd /dest && tar xf -)# 带压缩的远程复制tar czf - /source | ssh user@host "cd /dest && tar xzf -"# 排除文件的复制tar --exclude='*.tmp' -cf - . | (cd /dest && tar xf -)

参数说明

参数
含义
说明
c
创建归档
create
x
解压归档
extract
f
文件操作
file
z
gzip压缩
gzip
j
bzip2压缩
bzip2
J
xz压缩
xz
v
显示详情
verbose
p
保留权限
preserve-permissions
--exclude
排除文件
exclude patterns

优点:保留所有属性,适合管道操作缺点:需要两次磁盘读写,大文件效率低


💾 六、dd 命令详解

块级复制

# 磁盘克隆ddif=/dev/sda of=/dev/sdb bs=4M status=progress# 文件复制ddif=input.iso of=output.iso bs=1M# 创建空文件ddif=/dev/zero of=1g.bin bs=1M count=1024

关键参数

参数
含义
说明
if=
输入文件
input file
of=
输出文件
output file
bs=
块大小
block size
count=
块数量
number of blocks
skip=
跳过输入块
skip input blocks
seek=
跳过输出块
seek output blocks
conv=
转换参数
sync,noerror等

优点:底层操作,适合磁盘/镜像缺点:不适合普通文件操作


📊 七、场景推荐表

场景
推荐命令
示例
理由
本地小文件cpcp file1 file2
最简单快速
本地目录备份cp -a
 或 rsync -a
cp -a src/ dst/
保留所有属性
远程文件传输scp
 或 rsync
scp file user@host:/path
简单安全
大文件远程传输rsync -zPrsync -avzP src/ host:dst/
压缩+进度+断点
增量备份rsyncrsync -av --link-dest
节省空间时间
目录同步rsync --deletersync -av --delete src/ dst/
保持完全一致
磁盘克隆dddd if=/dev/sda of=/dev/sdb
块级精确复制
管道传输tar
 管道
`tar cf - .
tar xf - -C dst`
脚本中复制cp
 或 rsync -q
cp -f src dst
安静可靠
带宽限制传输rsync --bwlimit
 或 scp -l
rsync --bwlimit=1000
控制网络影响
加密传输scp
 或 rsync -e ssh
scp -c aes256 file host:/
安全传输
大量小文件rsync
 或 tar
rsync -a src/ dst/
高效处理小文件
保留硬链接cp -l
 或 rsync -H
cp -al src/ dst/
节省空间
试运行测试rsync -nrsync -avn src/ dst/
安全测试
排除特定文件rsync --excludersync --exclude='*.log'
灵活过滤

⚡ 八、性能对比与技巧

速度对比(大致)

dd (块复制) > cp > rsync(首次) > scp > tar管道rsync(增量) > 所有(增量时)

优化技巧

# 1. 调整块大小(dd/cp)dd bs=4M    # 一般4M-8M最佳cp --reflink   # Btrfs/ZFS用写时复制# 2. rsync并行传输# 使用多个rsync进程for i in {1..4}; do    rsync -a src/part$i dst/ &done# 3. 避免元数据开销(大量小文件)# 先tar打包,再传输tar cf - src/ | ssh host "cd dst && tar xf -"# 4. 内存盘加速cp src/ /dev/shm/tmp/   # 使用tmpfs# 5. 使用ionice降低磁盘影响ionice -c2 -n7 cp -a src/ dst/

🔐 九、安全注意事项

1. 权限保留

# 可能需要的操作sudocp -a src/ dst/      # 保留root权限文件sudo rsync -avAX src/ dst/ # 保留所有属性

2. 符号链接处理

# 不同选择cp -L      # 跟随链接(复制内容)cp -P      # 保留链接(复制链接本身)rsync -l   # 保留符号链接

3. 敏感文件

# 避免复制特殊文件cp --no-preserve=mode,ownership src/ dst/rsync --chmod=ugo=rwX src/ dst/  # 重置权限

📈 十、监控与验证

验证复制结果

# 1. 校验和验证md5sum source.filemd5sum dest.file# 2. 目录差异diff -r src/ dst/# 3. 文件数量find src/ -type f | wc -lfind dst/ -type f | wc -l# 4. 大小统计du -sh src/ dst/

进度监控

# rsync进度rsync -av --progress src/ dst/# pv监控管道tar cf - src/ | pv | tar xf - -C dst/# 后台监控watch -n1 'du -sh dst/'

✅ 十一、终极选择指南

简单决策流程

需要远程传输?├── 是 → 需要增量/断点续传?│   ├── 是 → rsync -avzP│   └── 否 → scp└── 否 → 本地复制    ├── 需要增量同步? → rsync -a    ├── 简单快速复制? → cp    ├── 磁盘/镜像克隆? → dd    └── 管道/流处理? → tar管道

黄金法则

  1. 1. 日常备份:rsync -av /source/ /backup/
  2. 2. 远程传输:rsync -avzP -e ssh src/ user@host:dst/
  3. 3. 快速复制:cp -a src/ dst/
  4. 4. 安全脚本:cp -f src dst (明确覆盖)
  5. 5. 大文件传输:rsync -avzP --bwlimit=10000

🎯 总结表格

需求
首选命令
次选命令
参数示例
快速复制
cpcatcp -a src dst
智能同步
rsync
无
rsync -av --delete src/ dst/
远程安全
scprsyncscp -rp src/ user@host:dst/
增量备份
rsynctar
增量
rsync -av --link-dest
磁盘克隆
ddcatdd if=/dev/sda of=/dev/sdb
大量小文件
rsynctar
管道
rsync -a src/ dst/
带宽限制
rsyncscprsync --bwlimit=1024
保留链接
cp -arsync -lcp -al src/ dst/

掌握这些命令的组合使用,能让你在 Linux 文件操作中游刃有余!

最新文章

随机文章