在CentOS系统中,命令行操作是日常运维和管理的核心技能,而“复制”作为最基础的操作之一,涵盖了文件、目录、远程传输等多种场景,掌握不同场景下的复制命令及其参数,能显著提升工作效率,本文将详细讲解CentOS中常见的复制操作,包括本地文件/目录复制、远程文件传输、文本内容复制等,并通过示例和表格帮助读者理解。

本地文件复制:cp命令
cp(copy)是CentOS中最基础的复制命令,用于复制文件或目录,其基本语法为:
cp [选项] 源文件/目录 目标文件/目录
常用选项及作用
| 选项 | 作用 | 示例 |
|---|---|---|
-r 或 -R |
递归复制目录,用于复制整个目录及其子目录 | cp -r /source/dir /target/ |
-p |
保留文件属性,如权限、时间戳、所有者等 | cp -p file.txt /backup/ |
-i |
覆盖前询问,避免误操作(默认别名可能已包含) | cp -i file1.txt file2.txt |
-a |
归档模式,相当于-dpR,保留所有属性并递归复制,适合备份 |
cp -a /etc /backup/ |
-v |
显示详细复制过程,便于调试 | cp -v file.txt /tmp/ |
-f |
强制覆盖,不询问(与-i相反) |
cp -f file1.txt file2.txt |
-l |
创建硬链接而非复制(本质是链接,非独立文件) | cp -l file.txt hardlink.txt |
-s |
创建符号链接(软链接) | cp -s file.txt symlink.txt |
常见复制场景
- 复制普通文件:将
file1.txt复制到/tmp目录,并重命名为file2.txt:cp file1.txt /tmp/file2.txt
- 复制文件到目录:将
file.txt复制到/home/user/docs目录(目标目录必须存在):cp file.txt /home/user/docs/
- 复制整个目录:使用
-r或-a复制/source/dir到/target/(-a会保留所有属性):cp -r /source/dir /target/ cp -a /source/dir /target/ # 推荐用于备份
- 批量复制文件:使用通配符复制所有
.log文件到/logs目录:cp *.log /logs/
远程文件复制:scp与rsync
当需要在本地与远程服务器之间复制文件时,scp(secure copy)和rsync是常用工具,基于SSH协议传输,数据加密且安全。
scp命令:快速远程复制
scp的基本语法为:

scp [选项] 源文件 用户@远程主机:目标路径 scp [选项] 用户@远程主机:源文件 目标路径
常用选项
| 选项 | 作用 | 示例 |
|---|---|---|
-r |
递归复制目录 | scp -r /local/dir user@remote:/remote/dir |
-P |
指定SSH端口(默认22,注意大写) | scp -P 2222 file.txt user@remote:/home/ |
-p |
保留文件权限、时间戳等属性 | scp -p file.txt user@remote:/backup/ |
-C |
启用压缩,适合传输大文件 | scp -C largefile.zip user@remote:/tmp/ |
示例
- 本地复制到远程:将
/local/file.txt复制到远程服务器168.1.100的/home/user/目录:scp /local/file.txt user@192.168.1.100:/home/user/
- 远程复制到本地:从远程服务器下载
/remote/backup.tar.gz到当前目录:scp user@192.168.1.100:/remote/backup.tar.gz ./
- 远程到远程复制:无需本地中转,直接从服务器A复制到服务器B(需两台服务器均可SSH互访):
scp user@serverA:/file.txt user@serverB:/remote/
rsync命令:高效同步与复制
rsync(remote sync)比scp更高效,支持增量同步、断点续传,适合大文件或频繁同步场景,语法为:
rsync [选项] 源文件/目录 目标路径
常用选项
| 选项 | 作用 | 示例 |
|---|---|---|
-a |
归档模式,保留所有属性(等同于-rlptgoD) |
rsync -a /local/dir /target/ |
-v |
显示详细传输过程 | rsync -v file.txt user@remote:/tmp/ |
-z |
压缩传输数据,减少网络开销 | rsync -az /local/dir user@remote:/remote/ |
-h |
以人类可读格式显示进度(如KB、MB) | rsync -ah --progress largefile.zip /backup/ |
--progress |
显示实时传输进度 | rsync --progress file.txt user@remote:/tmp/ |
--delete |
删除目标目录中多余的文件(同步时保持一致) | rsync -av --delete /source/ /target/ |
示例
- 本地同步目录:将
/source/目录同步到/target/(-a保留属性,--delete删除目标多余文件):rsync -av --delete /source/ /target/
- 远程同步(压缩+进度显示):将本地
/data同步到远程/backup:rsync -azh --progress /data user@remote:/backup/
复制:终端内与剪贴板交互
在命令行操作中,有时需要复制文本内容(如命令输出、配置片段),可通过终端快捷键或工具实现。
终端快捷键复制
- 复制选中内容:在GNOME Terminal、Konsole等现代终端中,按住
Ctrl+Shift鼠标左键拖动选中文本,或直接选中后按Ctrl+Shift+C复制(部分终端支持Ctrl+C,但需注意与中断进程的Ctrl+C区分)。 - :选中目标位置后按
Ctrl+Shift+V(或Ctrl+V,取决于终端配置)。
使用xclip工具复制到系统剪贴板
若需将命令输出直接复制到系统剪贴板(便于在其他应用中粘贴),可安装xclip工具:

yum install xclip # CentOS 7及以下 dnf install xclip # CentOS 8及以上
常用操作
- 复制文件内容到剪贴板:
cat file.txt | xclip -selection clipboard
- 复制命令输出到剪贴板:
ls -l | xclip -selection clipboard
- 从剪贴板粘贴到文件:
xclip -selection clipboard > file.txt
复制操作的注意事项
- 覆盖风险:默认情况下,
cp和scp会直接覆盖目标文件而不会提示,建议使用-i选项(或设置alias cp='cp -i')避免误操作。 - 权限问题:复制文件时,普通用户可能无法复制到系统目录(如
/root),需使用sudo提权。 - 磁盘空间:复制前需确保目标位置有足够磁盘空间,尤其复制大文件或目录时。
- 符号链接处理:使用
cp -d可保留符号链接本身,而非复制链接指向的文件;cp -L则默认 dereference(解引用)符号链接。
相关问答FAQs
问题1:使用cp命令复制目录时忘记加-r选项会怎样?
解答:如果复制目录时未使用-r或-R选项,cp命令会报错,提示“是目录而非普通文件”(cp: omitting directory 'dir_name'),这是因为cp默认只能复制文件,无法直接处理目录结构,需补充-r选项(如cp -r dir_name target/)或使用-a选项(保留属性并递归复制)。
问题2:在CentOS命令行中,如何将文件内容复制到系统剪贴板,并在图形界面中粘贴?
解答:可通过xclip工具实现,首先安装xclip(yum install xclip或dnf install xclip),然后使用管道将文件内容输出到剪贴板,
cat config.conf | xclip -selection clipboard ``` 会复制到系统剪贴板,可在GNOME、KDE等图形界面中通过`Ctrl+V`粘贴,若需从剪贴板粘贴到终端,使用`xclip -selection clipboard`即可读取剪贴板内容。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/16786.html