Linux notes / 01

小型服务器的变更窗口

远程操作最重要的不是命令短,而是失败后仍能回到已知状态。

变更前保存什么

版本
应用、内核与配置格式的准确版本。
状态
监听端口、服务状态、失败单元与防火墙规则。
数据
数据库、密钥、证书和服务环境文件应属于同一快照。
回滚
提前安排定时恢复任务,并保留第二个 SSH 会话。

活动 SQLite 数据库

SQLite 可能处于 WAL 模式。运行中只复制主数据库文件,无法保证得到一致快照。优先使用应用自带备份;否则使用 SQLite online backup API。

sqlite3 /path/to/app.db \
  ".timeout 5000" \
  ".backup '/secure/backup/app.db'"

sqlite3 /secure/backup/app.db "PRAGMA quick_check;"

自动回滚护栏

正式变更前启动一次性定时任务。确认新配置可达、服务健康且重启后仍正常,再解除护栏。

  1. 准备

    保存原配置和运行值,校验备份可读。

  2. 设防

    安排 10 分钟后执行的恢复任务。

  3. 变更

    一次只改一个层面,并立即检查监听与日志。

  4. 提交

    完成外部验证后取消定时任务,记录最终状态。

防火墙的最小动作

  • 始终保留已验证的 SSH 规则。
  • 新增端口时同时写明传输类型和用途。
  • 使用可重复加载的完整配置,而不是临时散落命令。
  • 不要在远程会话中无条件执行 flush ruleset