我在一个批处理脚本中重命名了几个文件。有没有办法撤消更改而不必将其重命名回来?
Linux 是否提供一些本地的 ing 方式undo
?
答案1
答案2
很不幸的是,不行。
答案3
不,任何 Unix 中都不存在神奇的撤消功能。 Unix 假设你知道自己在做什么。对于撤消支持,请使用 VCS(您的文本编辑器可能也内置了它)。
大多数文件系统不具备透明地执行此操作的能力。
Mac 和 Windows 上的时间机器和系统恢复分别只是备份/更改控制系统。
答案4
Linux/Unix 系统没有取消删除功能的原因在于大多数文件系统存储信息的方式。文件元信息全部存储在磁盘的前面,并引用磁盘其余部分的索引节点。通常,大多数文件系统会为此元区域中的文件分配 10 个块。前7指的是前7个inode。第 8 个和第 9 个进入 inode 列表(双向链接块),第 10 个进入列表列表的列表(三重链接块)。这因文件系统(ext4、jfs、xfs 等)而异,但这些块列表通常可以处理从 2GB 到几 TB 的任何文件大小。
但由于所有这些信息都存储在磁盘的前面,因此当文件被删除时,无法引用磁盘上的 inode 来了解它们所使用的元数据所属的内容。相比之下,FAT32 和 NTFS 实际上将一些标头信息与文件本身一起存储,从而更容易识别一组块所属的文件(只要该空间尚未被较新的文件回收)。在Linux工作中,当你删除某些东西时,为了提高效率,它几乎总是首先被新数据立即覆盖。