linux命令-cp与rsync命令详解

一、cp 命令详解

1. 基本语法

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

2. 核心功能

  • 本地文件/目录复制:支持单文件、多文件或目录的复制。
  • 属性保留:可选保留权限、时间戳等元数据。
  • 简单高效:适用于一次性复制任务。

3. 常用选项

选项说明
-r递归复制目录及其子内容。
-i覆盖前提示确认(交互模式)。
-p保留文件权限、所有者和时间戳。
-a归档模式(等效于 -rp,保留所有元数据)。
-u仅当源文件比目标文件新时复制(增量更新)。
-v显示详细复制过程。
--backup覆盖前创建备份文件(备份文件名为目标文件加 ~)。
-l创建硬链接而非复制(节省磁盘空间)。
-s创建符号链接(软链接)而非复制。
-f强制覆盖目标文件(不提示)。

4. 10个实用示例

示例 1:复制单个文件
cp file.txt /backup/file.txt
  • 功能:将 file.txt 复制到 /backup 目录,保留文件名。
  • 场景:快速备份单个文件。
示例 2:递归复制目录
cp -r /data/logs /backup/logs
  • 功能:递归复制 /data/logs 目录及其子内容到 /backup/logs
  • 场景:备份整个目录结构。
示例 3:保留文件属性
cp -p /var/www/config.ini /backup/config.ini
  • 功能:复制时保留权限、所有者和时间戳。
  • 场景:配置文件迁移需保持属性一致。
示例 4:交互式覆盖确认
cp -i *.log /backup
  • 功能:复制所有 .log 文件到 /backup,若目标存在则提示用户确认。
  • 场景:避免意外覆盖重要文件。
