2025-04-07 20:52:40 +08:00

71 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 文件名/目录名混淆与恢复工具 (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` 文件。