#file #parts #command-line #slice #numbers #disk-space #together

bin+lib chopstick

命令行文件切片和解切片工具

6 个版本 (1 个稳定版本)

1.0.0 2022 年 3 月 17 日
0.2.4 2022 年 1 月 6 日
0.2.1 2021 年 12 月 1 日
0.2.0 2021 年 11 月 30 日

命令行工具 中排名 1736

GPL-3.0-only

50KB
1K SLoC

Chopstick

Codeberg CI Crates.io Dependencies

Chopstick 提供了两个命令行程序(chopstick),允许快速将文件分割成部分。 chop 将文件分割成部分,而 stick 则将它们重新组合

该项目旨在以尽可能简单的方式完成,同时最小化可执行文件的大小。虽然我有一些想法,但我不会添加大量功能,这些功能可能或可能不会最终被采纳(参见 路线图)。

Chop

chop 接收文件的路径以及你希望将文件分割成多少部分或部分的尺寸。为确保数据安全,chop 至少需要足够的磁盘空间来存储每个部分的尺寸。出现错误时,可能会得到一个部分完成的状态,但你的文件的所有字节都将完好无损。在创建每个部分后,原始文件将在创建下一部分之前被截断(缩短)。这样,chop 在不丢失任何数据的情况下,只需要最小的额外磁盘空间。这也意味着 chop 的内存使用相对较低,因为在给定时间只需要将一个部分(而不是整个文件)保留在内存中。这使得 chop 适用于分割非常大的多吉字节文件。

用法

USAGE:
    chop [OPTIONS] <--size <part_size>|--parts <num_parts>> <file>

ARGS:
    <file>
            The file to split

OPTIONS:
    --dry-run
        Don't actually do anything, just tell me about it (implies verbose)

        [aliases: dry]

    -h, --help
            Print help information

    -n, --parts <num_parts>
            The number of parts to chop the file into. Parts will all be the same size (except the       
            last one potentially)

    -r, --retain
            Don't delete the original file (requires more disk space)

            [aliases: no-delete, preserve]

    -s, --size <part_size>
            The maximum size each part should be. Accepts units - e.g. 1GB, 20K, 128MiB. The last
            part may be smaller than the others

    -v, --verbose
            Makes chop tell you what it's doing

    -V, --version
            Print version information

Stick

stick 接收切割文件的名称(不需要扩展名),尝试在同一目录内发现其他部分,并将它们重新组合。这是通过将一个部分读入内存,将其写入原始文件,删除该部分;然后对所有部分重复此过程。通过这种方式,stick 只需要与一个部分占用的额外磁盘空间一样多的空间。与 chop 一样,没有丢失数据的风险,因为成功写入之前不会删除任何内容。出现错误时,可能会得到一个部分完成的状态,但你的文件的所有字节都将完好无损。

用法

USAGE:
    stick [OPTIONS] <file_name>

ARGS:
    <file_name>
            The file to reconstruct. You only need to specify one part, providing the extension is
            optional

OPTIONS:
    --dry-run
        Don't actually do anything, just tell me about it (implies verbose)

        [aliases: dry]

    -h, --help
            Print help information

    -r, --retain
            Don't delete the part files (requires more disk space)

            [aliases: no-delete, preserve]

    -v, --verbose
            Makes stick tell you what it's doing

    -V, --version
            Print version information

路线图

达到稳定版本!(v1.0.0)

  • ✅ 更好的测试
  • pico_args 移动到此处以减小二进制文件大小
  • ✅ 添加详细命令行选项
  • ✅ 添加模拟运行命令行选项
  • ✅ 在运行时限制内存使用(当将单个部分放入内存是个糟糕主意时使用)

在 v1.0.0 之后

  • 添加支持使用单个命令处理多个文件
  • 以及“不安全”模式,该模式不需要额外的磁盘空间(通过在写入之前截断来实现)
  • 从中途中断的状态恢复

依赖项

~2–10MB
~91K SLoC