基础命令:cp
(单机复制)
适用场景:本地快速复制文件/目录
# 复制并显示进度(需安装 pv 工具) pv source_file.txt > destination_folder/source_file.txt # 递归复制目录(保留属性) cp -rpv source_dir/ destination_dir/ # -r:递归 -p:保留属性 -v:显示进度
优势:系统原生支持,无需额外安装
注意:大文件复制时建议用-v
查看进度
高效工具:rsync
(本地/网络复制)
适用场景:大文件/跨网络增量复制(仅传输变化部分)
# 本地复制(带进度、压缩传输) rsync -avz --progress source_file.txt /path/to/destination/ # 跨服务器复制(SSH加密) rsync -avz -e "ssh -p 22" /local/path/ user@remote_ip:/remote/path/
核心参数:
-a
:归档模式(保留权限、时间戳等)-v
:输出详细信息-z
:压缩传输--partial
:断点续传--bwlimit=10000
:限速10MB/s(避免带宽占满)
网络加速:scp
& bbcp
SCP(基础加密传输)
scp -C -p -r /local/file user@remote:/path/ # -C:压缩 -p:保留时间戳
BBCP(多线程加速)
# 安装后使用(适合高速网络) bbcp -v -s 10 -w 2M source_file user@remote:/path/
参数说明:
-s N
:启用N个并行流-w SIZE
:设置窗口大小(提升吞吐量)
磁盘级操作:dd
(块设备复制)
适用场景:磁盘克隆/ISO文件制作
# 复制磁盘镜像(进度查看需额外操作) dd if=/dev/sda of=/dev/sdb bs=4M status=progress # 生成文件校验(复制后验证) md5sum source_file > check.md5 md5sum -c check.md5
警告:目标路径错误可能导致数据丢失!务必确认of=
参数
高级技巧
使用tar
管道加速
# 本地:打包+解压一步完成 tar cf - source_dir | (cd /dest/ && tar xf -) # 跨主机:通过SSH流式传输 tar czf - * | ssh user@remote "tar xzf - -C /remote/path"
内存盘加速(超大文件)
# 创建1GB内存盘 sudo mount -t tmpfs -o size=1024m tmpfs /mnt/ramdisk # 复制文件到内存盘再处理 cp big_file.zip /mnt/ramdisk/
⚠️ 安全操作建议
- 权限检查:
- 用
ls -l
确认源文件可读 - 用
df -h
检查目标磁盘空间
- 用
- 防覆盖:
cp -i
或rsync --backup
启用覆盖确认/备份
- 日志记录:
- 添加
2>&1 | tee copy.log
保存操作日志
- 添加
常见问题解答
Q:复制中断如何恢复?
A:使用rsync --partial
或bbcp -t
支持断点续传
Q:如何验证复制完整性?
A:运行 md5sum 源文件 > 目标文件
对比哈希值
Q:为什么复制速度突然下降?
A:可能原因:
- 磁盘I/O瓶颈(用
iotop
检测) - 网络波动(
mtr
诊断路由) - 小文件过多(尝试
tar
打包后复制)
引用说明: 基于Linux man手册(
man cp
/man rsync
)、IBM bbcp官方文档及开源社区最佳实践,关键操作已在Ubuntu 22.04/CentOS 7环境下验证,建议执行前通过--dry-run
参数测试命令逻辑。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6666.html