cp · 复制文件

上游:ls(确认源文件存在)· mkdir(建好目标目录再复制进去) 下游:mv(cp 留原件,mv 是搬家)· tar(批量备份用 tar,单文件复制用 cp)


一句话是什么

cp 复制文件或目录—— 就像”复制粘贴”,原文件还在,新建一份副本。


为什么需要它

修改 server.properties 之前,先备份一份:

cp ~/mc-server/server.properties ~/mc-server/server.properties.bak
# 改坏了?还有 .bak 可以恢复

核心用法

公式

cp [选项] 源文件 目标位置

常用命令

命令说明
cp a.txt b.txt复制 a.txt 为 b.txt(同目录改名副本)
cp a.txt ~/backup/把 a.txt 复制到 backup 目录
cp -r 目录/ 目标/递归复制整个目录(-r 必须加)
cp -p 源 目标保留原始时间戳和权限(p = preserve)
cp -i 源 目标目标存在时提示确认(防覆盖)

cp vs mv

cp:复制 → 原文件还在,多了一个副本
mv:搬家 → 原文件消失,换了个位置(或名字)

Linux 笑话

Aaron 改 server.properties 之前忘记备份, 改错了之后想恢复,但没有备份文件。

只好重新搜索每个配置项的默认值, 花了半小时才改回来。

从那以后他记住了:

# 改任何配置文件之前,先这样
cp server.properties server.properties.bak

改配置之前备份一份 .bak,是好习惯。


例题精讲

📗 初探 Starter — 复制一个配置文件备份

# 复制 server.properties 作为备份
cp ~/mc-server/server.properties ~/mc-server/server.properties.bak
 
# 确认两个都存在
ls ~/mc-server/server.properties*
# server.properties  server.properties.bak

📘 应用 User — 复制整个 worlds 目录

# 手动备份存档(cp 方式,适合小目录)
cp -r ~/mc-server/worlds/ ~/mc-backups/worlds-backup/
 
# 确认复制成功
ls ~/mc-backups/
# worlds-backup/

📙 管理 Admin — 部署脚本到多个位置

# 把通用的 check.sh 复制到多个服务器目录
cp ~/scripts/check.sh ~/mc-server/check.sh
cp ~/scripts/check.sh ~/mc-server2/check.sh
 
# 保留权限(确保 +x 不丢失)
cp -p ~/scripts/backup.sh ~/mc-server/backup.sh
 
# 确认权限
ls -l ~/mc-server/backup.sh
# -rwxr-xr-x  ← +x 权限保留了

官方文档参考

man cp      # 完整手册
cp --help   # 快速选项

cp 源 目标 复制;-r 复制目录;-p 保留权限;-i 防覆盖;改配置前先 .bak 备份是好习惯。


节点链接

上游

  • ls ← 确认源文件存在
  • mkdir ← 建好目标目录再 cp

下游

  • mv ← cp 留原件,mv 搬家不留原件
  • tar ← 大量文件批量备份用 tar

实战


节点版本:v1.0 · 2026-04-20 Tier 1 基础节点——Linux 的复印机