SmartCopy v0.3.1
Copiar e mover arquivos no Windows

Retoma após a interrupção,
verifica antes de excluir.

Quando a cópia do Explorador é interrompida, ela não diz até onde foi. O SmartCopy enfileira o trabalho para pausar e retomar, e só exclui a origem de um movimento depois de verificar a cópia. Tire o USB, perca o NAS, reinicie: o progresso continua lá.

Sem instalação · sem direitos de administrador · Windows 10 / 11 (64 bits)

Layout real · dados de exemplo
SmartCopy v0.3.1 Console de administraçãoRegistro─ □ ✕
Origem
D:\Fotos 2024
D:\Originais da câmera
Destino
E:\Backup
Ação
CopiarMover
Verificar
SHA-256
Iniciar
Fotos 2024 → Backup Em andamento
12,481 / 20.004 arquivos 14.2 GB / 22.8 GB 186 MB/s Tempo restante 00:47

12.481 concluídos · 0 ignorados · 0 falhas · 8,6 GB restantes

D:\Fotos 2024\2024-07\IMG_4821.ARW

Pausar Cancelar
Arquivo do projeto → NAS Aguardando reconexão
3,902 / 6.110 arquivos 41.0 GB / 64.3 GB Pausado

Dispositivo desconectado — continuará quando voltar (WinError 64)

Notas fiscais → Arquivo Concluído
412 / 412 arquivos SHA-256 verificado
A ordem de um movimento

A origem é excluída por último

Mover são três etapas: cada uma espera a anterior.

Etapa 1

Copiar

grava no destino como .scpart um arquivo temporário. Só quando está inteiro ele assume o nome final, então um arquivo pela metade nunca parece pronto.

Etapa 2

Verificar

Tamanho e data de modificação são comparados, e o SHA-256 quando você pede. Se algo divergir, essa cópia é excluída e refeita.

Etapa 3

Excluir a origem

Só os arquivos verificados perdem a origem. Os ignorados mantêm a deles, e as pastas vazias são limpas no fim.

Mover dentro da mesma unidade é apenas renomear: rápido e sem nenhum estado intermediário. As três etapas acima valem só ao trocar de unidade.

Quando o nome já existe

Seis políticas de conflito

Decida ao criar o trabalho ou deixe que pergunte a cada vez. Se escolher perguntar, a caixa de diálogo oferece Aplicar também aos conflitos seguintes.

PolíticaO que fazQuando usar
overwriteSobrescreve o destinoBackups de mão única em que a origem é sempre a mais nova
skipIgnora e deixa a origem como estáPreencher apenas o que falta
renamenome (1).extcomo novo arquivoQuando os dois devem ficar (padrão)
keep_newerMantém o modificado mais recentementeMesclar uma pasta editada dos dois lados
keep_largerMantém o maiorQuando há arquivos truncados no meio
askMostra os dois tamanhos e datas e perguntaQuando cada caso exige julgamento
Interrupções · desconexões · queda de energia

Ele lembra onde parou

O progresso não vive só na tela — ele é gravado em disco. Fechar o aplicativo ou faltar energia não faz você recomeçar.

O diário do trabalho

Cada arquivo concluído é acrescentado como uma linha. Como só acrescenta, uma queda de energia danifica no máximo a última linha, que é descartada.

  • Execute de novo e os arquivos prontos são ignorados
  • Um trabalho que termina bem apaga o próprio diário
  • Ao iniciar, encontra trabalhos inacabados e pergunta se deve continuar

%LOCALAPPDATA%\SmartCopy\jobs\

Retomar dentro de um único arquivo

Para um arquivo grande, .scpartguarda exatamente até onde foi. Só retoma depois que um arquivo ao lado confirma que a origem mantém tamanho e data de modificação.

  • Se a origem mudou, recomeça em vez de retomar
  • Sobras de outro trabalho são limpas na hora

USB desconectado · NAS caiu

Quando um dispositivo some, isso não conta como falha: o trabalho vai para Aguardando reconexão Quando volta, o trabalho segue de onde parou.

WinError 21 · 53 · 59 · 64 · 1167

Só os arquivos que falharam, de novo

Problemas passageiros — um arquivo travado por outro programa, por exemplo — são repetidos sozinhos após 0,5 s, depois 2 s, depois 5 s. O que ainda falha vai para uma lista, e o botão Tentar de novo roda apenas esses de novo — mantendo a estrutura de pastas.

Quando não há ninguém

Configure uma vez e corre sozinho

Se carrega no mesmo todas as vezes, isso é trabalho para um programa.

Pasta vigiada

Quando chegam ficheiros e tudo acalma, corre o trabalho guardado. Nunca pega num ficheiro ainda em escrita: espera que as alterações parem.

smartcopy-cli watch "Entrega" --folder D:\CopiaCartao

Agendador de Tarefas

Todos os dias às 3 da manhã, ou ao iniciar sessão. Sem direitos de administrador, e apagável no próprio Agendador de Tarefas do Windows.

smartcopy-cli schedule --install "Backup semanal" --when daily --at 03:00

Clique direito no Explorador

Clique com o botão direito numa pasta e aparecem os trabalhos guardados. Escolher um preenche a janela com essas definições — Iniciar é consigo.

Os certificados garantem-se uns aos outros

Um certificado sozinho é fácil de deitar fora. Por isso cada um leva o hash do anterior: tire um do meio e a cadeia parte-se.

smartcopy-cli ledger --verify

