-->

sexta-feira, 13 de junho de 2008

Ignorando arquivos que não querem ser copiados

Uma das "características" mais irritantes do Windows Explorer, desde o Windows 95 até o Windows Vista, é sua incapacidade de prosseguir uma cópia/movimentação de arquivos depois de encontrar um erro em um dos arquivos na origem. Se você estiver copiando 13 mil arquivos e o arquivo 12950 não puder ser lido, a cópia é abortada deixando você com a tarefa de identificar manualmente os 50 arquivos que não puderam ser copiados (uma tarefa muito cansativa quando esses 13 mil arquivos estão distribuídos por centenas de pastas) e tomar uma ação adequada.

O que eu gostaria que o Windows Explorer permitisse:
  • O "skip" do arquivo problemático;
  • O log automático do caminho completo para ele, para que eu não tenha que anotar. As janelas de diálogo do Windows sequer te dão a opção de fazer um copiar-e-colar;
Eu tenho problemas freqüentes com isso. Hoje eu precisei fazer um backup do HDD de um cliente e ao copiar a pasta Documents And Settings um número incomum de arquivos de propósito não muito claro acusavam Acesso Negado. Esses arquivos não eram importantes para o propósito de minha cópia, mas o Windows não me dava a opção de ignorá-los.

Eu parei um pouco hoje para tentar identificar um programa que me desse essa opção e baseado nesta lista testei sete:
  • FreeCommander v2007.10a - Freeware. Usa o mecanismo do Windows Explorer para copiar/mover, por isso sofre dos mesmos problemas;
  • XPlorer 0.50.113 Beta - Freeware - Usa o mecanismo do Windows Explorer para copiar/mover, por isso sofre dos mesmos problemas;
  • A43 v2.52 - Freeware. Usa o mecanismo do Windows Explorer para copiar/mover, por isso sofre dos mesmos problemas;
  • XYPlorer v7.20 - Trial 30 dias. Usa o mecanismo do Windows Explorer para copiar/mover, por isso sofre dos mesmos problemas;
  • Directory Opus v9.1.0.6 - Trial 30 dias - Permite fazer o skip, mas apesar de ter um mecanismo de log não faz (pelo menos não separadamente) o log dos erros;
  • Altap Salamander v2.51 - Shareware. Permite fazer o skip, mas não faz log algum;
  • Total Commander v7.03 - Shareware. Permite fazer o skip e o log;
O famoso Total Commander, que de tempos em tempos eu tento usar mas nunca me acostumo, me causou uma nova má primeira impressão desta vez por duas razões:
  • Por default esconde todos os arquivos ocultos e de sistema. Para você enxergá-los precisa ir em Configuration - Options - Display e marcar Show hidden/system files. Eu não entendo como uma ferramenta como o Total Commander considera que seus usuários por default são do tipo que não sabe o que está fazendo;
  • Não consegui acessar a pasta que eu queria usando um caminho UNC. Eu precisei mapear a unidade (eu não uso mapeamentos em minha rede) só para poder acessá-la com o programa. Se é possível usar digitar caminhos UNC, não é intuitivo;

Mas apesar disso, o Total Commander ganhou minha atenção porque entre suas várias opções de log (em Configuration - Options - Log File) existe a opção "log skipped files". Você só precisa tomar as seguintes providências:
  • Ative o uso do Log, pois não é default;
  • Desmarque "log sucessfull operations", pois do contrário você não vai conseguir encontrar os erros no meio da enxurrada de operações bem sucedidas;
Outras considerações:
  • Infelizmente o único programa que passou nos meus requerimentos (o Total Commander) não é gratuito;
  • Todos os meus testes foram muito breves. Eventualmente um dos programas reprovado por mim pode ter a opção que eu queria mas eu não vi. Porém acho isso difícil;
  • Nenhum dos programas com engine de cópia próprio testados dá a opção de ignorar uma pasta inteira. Assim se você esbarrar em uma pasta com uma centena de arquivos que você percebe que não são importantes, ou clica em "skip" uma centena de vezes ou dá um "skip all" e não fica sabendo de que outros arquivos fora desta pasta foram ignorados (se o programa não tiver um log dos erros);
  • Nenhum dos programas testados dá o caminho completo para o arquivo problemático, se este passar de um determinado comprimento. Directory Opus foi o pior de todos nesse quesito, pois só mostra o nome do arquivo, sem o caminho;

Usando o Total Commander eu fiz uma cópia satisfatória dos arquivos do cliente, com um log adequado do que não pôde ser copiado. Mas ainda estou aberto a outras sugestões, porque não gosto da interface e do preço do Total Commander.

