成功 12,481 · 跳过 0 · 失败 0 · 剩余 8.6 GB
D:\照片 2024\2024-07\IMG_4821.ARW
资源管理器的复制对话框一旦中断,不会告诉你进行到哪里。SmartCopy 把任务放进队列,可以暂停和继续,并且只有在校验通过后才删除移动的来源。拔掉 U 盘、NAS 断开、重启,进度都还在。
免安装 · 无需管理员权限 · Windows 10 / 11(64 位)
成功 12,481 · 跳过 0 · 失败 0 · 剩余 8.6 GB
D:\照片 2024\2024-07\IMG_4821.ARW
设备已断开 — 重新连接后会继续 (WinError 64)
移动分三个阶段,前一个结束才进入下一个。
在目标位置写成 .scpart 临时文件。写完之后才改成最终名称,所以中途停下也不会让写了一半的文件看起来像正常文件。
比对大小和修改时间,需要时还比对 SHA-256。若不一致就删除该副本并重新复制。
只有通过校验的文件才删除来源。被跳过的文件的来源会保留,空文件夹最后再清理。
同一驱动器内的移动只是改名 — 很快,而且根本不会产生中间状态。上面的三个阶段只用于跨驱动器。
可以在创建任务时预先决定,也可以让它每次询问。选择询问时,对话框里可以勾选 对之后的冲突也应用相同选择。
| 策略 | 作用 | 适用场景 |
|---|---|---|
| overwrite | 覆盖目标 | 来源始终最新的单向备份 |
| skip | 跳过并保留来源 | 只补齐缺失的部分 |
| rename | 名称 (1).扩展名新建为 | 两者都要保留时(默认) |
| keep_newer | 保留修改时间较新的一方 | 合并两边都改过的文件夹 |
| keep_larger | 保留较大的一方 | 混有被截断保存的文件时 |
| ask | 显示双方的大小和时间并询问 | 需要逐个判断时 |
进度不只存在于屏幕上,而是写入磁盘。所以关掉应用或断电都不会从头再来。
每完成一个文件就追加一行。因为只做追加,断电最多损坏最后一行,而那一行直接丢弃。
%LOCALAPPDATA%\SmartCopy\jobs\
大文件的 .scpart会原样保留已经写到哪里。只有在旁边的元数据文件确认来源的大小和修改时间没变之后才续传。
设备消失时不会算作失败 —— 任务会进入 等待重新连接 状态并暂停。重新连接后会从中断处继续。
WinError 21 · 53 · 59 · 64 · 1167
临时性问题(例如被其他程序锁定的文件)会按 0.5 秒 → 2 秒 → 5 秒自动重试。仍然失败的会留在列表里,用 重试 按钮只重跑那些 —— 文件夹结构原样保留。
如果每次都在手动点同样的按钮,那是程序该做的事。
文件进入文件夹并安静下来后,就运行你保存的作业。不会去抓正在写入的文件——它会等变化停止。
smartcopy-cli watch "交付" --folder D:\读卡导入
每天凌晨三点,或登录时。无需管理员权限即可设置,也能直接在 Windows 任务计划程序中删除。
smartcopy-cli schedule --install "每周备份" --when daily --at 03:00
右键点击文件夹,就会出现你保存的作业名称。选中后窗口会填入该设置——开始仍由你来点。
单张证明很容易被丢掉。因此每张都包含前一张的哈希——抽掉中间一张,链条就断了。
smartcopy-cli ledger --verify
这不是时间戳机构。它挡住的是:交付了十次,却只拿出中意的九次。
| 处理什么 | 方式 |
|---|---|
| 块大小 | 根据介质决定 —— 固定磁盘 4 MB、U 盘 1 MB、网络 256 KB。暂停和取消在块边界响应,所以不会一味加大。 |
| 同时运行的作业 | 默认 2 个,因为多个作业同时压同一块磁盘反而整体更慢。 |
| 优先级 | 每个作业带有优先级,高的先走。相同时按加入顺序。 |
| 大批量枚举 | scandir 遍历,并且不跟随符号链接和联接,所以不会陷入循环复制。 |
| 长路径 · Unicode | 通过绕开 260 字符限制的路径前缀来处理。Unicode 名称原样保留。 |
| 进度刷新 | 合并为每 0.2 秒一次 —— 这样在 10 万个文件时,刷新屏幕不会比复制还贵。 |
| 同时的文件数 | 在一个作业内同时复制多个文件(最多 16)。小文件很多或使用 NAS 时收益最大。 |
| 速度限制 | 每秒字节上限。适合一边跑备份一边开会的时候。各工作线程共享同一个桶。 |
| 过滤 | 包含/排除模式、整个文件夹排除、大小与日期范围、排除隐藏文件。 |
| 预览 | 一个字节也不写,只计算将会移动什么。 |
| 开始前的检查 | 先确认目标的剩余空间、目标是否位于来源之下、是否为受保护路径,以及来源是否存在。 |
比 robocopy 慢。 因为它为每个文件记录续传信息、校验已复制的内容、并写入日志——这三件事正是本程序存在的理由。 在内置 SSD 上,小文件约慢 5~15 倍,大文件约慢 7 倍。测得的数字和测量方法都放在代码库里。
窗口看的是此刻在搬什么,控制台看的是全貌:队列、历史、恢复、日志、校验都在一屏。
smartcopy-cli admin 或窗口界面的 管理控制台 按钮打开。
控制台只在 127.0.0.1 上打开 ,并且需要每次运行时重新生成的令牌。外部域名指向该地址的手法(DNS 重绑定)会被 Host 检查拦下,而其他站点让浏览器发出的请求会被 Origin 检查拦下。
批处理和任务计划程序就用 smartcopy-cli.exe。
设置和日志只写在 %LOCALAPPDATA%\SmartCopy ,别处不写。
右键文件或文件夹选择 添加到 SmartCopy,在要移动到的文件夹里选择 设为 SmartCopy 目标。分几次添加也会汇集到同一个窗口。
只注册在 HKEY_CURRENT_USER 之下 —— 一条 shell --uninstall 即可撤销