Resultados divergentes com os comandos Copiar e Comparar (RoboCopy Diff Du), explique.

Resultados divergentes com os comandos Copiar e Comparar (RoboCopy Diff Du), explique.

Com Windows 7 Professional 64 bits...

usou um arquivo em lote e RoboCopy.exe para copiar

4 arquivos e 2 diretórios de
c:\temp = SDD (Solid State Drive) para

r:\temp = pendrive (pen drive) com comando:

"C:\WINDOWS\system32\ROBOCOPY.EXE" "D:\TEMP" "R:\TEMP" /V /TEE /S /E /COPY:DAT /DCOPY:T /NP /XJ /R:1000000 /W :30 /LOG:r:\RoboCopyInfo.LOG

Pergunta: Por que
diff.exe vê os resultados do comando de cópia acima via RoboCopy como Ok, sem erro, mas
du.exe para arquivos de texto vê uma diferença?

"C:\Arquivos de Programas\Gow\bin\DIFF.exe" -q -r "D:\TEMP" "R:\TEMP"

:: DIFF.exe = diff (GNU diffutils) 2.8.7 https://github.com/bmatzelle/gow/releases

:: -q = Saída apenas se os arquivos forem diferentes.

:: -r = Compare recursivamente quaisquer subdiretórios encontrados.

:: "D:\TEMP" = Arquivos fonte em SDD (Solid State Drive).

:: "R:\TEMP" = A unidade de destino é HDD ou pendrive (unidade flash), substitua R pela letra apropriada.

:: DIFF.exe O status de saída é 0 se as entradas forem iguais, 1 se diferentes, 2 se houver problema.

Mas du.exe para arquivos de texto é visto acima como um arquivo em lote diferente:

d:

cd\

temperatura do CD

"C:\Arquivos de programas\Gow\bin\du.exe" -a -b -c -P -S -x >r:\DU_d_TEMP.txt

R:

cd\

temperatura do CD

"C:\Arquivos de programas\Gow\bin\du.exe" -a -b -c -P -S -x >r:\DU_r_TEMP.txt

:: du.exe = Uso de disco (GNU coreutils) 5.3.0 https://github.com/bmatzelle/gow/releases

:: "D:\TEMP" = Arquivos fonte em SDD (Solid State Drive).

:: "R:\TEMP" = A unidade de destino é HDD ou pendrive (unidade flash), substitua R pela letra apropriada.

:: -a = contagens de gravação para todos os arquivos, não apenas para diretórios

:: -b = bytes, equivalente a `--apparent-size --block-size=1'

:: -c = total, produz um total geral

:: -P = --no-dereference, não siga nenhum link simbólico (este é o padrão)

:: -S = --separate-dirs, não inclui o tamanho dos subdiretórios

:: -x = --one-file-system pula diretórios em diferentes sistemas de arquivos


DU_d_TEMP.txt

908 ./cicon9.gif

18855 ./Help/HTML/usage.htm

27047 ./Ajuda/HTML

0 ./Ajuda

297 ./Saída 1 .log

52876 ./Q.EXE

58177 .

85.224 no total


DU_r_TEMP.txt

908 ./cicon9.gif

297 ./Saída 1 .log

52876 ./Q.EXE

18855 ./Help/HTML/usage.htm

18855 ./Ajuda/HTML

0 ./Ajuda

54081.

72.936 no total


arquivos de texto du.exe vê uma diferença de

12.288 bytes (85.224 - 72.936)

Pergunta: Por que
diff.exe vê os resultados do comando de cópia acima via RoboCopy como Ok, sem erro, mas
du.exe para arquivos de texto vê uma diferença?

--

Responder1

Hesito em colocar isso como resposta, mas tem algumas explicações possíveis. Não estou familiarizado com du ou diff, mas presumo que diff compara arquivos e relata diferenças, enquanto du relata tamanhos de arquivos e diretórios para todos os arquivos e diretórios. Resumo dos arquivos copiados observando os arquivos de resultados:

  1. Quatro arquivos no total; 2 subdiretórios mais o diretório raiz ( .)
  2. Três arquivos na raiz ( .) totalizando54081bytes. Relatórios DU_d_TEMP.txt58177bytes, uma diferença de4096bytes.
  3. Nenhum arquivo diretamente no diretório /Help
  4. Um arquivo no diretório /Help/HTML totalizando18855bytes. No entanto, DU_d_TEMP.txt relata27047bytes em /Help/HTML, uma diferença de8192bytes.

Explicação 1: Existem arquivos ou junções de sistema/ocultos em D: que o Robocopy ignorou ou não conseguiu copiar. Possivelmente em um sistema de arquivos diferente? (me perguntando por que-xbandeira foi usada em du) Este éimprovável, já que o Robocopy ignora a maioria dos atributos do arquivo de origem ao selecionar arquivos para copiar. No entanto, se ele selecionou o arquivo para copiar, mas não conseguiu, épossíveldu e diff podem ignorar o próprio arquivo do sistema/oculto, mas du detectou que o espaço foi usado nesse diretório. Sem conhecer a configuração completa, sistema(s) de arquivos, unidades/máquinas conectadas, etc., nem ver o arquivo de log do Robocopy, não posso descartar isso ainda. Por exemplo, vejaesta respostano fórum askubuntu sobre arquivos em uma partição do Windows que podem ser vistos pelo Ubuntu, mas não pelo Windows.

Explicação 2: O sistema de arquivos em D: armazena arquivos de maneira diferente do sistema de arquivos em R:. 4.096 bytes é um tamanho de setor comum em unidades modernas, portanto, os dois arquivos maiores (em oposição aos arquivos com menos de 1 KB) na raiz ( .) e nos diretórios /Help/HTML/ podem ter um setor extra (4096bytes) ou dois (8192bytes) alocados para o arquivo que não é usado.

Não estou dizendo que essas são as únicas duas explicações, mas são duaspossívelexplicações. Se você ainda o tiver, postando o arquivo de log do Robocopypoderdescartar a explicação 1.

informação relacionada