# LT1AssetTool 独立 EXE 工具,只做三件事: 1. 扫描服务器资产路径,列出服务器现在有哪些资产,生成一个随身 JSON。 2. 扫描一个或多个 UNC 路径,读取随身 JSON,服务器已有资产不参与复制,剩下的复制到一个或多个指定路径。 3. 将一个或多个磁盘路径下的资产复制或剪切到服务器资产路径,并提示重新执行第 1 步。 ## 资产识别 当前只识别平铺文件: - `LT1*.tar.gz` - `LT1*.tgz` - `LT1*.tar` - `LT1*.zip` - `LT1*.txt` 判断是否已有资产使用: ```text 资产类型 + 文件名 + 文件大小 ``` ## 第 1 步:扫描服务器资产路径 输入: ```text 服务器资产路径: D:\LuTan1_Image_Pool_Zip D:\LT1_data_lsarorbit 服务器资产 JSON 保存为: E:\server_assets.json ``` 输出 JSON 示例: ```json { "schema": "lt1_asset_inventory.v2", "generated_at": "2026-06-22 16:00:00", "roots": [ "D:\\LuTan1_Image_Pool_Zip", "D:\\LT1_data_lsarorbit" ], "asset_count": 2, "assets": [ { "kind": "lt1_archive", "name": "LT1A_xxx.tar.gz", "path": "D:\\LuTan1_Image_Pool_Zip\\LT1A_xxx.tar.gz", "size": 123456789, "mtime": 1782100000.0 }, { "kind": "lt1_orbit", "name": "LT1A_GpsData_GAS_C_20240101.txt", "path": "D:\\LT1_data_lsarorbit\\LT1A_GpsData_GAS_C_20240101.txt", "size": 345678, "mtime": 1782100100.0 } ] } ``` 以后就带着这个 JSON 去内网机器。 ## 第 2 步:从 UNC 补拷缺失资产 输入: ```text 读取服务器资产 JSON: E:\server_assets.json UNC 源路径: \\server01\lt1_archives \\server02\lt1_orbits 复制目标路径: E:\LT1_TRANSFER F:\LT1_TRANSFER ``` 规则: - JSON 中已有且大小一致:跳过 - JSON 中有同名资产但大小不同:报告冲突,不复制 - JSON 中没有:复制到指定目标路径 - 多个目标路径时,选择第一个空间足够的路径 - 如果目标路径已有同名文件且大小一致:跳过 - 复制过程先写 `.part`,完成并校验大小后再改名 ## 第 3 步:磁盘导入服务器 输入: ```text 磁盘资产路径: E:\LT1_TRANSFER F:\LT1_TRANSFER 服务器资产路径: D:\LuTan1_Image_Pool_Zip D:\LT1_data_lsarorbit ``` 可选: ```text 剪切到服务器 ``` 规则: - 服务器已有且大小一致:跳过 - 服务器有同名资产但大小不同:报告冲突,不覆盖 - 服务器没有:复制或剪切到服务器路径 - 多个服务器路径时,选择第一个空间足够的路径 执行第 3 步之后,回到服务器重新执行第 1 步,生成新的随身 JSON。 ## 报告和日志 需要指定 `报告/日志目录`,例如: ```text E:\LT1AssetToolReports ``` 工具会生成: ```text E:\LT1AssetToolReports\ logs\ run_YYYYMMDD_HHMMSS.log reports\ unc_copy_report_YYYYMMDD_HHMMSS.csv disk_import_report_YYYYMMDD_HHMMSS.csv ``` CSV 可以用 Excel 打开。 ## 命令行 扫描服务器: ```powershell python lt1_data_sync_cli.py scan-server ` --report-dir "E:\LT1AssetToolReports" ` --server-roots "D:\LuTan1_Image_Pool_Zip;D:\LT1_data_lsarorbit" ` --output-json "E:\server_assets.json" ``` 从 UNC 复制缺失资产: ```powershell python lt1_data_sync_cli.py copy-unc ` --report-dir "E:\LT1AssetToolReports" ` --server-json "E:\server_assets.json" ` --unc-roots "\\server01\lt1_archives;\\server02\lt1_orbits" ` --targets "E:\LT1_TRANSFER;F:\LT1_TRANSFER" ` --execute ``` 磁盘导入服务器: ```powershell python lt1_data_sync_cli.py import-disk ` --report-dir "E:\LT1AssetToolReports" ` --disk-roots "E:\LT1_TRANSFER;F:\LT1_TRANSFER" ` --server-roots "D:\LuTan1_Image_Pool_Zip;D:\LT1_data_lsarorbit" ` --execute ``` ## 打包 EXE ```powershell cd D:\Code\Insar_management_system_v2\tools\lt1_data_sync .\build_exe.ps1 -Python "C:\ProgramData\anaconda3\envs\InSAR\python.exe" ``` 输出: ```text dist\LT1DataSync.exe ```