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