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)
酷番叔酷番叔
上一篇 6小时前
下一篇 5小时前

相关推荐

  • 如何用快捷键打开运行窗口?

    在Windows系统中,按下键盘组合键Win + R即可快速调出运行对话框,用于输入命令或程序名称直接启动应用或系统工具。

    2025年7月15日
    1900
  • 如何在Windows中快速切换cmd目录?

    使用 cd 命令切换当前驱动器内的目录命令格式:cd 目标路径示例: cd Documents\Project # 进入当前目录下的Documents\Project文件夹cd .. # 返回上一级目录cd ..\.. # 返回上两级目录切换驱动器(如C盘→D盘)直接输入驱动器号 + 冒号: D: # 切换到D……

    2025年7月8日
    2400
  • 键盘如何输入竖线?

    在大多数键盘上,竖线符号 | 通常位于回车键(Enter)上方或附近,与反斜杠 \ 共享一个按键,按住 Shift 键不放,再按该键即可输入竖线,中文输入法下可能需要切换到英文状态。

    2025年8月4日
    1000
  • Linux如何快速切换命令行界面?

    从图形界面(GUI)临时打开命令行终端适用于需快速执行命令后返回图形界面的场景:快捷键打开终端通用快捷键:Ctrl + Alt + T(适用于Ubuntu、Debian、Fedora等主流发行版),若无效,可通过图形菜单手动启动:GNOME桌面:点击”Activities” → 搜索”Terminal”,KDE……

    2025年8月7日
    900
  • 命令提示符窗口怎么打开?

    在Windows系统中,通过开始菜单搜索“cmd”或“命令提示符”打开命令窗口;在macOS或Linux中,搜索并打开“终端”应用程序即可。

    2025年6月17日
    2800

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信