#copying #copy #utility #progress #ui #cp #standard

app pretty-copy

多用途复制工具,可查看复制操作的进度

3 个版本

0.1.2 2024年5月11日
0.1.1 2024年3月26日
0.1.0 2024年3月26日

#4 in #copying

GPL-3.0 许可证

57KB
927

美化复制

美化复制(简称 pcp)是一个用于复制的工具,旨在提供比标准 UNIX cp 工具更好的用户界面和更多功能。

安装

Cargo

您可以使用 cargo 安装 pretty-copy crate,尽管在这种情况下,二进制文件将被命名为 pretty-copy,而不是 pcp,因此您需要手动更改名称

cargo install pretty-copy
cd /path/to/your/cargo/bin
mv pretty-copy pcp

基于 Arch

在 Arch 发行版上,您可以使用 AUR 辅助程序(例如,使用 yay 安装 pretty-copy 软件包)

yay -S pretty-copy

或克隆此存储库并使用 makepkg

git clone https://github.com/0x50f13/pcp
cd pcp/pkg
makepkg -si

其他

目前,在其他发行版上,您可以从 发行版 下载 x86_64 二进制文件,或者 自行构建

构建

要构建,您需要 Rust 和 Cargo。要构建,请克隆此存储库并使用 cargo

git clone https://github.com/0x50f13/pcp
cd pcp
cargo build --release

然后将生成的文件复制到您的 $PATH 中的任意目录

# Here /usr/bin is just an example
cp target/release/pcp /usr/bin

用法

用法: pcp [OPTIONS] <SRCS>... <DEST>

参数/选项 描述
<SRCS>... 源文件/目录
<DEST> 目标文件/目录
-r, --递归 递归复制目录
--no-progress 不显示进度
--fail-fast 首次错误时失败
--max-chunks-number<MAX_CHUNKS_NUMBER> 存储在内存中的文件缓存的最多块数 [默认值: 1024]
-h, --帮助 打印帮助

功能

当前

  • 带有进度的文件复制
  • 复制目录

未来

  • 通过 HTTP 和 HTTPS 协议复制文件
  • 复制元数据(例如 SELinux 标签)
  • 通过 SCP 复制文件/目录
  • 通过 FTP 和 SFTP 复制文件/目录
  • 在支持的情况下重新链接文件
  • 直接写入 devfs,因此工具可以直接将文件烧录到驱动器
  • 在复制目录之前计算目录大小
  • Qt 或 GTK 进度窗口(或 Tcl,甚至可能是直接使用 GL 的渲染?)
  • 支持可选插件

开发

文档

在线

待办事项

生成

使用 cargo doc 进行文档生成。

简要摘要

该程序目前具有3个动态组件,它们对应相应的特性

  • Reader 实现读取文件(及其元数据)
  • Write 实现写入文件
  • ProgressDisplay 实现向用户显示进度
  • 实际上还计划增加一个:InstantCopyHelper,它将帮助确定文件是否可以即时relink

一般的算法是我们有两个协程和它们之间的通道。一个协程读取文件,另一个协程写入。写入的协程还会更新进度,这是同步完成的(因此将来可能通过mpsc通道添加UI线程)

依赖项

~6–19MB
~197K SLoC