成功 12,481 · スキップ 0 · 失敗 0 · 残り 8.6 GB
D:\写真 2024\2024-07\IMG_4821.ARW
エクスプローラーのコピーは途中で切れると、どこまで進んだか教えてくれません。SmartCopy は作業をキューに入れて一時停止・再開でき、コピーを検証したあとではじめて移動元を削除します。USB を抜いても、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:\カード取込
毎日午前3時、あるいはログオン時に。管理者権限なしで登録でき、Windows のタスク スケジューラ画面からそのまま削除できます。
smartcopy-cli schedule --install "週次バックアップ" --when daily --at 03:00
フォルダーを右クリックすると、作っておいた作業の名前が出ます。選ぶと画面がその設定で埋まり、開始は人が押します。
証明書は一枚なら簡単に捨てられます。だから各証明書が前の証明書のハッシュを抱えます — 途中の一枚を抜くと連鎖が切れます。
smartcopy-cli ledger --verify
タイムスタンプ機関ではありません。防ぐのは、十回納品して気に入った九回だけを見せることです。
| 扱うもの | 方式 |
|---|---|
| チャンクの大きさ | 媒体を見て決めます — 固定ディスク 4 MB、USB 1 MB、ネットワーク 256 KB。一時停止・中止はチャンクの境目で効くので、やみくもに大きくはしません。 |
| 同時に動く作業 | 既定は 2 件。同じディスクを複数の作業が同時にたたくと全体が遅くなるからです。 |
| 優先度 | 作業ごとに優先度を持ち、高いものから出します。同じなら入れた順に。 |
| 大量の列挙 | scandir を使って走査し、シンボリックリンクやジャンクションは追わないので循環コピーに陥りません。 |
| 長いパス · ユニコード | 260 文字の制限を回避するパス接頭辞を付けて扱います。ユニコードの名前はそのまま。 |
| 進捗の更新 | 0.2 秒に一度にまとめます — 10 万個で画面の更新がコピーより高くつかないように。 |
| 同時のファイル数 | 一つの作業の中でファイルを同時に複数コピーします(最大 16)。小さいファイルが多いときや NAS で効果が大きいです。 |
| 速度制限 | 秒あたりのバイト上限。バックアップを回しながら会議をしなければならないときに。ワーカーは同じバケットを共有します。 |
| 絞り込み | 含める/除くパターン、フォルダーごとの除外、大きさ・日付の範囲、隠しファイルの除外。 |
| プレビュー | 何も書かずに、何が移るかだけ計算します。 |
| 開始前の点検 | コピー先の空き容量、コピー先が元の下にないか、保護された経路ではないか、元が存在するかを先に確かめます。 |
robocopy より遅いです。 ファイルごとに再開情報を残し、コピーしたものを検証し、ジャーナルに書くからです — その三つがこのプログラムの存在理由です。 内蔵 SSD では小さなファイルで 5〜15 倍、大きなファイルで 7 倍ほど遅くなります。測った数字と測り方はリポジトリにそのまま置いてあります。
ウィンドウが「いま運んでいるもの」なら、コンソールは全体です。キュー・履歴・復旧・ログ・整合性チェックが一画面に。
smartcopy-cli admin またはウィンドウ UI の 管理コンソール ボタンで開きます。
コンソールは 127.0.0.1 だけに 開き、実行のたびに作り直すトークンがなければ入れません。外部のドメインがこのアドレスを指すようにする手口(DNS リバインディング)は Host 検査で、他のサイトがブラウザに送らせる要求は Origin 検査で止めます。
バッチファイルやタスクスケジューラには smartcopy-cli.exeを使います。
設定とログは %LOCALAPPDATA%\SmartCopy の下にだけ書きます。
ファイルやフォルダーを右クリックして SmartCopy に追加、移し先のフォルダーでは SmartCopy のコピー先に設定。何回かに分けて入れても一つの窓にまとまります。
登録は HKEY_CURRENT_USER の下だけ — 解除は shell --uninstall 一回