ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

归档不等于备份:Linux 运维中最容易翻车的八个操作细节

归档不等于备份:Linux 运维中最容易翻车的八个操作细节 一以为 rm 有回收站现象文件删了想找回来发现根本没有回收站。原因rm 是 remove 的缩写直接删除对象默认没有回收站。课件给的安全用法初学阶段和重要文件一律用 rm -i删除前逐个询问。配上 -v 显示实际删除对象便于核对。-r 删除目录前先确认完整路径和目录内容。删除前固定三步确认当前目录查看命令将要处理的实际对象可以用 ls -d 加路径模式先看一眼只在确定的实验目录中执行删除。二-f 和不确定的路径组合现象一条 rm -rf 加变量或通配符删掉了意料之外的东西。课件原话-f 不询问、强制处理自动化中才按需使用不能与不确定路径组合不要把不确定的批量匹配、空变量和递归删除直接组合执行也不要在根目录或系统目录练习递归删除。正确姿势课件实验的顺序先 touch 造几个确定的临时文件用 ls -d 确认匹配到的就是这几个再 rm -iv 逐个确认删除。练目录删除时用专门的临时目录如 ~/magedu/day05/delete-test删完用 ls -ld 验证目录已不存在。三cp 覆盖了同名文件才发现现象复制时目标已有同名文件被悄悄盖掉内容丢了。课件的标准实验dir2/file1.txt 内容是 olddir1/file1.txt 内容是 new用 cp -iv 复制时先出现覆盖提示。输入 n 不覆盖cat 确认目标仍是 old确认确实要覆盖再执行并输入 y。更重要的认知脚本和自动化环境不能依赖交互询问没有人回答 y。所以批量覆盖前必须先确认源、目标和影响范围把确认做在执行前而不是指望 -i 救场。四把硬链接当备份现象给重要文件建了个硬链接以为这就是备份后来源文件内容改了或者误改了硬链接看到的也变了。原因硬链接是同一个 inode 的另一个文件名两个名称没有主次之分修改其中任意一个名称看到的都是同一份数据。课件明确说它不是独立备份因为通过任意名称修改内容都会影响同一份数据。正确认知硬链接的价值是同一文件系统内为普通文件增加入口、删一个名字数据不丢链接数大于 0 时仍可访问。需要真正备份仍应复制内容并验证恢复。五想给目录建硬链接或硬链到别的文件系统现象一ln 目录名 目录别名系统直接拒绝。原因目录树需要保持清晰的父子结构任意目录都能加硬链接就可能形成环路路径遍历和父子判断都会混乱。现代 Linux 禁止用户自行创建目录硬链接root 用普通 ln 也绕不过。目录里的 . 和 .. 是文件系统维护的不算手工硬链接。现象二把硬链接建到 /dev/shm报 Invalid cross-device link。原因inode 编号只在所属文件系统内有效/dev/shm 是独立的内存文件系统有自己的 inode 表。可用 df -T 路径1 路径2 先确认两个位置是否同一文件系统。这两个限制正是符号链接存在的理由符号链接保存的是目标路径可以指向目录、可以跨文件系统。六符号链接断了或删链接时把目标删了两个子坑子坑一删除符号链接时在链接名后加了 /行为可能不符合预期。课件明确删除符号链接应删除链接本身不要在链接名后添加 /。rm link1 删的是链接目标文件仍然存在。操作前用 ls -l 确认当前对象确实是链接首字符是 l。子坑二目标被改名、移动或删除后链接还在但访问不到目标这就是断链。课件实验先 ln -s target.txt entry.txtreadlink -f 还能解析出完整路径把 target.txt 改名成 target.moved 后entry.txt 本身还在但 readlink -f 无法再解析到目标。排查方法先用 readlink 查看链接中保存的路径再确认目标是否被改名、移动或删除。修复时只调整链接或恢复目标不要盲目重建整个应用目录。另一个相关细节current 保存的是绝对路径方便当前主机排查但把目录迁移到其他位置时需要重新建立链接。恢复归档后要证明版本文件已恢复直接读恢复目录里的文件如 restore/ruoyi/releases/1.0.0/index.html而不是只看链接。七生成压缩包就以为备份完成了现象tar -czf 一跑完就放心了等真要用时发现包坏了、内容不全或者直接 tar -xzf 解到原目录把现场盖了。课件两句话点破归档和压缩不是一回事归档只是把多个对象组织成一个文件体积通常不会明显变化压缩才尝试减少存储空间而且 JPG 等已压缩格式收益很小。归档完成不等于备份可用成功生成压缩包并不等于备份可用还要查看内容并实际恢复。标准恢复流程先 tar -tzf 查看归档内容mkdir 建一个空目录tar -xzf 提取到空目录用 -C 指定不要直接覆盖原目录最后核对恢复出的文件内容。四步形成恢复证据创建、归档、提取、比较。八find 批量操作翻车以及时间、通配符的小陷阱这三个坑都出在动手太快陷阱一-exec 直接上。课件铁律先用 -print 验证结果再加入执行动作涉及删除、覆盖时仍然遵守先打印结果、检查搜索起点和条件、再执行动作。陷阱二mtime 按日历日期理解。课件明确mtime 按 24 小时区间计算不应简单理解为日历日期。-mmin -30 是最近 30 分钟-mtime -7 是最近 7 个 24 小时区间内-mtime 7 是超过相应区间。陷阱三通配符没加引号。*.log 要加引号避免星号先被当前 Shell 展开。同理find 里的圆括号前要加反斜线避免括号被 Shell 提前解释。补充两个容易忽视的点通配符本身不负责递归进入子目录批量复制、移动、删除前先 ls -d 查看实际展开结果。花括号展开如 file{1..3}.txt与通配符不同它直接生成名称、不检查文件是否存在。管道接 xargs 时名称带空格的文件如课件里的 file yangge.txt会被按空白拆成两个参数导致报错稳妥做法是 find -print0 配 xargs -0两端都用 NUL 字符分隔。
返回列表