高危文件与目录操作
风险来自目标解析
rm -rf "$TARGET_DIR"
rm -rf *
find /some/path -delete
chown -R app:app /some/path
变量为空、当前目录错误、通配符展开或路径拼写错误,都可能扩大目标。不要对 /、用户主目录、工作区根目录或未解析变量执行递归破坏操作。
删除前六步
printf '%s\n' "$TARGET_DIR"
realpath -- "$TARGET_DIR"
find "$TARGET_DIR" -maxdepth 1 -type f -print
- 确认主机和用户。
- 将目标解析为绝对路径。
- 明确验证目标位于允许根目录内。
- 用
find/ls预览准确集合。 - 检查文件是否仍被进程使用。
- 再执行最小范围操作,并记录结果。
-- 表示后续内容不是命令选项,可处理以 - 开头的文件名:
rm -- -strange-name.txt
按时间清理临时文件
先预览:
find /srv/nloop/tmp -xdev -type f -mmin +1440 -print
确认目录和结果后才考虑 -delete。mtime 表示内容修改时间,不等于业务“创建时间”;正在处理但长时间未修改的文件也可能被误删。更稳妥的设计是每任务独立目录、完成标记、运行任务锁,以及由同一清理程序排除活跃任务。
mv 和 cp 也会破坏数据
覆盖同名文件、跨文件系统移动中断、权限/所有者变化都会造成问题。重要发布应使用新版本目录,验证后原子切换软链接,而不是覆盖正在运行的目录。