示例 5:增量更新文件
cp -u /source/*.csv /destination
  • 功能:仅复制 /source 中比 /destination 新的 .csv 文件。
  • 场景:定期更新数据目录。
示例 6:创建硬链接
cp -l large_file.iso /backup/large_file.iso
  • 功能:通过硬链接共享相同磁盘数据,不占用额外空间。
  • 场景:节省磁盘空间的大文件多副本需求。
示例 7:创建软链接
cp -s /opt/app/bin/start.sh /usr/local/bin/start
  • 功能:在 /usr/local/bin 中创建指向原始文件的软链接。
  • 场景:简化路径调用。
示例 8:强制覆盖文件
cp -f critical_data.db /backup/critical_data.db
  • 功能:强制复制,忽略目标文件是否存在。
  • 场景:脚本中无需人工干预的自动化备份。
示例 9:归档模式复制
cp -a /home/user /backup/user
  • 功能:完全保留目录结构、权限和时间戳。
  • 场景:完整备份用户目录。
示例 10:备份覆盖文件
cp --backup=numbered file.txt /backup/file.txt
  • 功能:若目标文件存在,会生成 file.txt.~1~ 等备份文件。
  • 场景:防止数据丢失的风险操作。

5. 高级用法

结合 find 过滤后复制
find /source -name "*.jpg" -exec cp {} /backup/images \;
  • 功能:复制 /source 下所有 .jpg 文件到 /backup/images
批量重命名复制
cp file{1..10}.txt /backup/renamed_files/
  • 功能:复制 file1.txtfile10.txt 到目标目录。

二、rsync 命令详解

1. 基本语法

rsync [选项] 源路径 目标路径

2. 核心功能

  • 增量同步:仅传输变化部分,大幅减少数据传输量。
  • 本地/远程同步:支持 SSH、RSH 等协议。
  • 灵活过滤:可排除特定文件或目录。
  • 带宽控制:限制传输速度避免影响网络。

3. 常用选项

选项说明
-a归档模式(保留权限、时间戳等,等效于 -rlptgoD)。
-v显示详细同步过程。
-z压缩传输数据(减少网络带宽占用)。
--delete删除目标中源不存在的文件(完全同步)。
--exclude排除指定文件或目录。
--exclude-from从文件读取排除规则。
--progress显示传输进度。
-b覆盖前备份文件(备份文件名为目标文件加 ~)。
--dry-run模拟执行但不实际传输(用于测试)。
--partial保留部分传输的文件(便于断点续传)。
--bwlimit限制传输带宽(如 --bwlimit=1M)。

4. 10个实用示例

示例 1:本地目录同步
rsync -a /source/dir/ /backup/dir/
  • 功能:将 /source/dir 同步到 /backup/dir,保留所有属性。
  • 场景:本地备份或镜像目录。
示例 2:远程服务器同步
rsync -avz /data/ user@remote:/backup/data/
  • 功能:压缩传输本地 /data 到远程服务器的 /backup/data
  • 场景:跨服务器备份。
示例 3:删除目标多余文件
rsync -av --delete /source/ /backup/
  • 功能:完全同步,删除 /backup 中不存在于 /source 的文件。
  • 场景:保持目标与源严格一致。
示例 4:排除特定文件
rsync -a --exclude="*.tmp" /source/ /backup/
  • 功能:同步时跳过所有 .tmp 文件。
  • 场景:忽略临时文件。
示例 5:从文件读取排除规则
rsync -a --exclude-from="exclude_list.txt" /source/ /backup/
  • 文件内容:每行一个排除模式(如 *.log/temp/)。
  • 场景:复杂过滤需求的批量处理。
示例 6:带宽限制
rsync -avz --bwlimit=500K /large_files/ user@remote:/backup/
  • 功能:限制传输速度为 500KB/s。
  • 场景:避免占用生产网络带宽。
示例 7:增量备份
rsync -ab --backup-dir=/backup/old /source/ /backup/current/
  • 功能:覆盖文件前,将旧文件移动到 /backup/old 目录。
  • 场景:保留历史版本的数据备份。
示例 8:断点续传
rsync -avz --partial /bigfile.iso user@remote:/downloads/
  • 功能:网络中断后重新执行命令可继续传输。
  • 场景:大文件传输的容错处理。
示例 9:模拟执行(试运行)
rsync -avn --delete /source/ /backup/
  • 功能:显示哪些文件会被删除或传输,但不实际操作。
  • 场景:验证同步计划的安全性。
示例 10:同步符号链接
rsync -avl /source/ /backup/
  • 功能:同步时保留符号链接本身(-l),而非链接指向的文件。
  • 场景:维护软链接结构的备份。

5. 高级用法

通过 SSH 加密传输
rsync -avz -e "ssh -p 2222" /source/ user@remote:/backup/
  • 功能:通过指定端口 2222 的 SSH 加密传输。
定时同步任务
crontab -e
0 3 * * * rsync -a --delete /source/ /backup/
  • 功能:每天凌晨 3 点自动执行同步。

三、cp vs rsync 核心区别总结

1. 功能性对比

特性cprsync
设计目的简单复制文件或目录。增量同步、远程传输和高效数据管理。
增量传输仅支持 -u 选项的简单增量。原生支持增量传输(仅传输变化部分)。
远程同步不支持。支持本地与远程路径(如 user@host:)。
带宽控制不支持。支持 --bwlimit 限制传输速度。
文件排除需结合 find 或 Shell 通配符。原生支持 --exclude 和排除文件列表。
断点续传需手动处理。支持 --partial 保留部分文件。
硬链接/软链接处理支持 -l-s默认保留链接,可通过 -L 复制目标文件。
备份功能--backup 选项。支持 -b 和自定义备份目录。
元数据保留-p 保留权限和时间戳。-a 保留所有属性(包括 ACL 和扩展属性)。
适用场景单次简单复制或本地备份。频繁同步、远程备份或大规模数据传输。

2. 性能与效率

  • cp

    • 优点:简单快速,适合少量文件的一次性复制。
    • 缺点:无增量传输,重复复制相同内容浪费资源。
  • rsync

    • 优点:仅传输差异数据,节省时间和带宽。
    • 缺点:首次同步可能较慢(需计算文件差异)。

3. 典型场景

  • 使用 cp

    • 复制单个配置文件到备份目录。
    • 快速创建硬链接节省磁盘空间。
    • 简单脚本中的文件操作。
  • 使用 rsync

    • 每日增量备份服务器数据到远程存储。
    • 跨数据中心同步大型数据集。
    • 维护开发环境与生产环境的一致性。

四、扩展内容

1. 结合使用场景的深度优化

rsync--checksum 选项
rsync -avc --checksum /source/ /backup/
  • 功能:通过校验和检测文件变化(即使文件时间戳未变)。
cptar 结合
tar cf - /source | (cd /backup && tar xvf -)
  • 功能:保留所有属性的高效目录复制(类似 cp -a)。

2. 错误处理与调试

rsync 的错误日志
rsync -av --log-file=rsync.log /source/ /backup/
  • 功能:将同步过程记录到日志文件。
cp 的权限问题
sudo cp -a /root/config /backup/
  • 场景:复制需要 root 权限的文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸭梨山大。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值