成功 12,481 · 略過 0 · 失敗 0 · 剩餘 8.6 GB
D:\照片 2024\2024-07\IMG_4821.ARW
檔案總管的複製對話框一旦中斷,不會告訴你進行到哪裡。SmartCopy 把作業放進佇列,可以暫停和繼續,並且只有在校驗通過後才刪除移動的來源。拔掉隨身碟、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、隨身碟 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 即可撤銷