CentOS拷贝命令(cp)如何正确操作?

在CentOS系统中,拷贝文件和目录是日常运维和管理中非常常见的操作,掌握不同场景下的拷贝命令能大幅提升工作效率,本文将详细介绍CentOS中常用的拷贝命令,包括基础命令cp、远程拷贝命令scp以及增量同步命令rsync,并通过实例说明其使用方法和适用场景。

centos拷贝命令怎么弄

基础本地拷贝命令:cp

cp(copy)是CentOS中最基础的文件和目录拷贝命令,主要用于本地文件系统内的数据拷贝,支持文件到文件、文件到目录、目录到目录等多种场景。

基本语法

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

常用选项及说明

选项 功能描述
-r-R 递归拷贝目录及其所有子目录和文件(仅用于目录)
-p 保留源文件的权限、时间戳、所有者等信息
-f 强制覆盖目标文件,不提示确认
-i 覆盖前提示用户确认(默认行为,与-f对立)
-a 归档模式,相当于-dpR(保留属性、递归拷贝)
-l 创建硬链接而非拷贝文件
-s 创建符号链接而非拷贝文件
-u 仅在源文件比目标文件新或目标文件不存在时拷贝

实用示例

  • 拷贝单个文件
    /home/user/test.txt拷贝到/tmp/目录:

    cp /home/user/test.txt /tmp/

    若目标文件已存在,默认会提示覆盖(需-f强制覆盖)。

  • 递归拷贝目录
    /home/user/docs目录及其所有内容拷贝到/backup/

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

    注意:若目标目录/backup/下已存在docs,拷贝后/backup/docs/会成为/home/user/docs/的子目录(错误操作),需确保目标目录不存在或使用/backup/docs/作为目标(末尾加表示拷贝目录内容到目标目录)。

  • 保留文件属性拷贝
    拷贝文件时保留权限、时间戳等信息:

    cp -p /home/user/config.conf /etc/
  • 批量拷贝文件
    使用通配符拷贝所有.log文件到/var/log/archive/

    cp /var/log/*.log /var/log/archive/

远程拷贝命令:scp

scp(secure copy)基于SSH协议实现加密传输,用于在本地主机与远程主机之间安全拷贝文件或目录,语法与cp类似,但需指定远程主机地址(格式为[用户@]主机:路径)。

基本语法

scp [选项] 源文件或目录 [用户@]主机:目标路径
scp [选项] [用户@]主机:源文件或目录 目标路径

常用选项及说明

选项 功能描述
-r 递归拷贝目录
-P 指定远程主机的SSH端口(默认22,注意大写)
-p 保留文件的修改时间、访问时间和权限
-C 启用压缩传输
-q 静默模式,不显示传输进度
-l 限制传输速率(单位:Kbit/s)

实用示例

  • 本地文件拷贝到远程主机
    /home/user/file.txt拷贝到远程主机168.1.100/tmp/目录(用户为root):

    scp /home/user/file.txt root@192.168.1.100:/tmp/

    首次连接会提示确认远程主机指纹(输入yes),之后需输入用户密码。

    centos拷贝命令怎么弄

  • 远程主机文件下载到本地
    从远程主机168.1.100/opt/目录下载data.zip到本地当前目录:

    scp root@192.168.1.100:/opt/data.zip ./
  • 递归拷贝远程目录
    拷贝远程主机168.1.100/var/www/html/目录到本地/backup/

    scp -r root@192.168.1.100:/var/www/html/ /backup/
  • 指定端口和压缩传输
    通过2222端口拷贝文件,并启用压缩:

    scp -P 2222 -C /home/user/largefile.zip user@192.168.1.100:/opt/
  • 免密拷贝(基于SSH密钥认证)
    若已配置SSH免密登录,可直接传输无需输入密码:

    scp -r /home/user/project/ user@remote:/opt/

增量同步命令:rsync

rsync(remote sync)是一款强大的数据同步工具,支持本地和远程同步,核心优势是增量拷贝(仅传输变化的部分),适合大文件、目录或频繁同步场景,可保留文件属性、支持断点续传、排除特定文件等。

基本语法

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

常用选项及说明

选项 功能描述
-a 归档模式,保留权限、时间戳、符号链接等(相当于-rlptgoD
-v 显示详细传输过程
-z 压缩传输数据(减少网络带宽占用)
-h 以人类可读格式显示传输速率(如1K、2M)
--progress 显示传输进度条
--delete 删除目标中多余文件(确保与源完全一致,谨慎使用)
--exclude 排除特定文件或目录(可多次使用排除多个)
--bwlimit 限制传输速率(单位:KB/s)
--partial 断点续传(保留未传输完成的文件)
-e 指定远程shell程序(如SSH)

实用示例

  • 本地目录同步
    /home/user/src/同步到/home/user/dest/,保留所有属性,仅传输变化文件:

    rsync -avz /home/user/src/ /home/user/dest/

    注意:源路径末尾的表示拷贝src目录下的内容到dest(若不加,则将src目录整体拷贝到dest下)。

  • 远程目录同步
    将本地/data/同步到远程主机168.1.100/backup/data/(使用SSH加密传输):

    rsync -avz -e ssh /data/ root@192.168.1.100:/backup/data/
  • 排除特定文件同步
    同步时排除.log文件和temp目录:

    rsync -avz --exclude="*.log" --exclude="temp" /home/user/src/ /home/user/dest/
  • 删除目标多余文件
    将本地/app/完全同步到远程/remote/app/(目标中存在但源中不存在的文件将被删除):

    centos拷贝命令怎么弄

    rsync -avz --delete /app/ root@192.168.1.100:/remote/app/

    ⚠️ 此操作风险较高,建议先测试确认。

  • 带进度限制速率同步
    同步文件并显示进度条,限制速率为1MB/s:

    rsync -avh --progress --bwlimit=1024 /largefile.zip /backup/

命令对比与适用场景

命令 适用场景 优点 缺点
cp 本地文件/目录简单拷贝 无需额外工具,基础操作 无增量传输,大文件效率低
scp 本地与远程安全拷贝 基于SSH加密,简单易用 每次全量传输,无增量功能
rsync 本地/远程增量同步、大文件同步 增量传输、保留属性、支持断点续传 参数复杂,首次配置稍麻烦

进阶技巧

  1. 结合find批量拷贝
    查找最近7天修改的文件并拷贝到备份目录:

    find /var/log -type f -mtime -7 -exec cp {} /backup/recent_logs/ ;
  2. 使用tar打包后拷贝
    对大量小文件打包减少IO,再通过scp传输:

    tar -czf - /home/user/docs/ | ssh user@remote "tar -xzf - -C /opt/"

相关问答FAQs

Q1:拷贝大文件时如何避免因网络中断导致传输失败?
A:对于大文件传输,推荐使用rsync--partial选项(保留未完成传输的文件)或--append(断点续传):

rsync --partial --progress -avz /largefile.zip user@remote:/path/

若使用scp,可通过nohup配合screen/tmux后台运行,避免终端关闭中断传输:

screen -S scp_session
scp /largefile.zip user@remote:/path/
# 按Ctrl+A+D分离会话,后续可通过`screen -r scp_session`恢复

Q2:如何拷贝时排除特定文件类型或目录?
A:

  • 使用cp时,需结合findxargs排除文件(如排除.tmp文件):
    find /source -name "*.tmp" -prune -o -type f -print0 | xargs -0 cp -t /destination
  • 使用rsync时,直接通过--exclude选项指定排除模式(更简单):
    rsync -avz --exclude="*.tmp" --exclude="temp_dir" /source/ /destination/

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

(0)
酷番叔酷番叔
上一篇 2025年8月25日 23:40
下一篇 2025年8月25日 23:52

相关推荐

  • Hive里面怎么执行命令?详细操作步骤与方法是什么?

    Hive作为基于Hadoop的数据仓库工具,提供了多种命令执行方式,满足不同场景下的数据查询、管理和分析需求,掌握这些执行方式是高效使用Hive的关键,下面将详细介绍Hive中执行命令的各类方法及具体操作,交互式命令执行交互式执行是Hive最常用的方式之一,用户通过命令行客户端直接输入HiveQL语句并即时查看……

    2025年8月24日
    8400
  • 命令行批量改名,如何高效安全跨平台?

    Windows 系统方法1:CMD 命令提示符基础命令:ren(或 rename)语法:ren "原文件名" "新文件名"示例:ren "old_report.txt" "new_report.txt"处理空格/特殊字符:用双引号包……

    2025年7月9日
    10100
  • MySQL命令行启动步骤是怎样的?

    在数据库管理中,通过命令行启动MySQL是常见操作,尤其适用于服务器环境或需要自动化部署的场景,不同操作系统(Windows、Linux、macOS)的启动方式和命令存在差异,同时还需考虑配置文件、参数调整及常见错误处理,本文将详细讲解各系统下的命令行启动方法,帮助用户高效完成MySQL服务的启动,Window……

    2025年8月25日
    9400
  • Dev-C++是IDE吗?

    Dev-C++ 是一款免费开源的集成开发环境(IDE),专为C和C++程序设计打造,它集成了编辑器、编译器、调试器等工具,主要面向Windows平台,尤其适合初学者学习使用。

    2025年7月8日
    8800
  • UG提升题命令怎么用?具体操作方法是什么?

    在NX(Siemens NX)软件中,提升题命令通常指那些能够突破基础操作限制、解决复杂工程问题、显著提升建模或分析效率的高级功能,这类命令往往需要用户对软件核心逻辑有较深理解,结合具体场景灵活应用,适用于产品优化、复杂曲面设计、参数化驱动及仿真分析等高阶任务,以下从四个核心维度详细解析提升题命令的使用方法,涵……

    2025年8月30日
    8300

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信