Files

3.9 KiB
Raw Permalink Blame History

LT1AssetTool

独立 EXE 工具,只做三件事:

  1. 扫描服务器资产路径,列出服务器现在有哪些资产,生成一个随身 JSON。
  2. 扫描一个或多个 UNC 路径,读取随身 JSON,服务器已有资产不参与复制,剩下的复制到一个或多个指定路径。
  3. 将一个或多个磁盘路径下的资产复制或剪切到服务器资产路径,并提示重新执行第 1 步。

资产识别

当前只识别平铺文件:

  • LT1*.tar.gz
  • LT1*.tgz
  • LT1*.tar
  • LT1*.zip
  • LT1*.txt

判断是否已有资产使用:

资产类型 + 文件名 + 文件大小

第 1 步:扫描服务器资产路径

输入:

服务器资产路径:
D:\LuTan1_Image_Pool_Zip
D:\LT1_data_lsarorbit

服务器资产 JSON 保存为:
E:\server_assets.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 补拷缺失资产

输入:

读取服务器资产 JSON
E:\server_assets.json

UNC 源路径:
\\server01\lt1_archives
\\server02\lt1_orbits

复制目标路径:
E:\LT1_TRANSFER
F:\LT1_TRANSFER

规则:

  • JSON 中已有且大小一致:跳过
  • JSON 中有同名资产但大小不同:报告冲突,不复制
  • JSON 中没有:复制到指定目标路径
  • 多个目标路径时,选择第一个空间足够的路径
  • 如果目标路径已有同名文件且大小一致:跳过
  • 复制过程先写 .part,完成并校验大小后再改名

第 3 步:磁盘导入服务器

输入:

磁盘资产路径:
E:\LT1_TRANSFER
F:\LT1_TRANSFER

服务器资产路径:
D:\LuTan1_Image_Pool_Zip
D:\LT1_data_lsarorbit

可选:

剪切到服务器

规则:

  • 服务器已有且大小一致:跳过
  • 服务器有同名资产但大小不同:报告冲突,不覆盖
  • 服务器没有:复制或剪切到服务器路径
  • 多个服务器路径时,选择第一个空间足够的路径

执行第 3 步之后,回到服务器重新执行第 1 步,生成新的随身 JSON。

报告和日志

需要指定 报告/日志目录,例如:

E:\LT1AssetToolReports

工具会生成:

E:\LT1AssetToolReports\
  logs\
    run_YYYYMMDD_HHMMSS.log
  reports\
    unc_copy_report_YYYYMMDD_HHMMSS.csv
    disk_import_report_YYYYMMDD_HHMMSS.csv

CSV 可以用 Excel 打开。

命令行

扫描服务器:

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 复制缺失资产:

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

磁盘导入服务器:

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

cd D:\Code\Insar_management_system_v2\tools\lt1_data_sync
.\build_exe.ps1 -Python "C:\ProgramData\anaconda3\envs\InSAR\python.exe"

输出:

dist\LT1DataSync.exe