文件命名与路径规范 📂
版本:1.0
适用范围:LinuxDC 体系中所有服务器、脚本、配置文件、目录结构
目的:在"一切皆文件"的 Linux 哲学下,确保命名与路径高度标准化、可预测、可自动化,从源头消除因命名混乱导致的生产事故。
1. 命名核心原则
全小写:目录名、文件名一律使用小写字母(a–z)。禁止大写字母,避免因 Linux 大小写敏感导致的致命生产事故。
语义化分割:统一使用中划线 -(kebab-case)作为单词分隔符。严禁使用空格,不建议使用下划线 _(除 Python 模块或特定系统要求外)。
见名知意:禁止 test.sh、temp.txt、myscript.sh。必须使用明确描述性的名称,如 db-backup-cron.sh、nginx-access-log-rotate.sh。
版本占位备份:修改配置文件前,必须备份为 filename.conf.bak.YYYYMMDD,示例:nginx.conf.bak.20260122。
2. 目录结构规范
为了超越常规运维,我们将非系统原生文件统一划分到以下标准路径:
| 路径 | 用途说明 | 推荐权限 | 备注 |
|---|---|---|---|
/opt/app/ |
所有第三方业务应用安装目录 | appuser:appgroup | 推荐软链接到 /srv/app/ |
/opt/scripts/ |
运维自定义脚本(备份、监控、巡检等) | root:root 755 | 所有脚本统一存放,便于审计 |
/opt/data/ |
业务数据持久化目录(建议独立挂载点) | appuser:appgroup | 重要数据目录,建议 RAID + 备份 |
/opt/logs/ |
应用日志统一存放路径 | root:root 755 | 建议软链接 /var/log/app/ 到此 |
/opt/conf/ |
跨应用的全局配置或环境声明文件 | root:root 644 | 存放非系统原生配置文件 |
最佳实践
所有自定义内容尽量不污染 /etc/,统一放在 /opt/ 下,便于迁移、备份、审计。系统级配置(如 /etc/ssh/sshd_config)仍保持原路径,但修改前必须备份。
3. 运维脚本命名规范
脚本命名格式:[功能所属]-[具体动作]-[对象].sh
正例:
sys-init-rhel9.sh
db-sync-mysql.sh
mon-check-disk.sh
backup-full-system.sh
nginx-reload-config.sh
禁忌:
1.sh # 无意义序号
myscript.sh # 泛化命名
backup_all.sh # 下划线分隔
test.sh # 临时文件命名
自动化警告
在编写 Ansible Playbook 或 Shell 脚本时,硬编码路径是导致失败的首要原因。请始终在脚本开头定义路径变量:
BASE_DIR="/opt/app/nginx"
CONF_DIR="/opt/conf"
LOG_DIR="/opt/logs/nginx"
4. 配置文件备份规范
修改 /etc 下任何配置文件前,严禁直接编辑原文件,必须遵循以下流程:
第一步:备份原文件
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak.$(date +%Y%m%d)
第二步:原子化编辑
编辑后文件保持原名,不带版本号。
第三步:文件头部添加修改注释
# Modified by: linuxdc-admin
# Date: 2026-01-22
# Purpose: Tuning worker_connections for high concurrency
# Before: worker_connections 1024
# After: worker_connections 4096
第四步:语法验证后重载
nginx -t && systemctl reload nginx
5. 主机名命名规范
主机名是数据中心资产管理的核心标识。推荐格式:[环境][地域]-[应用]-[编号]
环境标识:
| 标识 | 含义 |
|---|---|
p |
Production(生产) |
s |
Staging(预发布) |
t |
Test(测试) |
d |
Dev(开发) |
示例:
psh-nginx-01 # 生产环境上海区 Nginx 第 1 节点
thk-db-pg-02 # 测试环境香港区 PostgreSQL 第 2 节点
dkr-app-api-03 # 开发环境 API 服务第 3 节点
命名规则:
- 全小写,中划线分隔
- 长度 ≤ 63 字符(DNS 约束)
- 不含下划线、空格或特殊字符
- 编号从
01开始,保留两位
6. 日志文件命名规范
日志文件应具备可滚动性,命名包含日期戳:
- 当前活动日志:
access.log - 已归档日志:
access.log-20260122.gz(logrotatedateext格式)
统一存放于 /opt/logs/[应用名]/,例如:
/opt/logs/nginx/access.log
/opt/logs/nginx/error.log
/opt/logs/mysql/mysql.log
/opt/logs/myapp/service-api.log
7. 数据库与备份文件命名规范
# 备份文件
system-config-20260215.tar.zst
mysql-full-20260215.xbstream.gz
app-data-daily-20260215.tar.gz
# 数据库 dump
mydb-20260215-020000.sql.gz # 含时间戳(YYYYMMDD-HHMMSS)
检查清单
- 所有脚本文件名全小写,中划线分隔,见名知意
-
/etc下的配置文件变更前已备份(.bak.YYYYMMDD) - 主机名符合
[环境][地域]-[应用]-[编号]格式 - 应用日志存放于
/opt/logs/[应用名]/而非随意路径 - 脚本中路径已变量化,无硬编码绝对路径字符串
所有新文件、目录、脚本必须严格遵守以上规范。如有疑问,请在项目内部讨论后统一更新本规范文档。