# 文件名/目录名混淆与恢复工具 (Filename/Directory Obfuscation & Restoration Tool) ## 概述 这是一个 Python 脚本,用于对指定目录下的文件名和子目录名进行“混淆”处理,将它们替换为随机生成的 UUID (Universally Unique Identifier),同时保留原始的文件扩展名。脚本会生成一个 `mapping.json` 文件,记录原始名称与混淆后名称的对应关系。之后,可以使用这个 `mapping.json` 文件将文件名和目录名恢复到原始状态。 这对于需要隐藏原始文件结构或名称,但又希望能够恢复的场景非常有用(例如,临时分享文件,或对大量媒体文件进行初步匿名化处理)。 ## 功能特性 * **混淆 (Obfuscate)**: * 递归遍历指定目录下的所有文件和子目录。 * 将每个文件(保留扩展名)和目录重命名为唯一的 UUID V4 字符串。 * 在目标目录的根目录下创建一个 `mapping.json` 文件,存储 `{ "混淆后的相对路径": "原始相对路径" }` 的映射关系。 * 优先处理深层路径,确保目录在其内容被重命名后才被重命名。 * 执行前会有确认提示,防止误操作。 * 如果混淆过程中发生错误,会尝试根据已执行的操作进行回滚。 * **恢复 (Restore)**: * 读取目标目录根目录下的 `mapping.json` 文件。 * 根据映射关系,将混淆后的 UUID 名称恢复为原始的文件名和目录名。 * 能够处理嵌套目录的恢复。 * 执行前会有确认提示。 * 处理过程中会检查路径是否存在,并报告错误。 ## 依赖 * Python 3.x * 标准库: `os`, `json`, `uuid`, `argparse`, `sys`, `pathlib` (无需安装额外的第三方库) ## 使用方法 通过命令行运行脚本。 ```bash python <脚本文件名>.py <模式> <目标目录路径> ``` **参数说明:** * `<脚本文件名>.py`: 你保存此脚本的文件名 (例如 `obfuscator.py`)。 * `<模式>`: * `obfuscate`: 执行混淆操作。 * `restore`: 执行恢复操作。 * `<目标目录路径>`: 需要进行操作的文件夹的路径。 **示例:** 1. **混淆目录 `/data/my_videos` 下的所有文件和子目录:** ```bash python obfuscator.py obfuscate /data/my_videos ``` 执行前会要求确认。成功后,`/data/my_videos` 下的文件和目录名会被替换为 UUID,并在 `/data/my_videos` 目录下生成 `mapping.json`。 2. **恢复目录 `/data/my_videos` 下的原始名称:** ```bash python obfuscator.py restore /data/my_videos ``` 执行前会要求确认。脚本会查找 `/data/my_videos/mapping.json` 文件,并根据其内容恢复原始名称。 ## 重要提示与警告 1. **备份数据**: **强烈建议在运行此脚本(尤其是 `obfuscate` 模式)之前备份您的重要数据!** 脚本会直接重命名文件和目录,虽然有恢复机制,但意外情况(如 `mapping.json` 丢失或损坏)可能导致数据难以恢复。 2. **`mapping.json` 文件**: 这个文件是 **恢复原始名称的关键**。请务必妥善保管。如果丢失或损坏此文件,将 **无法** 通过此脚本恢复原始名称。 3. **`mapping.json` 的位置**: 混淆操作会在目标目录的 **根目录** 下创建 `mapping.json`。恢复操作也需要在此目录下找到该文件才能工作。 4. **重复混淆**: 如果目标目录下已经存在 `mapping.json` 文件,再次执行 `obfuscate` 操作将会失败,并提示用户移除或重命名该文件。这是为了防止意外覆盖重要的映射信息。 5. **恢复前提**: `restore` 操作假定当前目录中的文件名和结构是上次 `obfuscate` 操作产生的结果,并且与 `mapping.json` 文件中的记录相符。如果手动修改了混淆后的名称或结构,恢复可能会失败或产生不正确的结果。 6. **错误处理**: 脚本包含基本的错误处理(如文件/目录不存在、权限问题),但可能无法覆盖所有边缘情况。如果在操作过程中遇到错误,请检查控制台输出信息。恢复操作在出错时不会删除 `mapping.json` 文件。