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

1

Com o Windows 7 Professional de 64 bits ...

usou um arquivo de lote e RoboCopy.exe para copiar

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

r: \ temp = stick USB (unidade flash) com o comando:

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

Pergunta: Por que o
diff.exe vê os resultados do comando copy acima via RoboCopy como Ok, sem erro, mas,
du.exe para arquivos de texto vê a 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 somente se os arquivos forem diferentes.

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

:: "D: \ TEMP" = Arquivos de origem no SDD (Solid State Drive).

:: "R: \ TEMP" = O drive de destino é HDD ou pendrive (pen drive), substitua R por Letter apropriado.

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

Mas, du.exe para arquivos de texto vê acima como diferente, arquivo em lotes:

d:

CD\

cd temp

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

r:

CD\

cd temp

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

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

:: "D: \ TEMP" = Arquivos de origem no SDD (Solid State Drive).

:: "R: \ TEMP" = O drive de destino é HDD ou pendrive (pen drive), substitua R por Letter apropriado.

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

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

:: -c = total, produz um total geral

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

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

:: -x = --one-directory-system ignora diretórios em diferentes sistemas de arquivos


DU_d_TEMP.txt

908 ./cicon9.gif

18855 ./Help/HTML/usage.htm

27047 ./Help/HTML

0 ./Ajuda

297 ./OutPut 1 .log

52876 ./Q.EXE

58177.

85224 no total


DU_r_TEMP.txt

908 ./cicon9.gif

297 ./OutPut 1 .log

52876 ./Q.EXE

18855 ./Help/HTML/usage.htm

18855 ./Help/HTML

0 ./Ajuda

54081.

72936 no total


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

12288 bytes (85224 - 72936)

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

-

Joseph
fonte

Respostas:

0

Eu meio que hesito em colocar isso como uma resposta, mas tem algumas explicações possíveis. Eu não estou familiarizado com du ou diff, mas eu assumo que o diff compara arquivos e reporta diferenças, enquanto o du reporta tamanhos de arquivos e diretórios para todos os arquivos e diretórios. Resumo dos arquivos copiados, observando os arquivos do resultado:

  1. Quatro arquivos totais; 2 subdiretórios mais o diretório raiz ( .)
  2. Três arquivos no root ( .) totalizando 54081 bytes. DU_d_TEMP.txt reporta 58177 bytes, uma diferença de 4096 bytes.
  3. Nenhum arquivo diretamente no diretório / Help
  4. Um arquivo em / Help / HTML dir totalizando 18855 bytes. No entanto, DU_d_TEMP.txt informa 27047 bytes em / Help / HTML, uma diferença de 8192 bytes.

Explicação 1 : Existem arquivos / junções do sistema / ocultos em D: que o Robocopy foi ignorado ou não pôde ser copiado. Possivelmente em um sistema de arquivos diferente? (perguntando por que o sinalizador -x foi usado em du) Isso é improvável , já que o Robocopy ignora a maioria dos atributos do arquivo de origem ao selecionar os arquivos a serem copiados. No entanto, se ele selecionou o arquivo para copiar, mas não conseguiu, é possível que du e diff possam ignorar o sistema / arquivo oculto em si, mas du detectou que o espaço foi usado nesse diretório. Sem conhecer a configuração completa, o (s) sistema (s) de arquivos, as unidades / máquinas conectadas, etc., nem o arquivo de log do Robocopy, ainda não posso descartá-lo. Por exemplo, veja esta resposta no fórum askubuntu sobre arquivos em uma partição Windows podendo ser visto 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 :. 4096 bytes é um tamanho de setor comum em unidades modernas, portanto, os dois arquivos maiores (em oposição aos arquivos abaixo de 1 KB) nos .diretórios root ( ) e / Help / HTML / podem ter um setor extra ( 4096 bytes) ou dois ( 8192 bytes) alocado para o arquivo que não é usado.

Não estou dizendo que estas são as únicas duas explicações, mas estas são duas explicações possíveis . Se você ainda tiver, postar o arquivo de log do Robocopy pode excluir a Explicação 1.

GlennFromIowa
fonte