# yksync **Repository Path**: cstcloud-cnic/yksync ## Basic Information - **Project Name**: yksync - **Description**: 云坤对象存储数据同步工具 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-22 - **Last Updated**: 2025-08-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 云坤对象存储数据同步工具 [English](./README.en.md) [开发文档](./DEVELOP.md) 警告:此工具仍处于测试阶段。请谨慎使用。 您可以从发布页面下载二进制可执行文件,或[手动构建](./BUILD.md)。 ## 用法 运行前,请设置相关的环境变量(完整列表和示例请参见 [.envrc.example](.envrc.example)) 注意:您必须设置 `YKSYNC_YKOBS__AUTH_TOKEN` 环境变量。 ```sh ./target/release/yksync -vv sync /tmp/yksync/ ykobs:test0/dir1/ # 本地 -> ykobs (详细级别: 2) ./target/release/yksync -vv sync ykobs:test0/dir1/ /tmp/yksync/ # ykobs -> 本地 ./target/release/yksync -vv sync ykobs:test0/dir1/ ykobs:test0/dir10/ # ykobs -> ykobs ./target/release/yksync -vv sync /tmp/yksync/test0.txt ykobs:test0/dir1/test0.txt # 本地文件 -> ykobs 文件 ./target/release/yksync -vv sync /tmp/yksync/test0.txt /tmp/temp/test0.txt # 本地文件 -> 本地文件 ./target/release/yksync -vvv sync ykobs:test0/test0.txt ~/Downloads/test0.txt # ykobs 文件 -> 本地文件 (详细级别: 3) ``` **路径格式**: 对于云坤对象存储:使用格式 `ykobs:[存储桶名称]/[路径]/` 如果源路径以斜杠结尾,则将源目录同步到目标目录。 如果源路径不以斜杠结尾,则将源同步到 `[目标目录]/[源名称]`。 ### 调试 使用 `-vvv` 标志运行,并设置环境变量 `RUST_BACKTRACE` 为 `1`。 ## 注意/常见问题解答 ### 当前使用的文件差异比较方案 它使用文件大小。 它不使用修改时间,因为云坤对象存储没有提供手动设置文件元数据的 API。 它不使用哈希值,因为云坤对象存储 API 返回数据中的 MD5 哈希值仅显示为空字符串,尽管对于本地文件系统,它目前会计算 md5 值。 未来可能会更改此方案。 ## 已知问题 ## 待办事项 - 基准测试本地文件系统的 `tokio::fs` 方法与 `std::fs` + `rayon`(用于 md5 计算)方法 - 尝试 [rkyv](https://crates.io/crates/rkyv),一个 Rust 的零拷贝反序列化框架 - 为 crates/ykobs 添加测试 - 精确处理目录/文件重命名的情况 - 测试两个 yksync 命令同时运行的场景 ## 旁注 blake3 哈希算法似乎比 md5 好得多:https://github.com/BLAKE3-team/BLAKE3