跳转至

文件命名与路径规范 📂

版本:1.0
适用范围:LinuxDC 体系中所有服务器、脚本、配置文件、目录结构
目的:在"一切皆文件"的 Linux 哲学下,确保命名与路径高度标准化、可预测、可自动化,从源头消除因命名混乱导致的生产事故。


1. 命名核心原则

全小写:目录名、文件名一律使用小写字母(a–z)。禁止大写字母,避免因 Linux 大小写敏感导致的致命生产事故。

语义化分割:统一使用中划线 -(kebab-case)作为单词分隔符。严禁使用空格,不建议使用下划线 _(除 Python 模块或特定系统要求外)。

见名知意:禁止 test.shtemp.txtmyscript.sh。必须使用明确描述性的名称,如 db-backup-cron.shnginx-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(logrotate dateext 格式)

统一存放于 /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/[应用名]/ 而非随意路径
  • 脚本中路径已变量化,无硬编码绝对路径字符串

所有新文件、目录、脚本必须严格遵守以上规范。如有疑问,请在项目内部讨论后统一更新本规范文档。