26 comentários:

  1. Já experimentou o Teracopy?

    http://www.codesector.com/teracopy.php

    ResponderExcluir
  2. CCRider,

    Estou testando agora. Achei pouco intuitivo e só insisti nele procurando as opções que eu queria porque sua sugestão indicava que as opções tinham que estar lá. O log é mais complicado de "ler" do que eu esperava, mas atende minhas necessidades.

    Obrigado pela dica!

    ResponderExcluir
  3. Eu pessoalmente tenho usado o TotalCopy. Escolhe velocidade , tem opção de resume , etc... Freeware.

    http://www.brothersoft.com/total-copy-71319.html

    ResponderExcluir
  4. já pesquisei muito sobre isso, e o melhor que já encontrei(Mesmo tendo o problema de ter que mudar o skin orrível que vem com ele e sendo mais lento quanto a cópia em usbs), o Killcopy é o mais completo que conheço dentre todos, e simples de usar também....
    Bem, é um programa Russo, preciso falar mais? :))
    http://killprog.narod.ru/killcopye.html

    ResponderExcluir
  5. TRON,

    Eu fiz um teste breve com o TotalCopy e, além dele ficar disponível apenas pelo menu de drag-and-drop, não faz log (não que eu tenha notado).

    Até agora, o Teracopy parece fazer tudo o que o Totalcopy faz (exceto controle de velocidade) e mais algumas coisas interessantes para mim, como o próprio log, filas (queue), etc.

    ResponderExcluir
  6. Bruno,

    Eu fiz um teste breve com o Killcopy e minhas impressões iniciais são estas:

    Pros:

    Permite dar um "skip all" antecipado na operação. Algo que não é possível com o TeraCopy ou o TotalCopy. Se eu vou fazer uma cópia que eu sei que vai levar um longo tempo, não quero voltar uma hora depois para encontrar o programa parado esperando por uma decisão que eu já poderia ter tomado.

    Contras:

    1) Tem log (que o programa chama de History), mas não registra os erros! Só coloca no log os caminhos de origem e destino de cada operação.

    2) Como você mesmo disse, o skin original é assustador :)

    Por enquanto, Teracopy ainda é o que melhor atende minhas necessidades.

    ResponderExcluir
  7. Uma das "características" mais irritantes do Windows Explorer, desde o Windows 95 até o Windows Vista, é sua incapacidade de prosseguir uma cópia/movimentação de arquivos depois de encontrar um erro em um dos arquivos na origem

    Como assim? Você quis dizer "até ANTES do Vista", né? Porque aqui eu já cansei de copiar/mover arquivos, um dar erro, ele dar a opção de repetir, ignorar o arquivo, ignorar todos os que derem o mesmo erro ou então cancelar a operação.

    ResponderExcluir
  8. Ué... tem razão...

    Não sei de onde eu tirei que o problema também existia no Vista.

    Obrigado!

    ResponderExcluir
  9. Apenas para reforçar, o TeraCopy é o melhor para esta tarefa que já testei até agora.

    Agora outra dica que muito micreiro não sabe.

    Embora desde os primórdios a microsoft parece que se esqueceu de um botão "não para todos" na copia pelo explorer (embora tenha o sim para todos) existe uma atalho para essa opção:

    SHIFT + clique em NÃO.

    E olhe que eu xinguei a microsoft por uns 10 anos (desde o win95) até descobrir isso a alguns anos atras.

    ResponderExcluir
  10. Gosto tambem do SuperCopier:
    http://supercopier.sfxteam.org/modules/mydownloads/visit.php?cid=1&lid=8
    Pena não ter a opção de checagem de CRC q o TeraCopy tem.
    Outra coisa boa do TeraCopy é q dá para usar como portable.

    ResponderExcluir
  11. Eu acho melhor usar um programa proprio para backup, ex.: Cobian, Comodo Backup, etc.

    http://www.educ.umu.se/~cobian/cobianbackup.htm

    http://backup.comodo.com/

    http://www.webattack.com/

    ResponderExcluir
  12. Anônimo,

    Para fazer apenas uma cópia, apenas uma vez, não vejo como um programa de backup seja melhor. Eu uso o Cobian Backup nos meus backups automáticos e não me imagino usando-o para fazer cópias não-repetitivas de arquivos. No tempo que se leva para abrir o Cobian e configurar uma "New Task", a cópia com o Teracopy já está em andamento faz tempo.

    ResponderExcluir
  13. Bom eu acho melhor, é questão de opinião mesmo. Eu já usei vários desses softwares tipo o TeraCopy e tive problemas com todos, talvez por isso não vá muito com a "cara" desses programas.

    ResponderExcluir
  14. Olá,

    Eu gosto do ROBOCOPY da própria Microsoft, mas ele é do tipo console, precisa passar parâmetros na linha de comando, o que pode não ser interessante neste caso mas é muito bom para cópia de arquivos em rede.

    ResponderExcluir
  15. Também uso muito o Robocopy. Tenho um .CMD preparado no meu HD externo para fazer backup de tudo que me interessa para ele. É só dar um duplo clique no .CMD e pronto, backup em andamento.
    Mas também é muito útil para usos ocasionais.

    ResponderExcluir
  16. Como pode? Estava pensando nessa coisa do Windows ter tipo um log dizendo quais arquivos não puderam ser copiados justamente hoje. E vim ao seu bog nem foi pra procurar nada do assunto e encntrei isso... Conteúdo muito bom, o blog já está nos meus favoritos, parabéns!

    ResponderExcluir
  17. BetoWender15/7/08 13:57

    Facil facil,
    no prompt digite
    xcopy origen destino /e /c

    /e, copia pastas e subpastas mesmo que estejam vazias.
    /c continua copiando mesmo que haja erros.

    Por isso que digo, quem sabe muito sabe DOS.

    ResponderExcluir
  18. BetoWender,

    E quem só sabe DOS sabe muito pouco :)

    Até o Win98 eu sempre usei (e uso) o XCOPY com os parâmetros /k/y/c/h/i/f/r/e (é uma forma "mnemônica"), mas no Windows XP isso deixou de funcionar tão bem, principalmente por causa das permissões NTFS.

    E desde quando o XCOPY faz log dos erros?

    ResponderExcluir
  19. BetoWender24/7/08 17:17

    Se vc logar como Administrador não tera problemas com permissoes. Ou tambem vc pode tornar-se dono do hd inteiro. Quando aos logs, ele não tem esta opçao de qual aruivo não foi copiado. Mas dentre todos as soluções apresentadas essa, sem duvida o xcopy fará muito.

    Agora quanto ao "E quem só sabe DOS sabe muito pouco". Bom eu não disse "Só o DOS", vc sabe que depois do windows muitos se julgam o BONZÃO só pq sabe clicar no INICIAR...

    Abraços

    ResponderExcluir
  20. BetoWender26/7/08 18:00

    Lembrei de um detalhe Jeferson, voce pode incluir o seguinte > log.txt. O xcopy gerará um aquivo chamado log.txt e tudo que for feito durante o processo de cópia estará neste log.

    Então a linha fica assim:
    xcopy origen destino /i /e /c >log.txt

    o "/i" deverá ser incluido, pois o xcopy "entenderá" que é para ser copiado para uma pasta.

    Serve para qualquer comando digitado no DOS...
    Faça o teste no prompt de commando do Windows.

    Digite: Dir >teste.txt

    Abraços.

    ResponderExcluir
  21. Oleg Gruchka22/8/08 09:40

    Esse Teracopy é ótimo !!!!!

    Depois de quse dois anos trabalhando numa assistência técnica nunca pensei em procurar um programa que ignorasse os erros, faço BKP de cliente quase todos os dias, eu me matava as vezes, agora ficou bem melhor, Teracopy é ótimo!

    ResponderExcluir
  22. Usa o Copy Handler, eh freeware, monitora a area de transferencia do windows, assim, eliminando as copias do windows explorer, tem as devidas opçoes e gera logs de tudo...

    ResponderExcluir
  23. Estava pesquisando também, a respeito de algum software para realizar backups, até agora o melhor que encontrei foi o robocopy, disponível para download gratuito.
    http://www.microsoft.com/downloads/details.aspx?familyid=9D467A69-57FF-4AE7-96EE-B18C4790CFFD&displaylang=en
    Também criei uma sintaxe do comando, que achei mais viável para o meu caso, visto que pode ser editada conforme a necessidade.
    Para exibir os comandos adicionais digite no pompt robocopy /?

    robocopy \\servidor1\Gerencias\ \\servidor2\Gerencias\ /E /ZB /COPYALL /R:0 /W:0 /LOG:c:\teste-robocopy.log

    Legenda:
    \\servidor1\Gerencias\: Pastas ou arquivos a serem copiados.
    \\servidor2\Gerencias\: Pasta de destino para gravação.
    /E: Copia subpastas, incluindo as vazias.
    /ZB: Modo reiniciável.
    /COPYALL: Copia todas informações de arquivos, incluindo permissões.
    /R:0: Não repete a copia de determinado arquivo em caso de falhas.
    /W:0: Além de não repetir a cópia em caso de falhas, não deixa tempo ocioso entre
    a próxima cópia.
    /LOG: Cria um arquivo .log com informações do procedimento realizado, substituindo um
    arquivo com mesmo nome existente.
    (/LOG+: Cria um log, sobrepondo linhas no mesmo arquivo existente.)
    Qualquer dúvida podem me mandar um e-mail, evandro-mail@click21.com.br

    ResponderExcluir
  24. Xcopy faz log de erro sim:

    por exemplo: xcopy d: /e /c >log.txt

    o /e vai copiar os diretórios, o /c vai ignorar os erros e o >log.txt vai gerar um log. simples assim.

    ResponderExcluir
  25. Blog do B@ss - MSX,

    Isso gera um log total e não um log dos erros. E ainda por cima você fica sem nenhuma indicação de progresso exceto o LED do HDD.

    Imagine procurar erros em uma transferência de milhares de arquivos (gera um log de milhares de linhas). Você vai precisar no mínimo criar um batch que processe o log para filtrar as mensagens de erro.

    ResponderExcluir
  26. Olá, se vc usar o robocopy com o parâmetro /NFL o Log não exibirá os arquivos copiados, apenas os diretórios criados e os arquivos com erro, e com tabulações distintas um do outro no log.txt, muito fácil de identificar aquilo que não foi copiado.

    ResponderExcluir

Siga as regras do blog ou seu comentário será ignorado.