Isto não é uma autoridade de selagem temporal. O que impede é entregar dez vezes e mostrar só as nove que lhe agradam.

Mesmo com 100.000 deles

A fila mantém a ordem

O que trataComo
Tamanho do blocoEscolhido pelo meio — 4 MB em discos fixos, 1 MB em USB, 256 KB em rede. Pausa e cancelamento respondem nos limites do bloco, então não se aumenta à toa.
Trabalhos simultâneosDois por padrão, porque vários trabalhos martelando o mesmo disco deixam tudo mais lento.
PrioridadeCada trabalho tem uma prioridade e os maiores vão primeiro. Empates mantêm a ordem de entrada.
Enumeração em massascandir percorre a árvore e não segue links simbólicos nem junções, então nunca cai num laço de cópia.
Caminhos longos · UnicodeTratados com o prefixo de caminho que contorna o limite de 260 caracteres. Nomes Unicode ficam como estão.
Atualização do progressoAgrupadas em uma vez a cada 0,2 s — para que, com 100.000 arquivos, desenhar a tela nunca custe mais que copiar.
Arquivos por vezDentro de um trabalho, vários arquivos são copiados ao mesmo tempo (até 16). Compensa mais com muitos arquivos pequenos ou via NAS.
Limite de velocidadeUm teto em bytes por segundo. Para quando um backup roda enquanto você está em reunião. Os workers compartilham o mesmo balde.
FiltragemPadrões de inclusão e exclusão, exclusão de pastas inteiras, faixas de tamanho e data e ignorar arquivos ocultos.
PréviaCalcula o que seria movido sem escrever absolutamente nada.
Verificações antes de começarEspaço livre no destino, se o destino fica dentro da origem, se é um caminho protegido e se as origens existem — tudo conferido antes.

É mais lento do que o robocopy. Porque para cada ficheiro guarda informação de retoma, verifica o que copiou e escreve no diário — essas três coisas são a razão de existir deste programa. Num SSD interno é cerca de 5 a 15 vezes mais lento com muitos ficheiros pequenos e cerca de 7 vezes com um grande. As medições e o método estão no repositório.

Todos os trabalhos num só lugar

Console de administração

A janela mostra o que está em movimento; a console mostra o todo: fila, histórico, recuperação, registros e verificação. smartcopy-cli admin ou o botão Console de administração da janela abre.

O que você vê

  • Faixa de progresso — progresso, velocidade e tempo restante somados
  • Cartões de trabalho — chip de estado, progresso, prontos / idênticos / ignorados / falhas
  • Detalhes do trabalho — lista de falhas com motivos, avisos, velocidade média
  • Recuperação — retomar um trabalho interrompido ou descartá-lo
  • Verificação de integridade — comparar o destino com o manifesto

O que você pode fazer

  • Novo trabalho — seletor de caminhos, filtros, opções de desempenho
  • Verificação prévia — caminhos protegidos e espaço livre avisados antes
  • Pausar / retomar / cancelar / repetir falhas (um ou todos)
  • Ajustar quantos trabalhos rodam ao mesmo tempo

A console abre apenas em 127.0.0.1 e exige um token gerado de novo a cada execução. Um domínio externo apontando para este endereço (DNS rebinding) é barrado pela verificação de Host , e uma requisição que outro site faz seu navegador enviar é barrada pela verificação de Origin .

Sem janela

O mesmo motor na linha de comando

Para .bat e o Agendador de Tarefas, use smartcopy-cli.exe.

# copiar uma pasta + verificar com SHA-256 > smartcopy-cli copy "D:\Fotos 2024" E:\Backup --verify hash [running] [################----] 83.3% 14.2 GB/22.8 GB 186 MB/s ETA 00:47 # mover — renomear se o nome já existir > smartcopy-cli move C:\Arquivo E:\Deposito --conflict rename # ver trabalhos interrompidos e continuar > smartcopy-cli recover > smartcopy-cli recover --resume # comparar uma cópia feita antes > smartcopy-cli verify D:\Origem E:\Backup\Origem --level hash # registrar o menu do Explorador (usuário atual, sem direitos de admin) > smartcopy-cli shell --install
Baixar

Nenhum dos dois precisa ser instalado

Configurações e registros ficam em %LOCALAPPDATA%\SmartCopy e em nenhum outro lugar.

Interface de janela

SmartCopy.exe

Arraste e solte para carregar e acompanhe o progresso nos cartões. O menu de contexto do Explorador chama este mesmo arquivo.

13.6 MB · SHA-256 2e1f9b91034f8cea14cf6d2236741b7a165b25ebaf364e1b9a7d203578892197

Baixar

Linha de comando

smartcopy-cli.exe

copy · move · recover · verify · shell. Bom para scripts e agendadores.

13.6 MB · SHA-256 d3f8f003b8d1f2b22faf621b5b1531c73a6e456315124e609be43b9e55d53c96

Baixar

Integração com o menu do Explorador

Clique com o botão direito num arquivo ou pasta para Adicionar ao SmartCopy, e na pasta de destino, Definir como destino do SmartCopy. Carregue em várias vezes — tudo se junta numa janela.

Registrado apenas sob HKEY_CURRENT_USER — um shell --uninstall desfaz

O que você precisa

  • Windows 10 / 11 (64 bits)
  • Sem direitos de administrador
  • Funciona com SMB · NAS · USB · discos removíveis
  • Python 3.9 ou mais novo para rodar do código-fonte (só biblioteca padrão)