Investigamos en distintos espacios para tener para ti la respuesta para tu dilema, si continúas con dificultades deja tu duda y respondemos porque estamos para servirte.
Solución:
De forma predeterminada, Robocopy omite la copia de archivos existentes si los metadatos específicos de los archivos coinciden entonces esos archivos será omitido desde la operación de copia “archivo” (/COPY:DAT
).
Valores predeterminados de Robocopy
- Omite la copia del archivo si es la última hora de escritura, el nombre del archivo, y coincidencia de tamaño de archivo
- Copia el archivo si fue la última vez que se escribió, el nombre del archivo, o los tamaños de archivo no coinciden
Como indica @ mklement0, el defecto implícito /COPY:DAT
no copiará archivos con datos diferentes si la marca de tiempo [LastWriteTime] y el tamaño del archivo es el mismo, por lo que se trata de un salto predeterminado.
Entonces, si por alguna razón tiene dos archivos que está sincronizando que tienen un tamaño de archivo, un nombre de archivo y la última modificación attributes aunque los datos sean diferentes, no copiará el archivo de origen.
Opciones predeterminadas de Robocopy:
/COPY:DAT /R:1000000 /W:30
Según lo confirmado por el archivo de registro o la ventana de comandos en ejecución robocopy c:source c:dest *
¿Robocopia o Robocopia /?
/COPY:copyflag[s] : What to COPY (default is /COPY:DAT)
(copyflags : D=Data, A=Attributes, T=Timestamps
S=Security=NTFS ACLs, O=Owner info, U=aUditing info).
robocopy SOURCE DESTINATION FILE(S) /IS
Dónde IS
representa Iincluir Same archivo (s). El uso de este interruptor hace que se sobrescriban los archivos existentes. Vea abajo:
::
:: File Selection Options :
::
/A :: copy only files with the Archive attribute set.
/M :: copy only files with the Archive attribute and reset it.
/IA:[RASHCNETO] :: Include only files with any of the given Attributes set.
/XA:[RASHCNETO] :: eXclude files with any of the given Attributes set.
/XF file [file]... :: eXclude Files matching given names/paths/wildcards.
/XD dirs [dirs]... :: eXclude Directories matching given names/paths.
/XC :: eXclude Changed files.
/XN :: eXclude Newer files.
/XO :: eXclude Older files.
/XX :: eXclude eXtra files and directories.
/XL :: eXclude Lonely files and directories.
/IS :: Include Same files.
/IT :: Include Tweaked files.
-
Desafortunadamente, la documentación oficial no describe la lógica detrás que archivos son omitido por defecto.
-
Sin embargo, la documentación no oficial de ss64.com proporciona el puntero crucial (énfasis agregado):
-
Por defecto, Robocopy solo copiará un archivo si el origen y el destino tienen diferentes marcas de tiempo o diferentes tamaños de archivo.
-
Nota: sello de tiempo se refiere a última modificación sello de tiempo (solamente).
En otras palabras: Robocopy considera que dos archivos son los mismo basado solamente sobre si sus marcas de tiempo y tamaños de archivo modificados por última vez son idénticos y, por lo tanto, salta copiando en ese evento.
Por lo que puedo decir:
-
Este comportamiento es no afectado por la modificación qué aspectos de un archivo / directorio copiar (parámetros
/copy
//dcopy
)- Estos argumentos solo se aplican si RoboCopy ha considerado fundamentalmente que un archivo / directorio determinado necesita copiarse, basándose en la lógica de igualdad / inclusión.
-
Si quieres ampliar la detección de igualdad predeterminada (la misma marca de tiempo de la última modificación y el mismo tamaño de archivo) siguientes propiedades, utilizar el
/it
(Incluir retocado) opción:- expediente attributes (representado como
A
Para el/copy
parámetro) - ACL (representado como
S
Para el/copy
parámetro) - propiedad del archivo (representado como
O
Para el/copy
parámetro) - información de auditoría (representada como
U
Para el/copy
parámetro)
- expediente attributes (representado como
-
Parece que Robocopy ofrece no opción para detectar la similitud de los archivos en función de su contenido (que normalmente se implementa mediante una función hash criptográfica).
Por lo tanto, en el evento raro que podría haber archivos con marcas de tiempo idénticas en la última modificación y tamaños de archivo idénticos que, no obstante, difieren en contenido, tu única opción es usar el/is
(Incluir lo mismo) opción:-
Esto hace que se copien los archivos que se consideran iguales. incondicionalmente – y por lo tanto potencialmente innecesariamente.
-
Consideración: Curiosamente, archivos que son iguales con respecto al tamaño de archivo y sello de archivo modificado por última vez pero difieren con respecto a la
/it
-propiedades relacionadas mencionadas anteriormente están no incluido por defecto con/is
solo; por lo tanto, para cubrir todas las eventualidades, utilice/is
y/it
conjunto.
-
Las siguientes pruebas de Pester demuestran los comportamientos; guarda el código como Tests.ps1
e invocarlo como Invoke-Pester ./Tests.ps1
:
Describe RoboCopySkippedFilesTests
BeforeAll
Push-Location TestDrive:
AfterAll
Pop-Location
BeforeEach
# Set up a source and a destination folder and make their
# Content the same.
if (Test-Path dest) Remove-Item -Force -Recurse dest
$null = New-Item -Type Directory -Force src
'file1' > srcfile1
'file2' > srcfile2
Copy-Item -Recurse src dest
It "Does not copy anything with identical folders."
robocopy.exe src dest
$LASTEXITCODE
It "Does recognize a changed last-modified filestamp" Out-Host
$LASTEXITCODE
It "Does recognize a change in file size"
'!'
It "Does not recognize a change in file content, with size and last-modified date identical" Should Be 0
It "Does not recognize a change in file attributes, with size and last-modified date identical"
(Get-Item destfile1).Attributes = 'System'
robocopy.exe src dest #
It "Does recognize an attribute-modified-only file as tweaked (/IT)"
(Get-Item destfile1).Attributes = 'System'
robocopy.exe src dest /IT #
It "Does not include an attribute-modified-only file with /IS" Out-Host
$LASTEXITCODE
Debería ver algo como lo siguiente, que indica que todas las pruebas pasaron (a partir de Robocopy.exe
con versión de archivo 10.0.16299.15 (WinBuild.160101.0800)
):
Describing RoboCopySkippedFilesTests
[+] Does not copy anything with identical folders. 231ms
[+] Does recognize a changed last-modified filestamp 112ms
[+] Does recognize a change in file size 68ms
[+] Does not recognize a change in file content, with size and last-modified date identical 69ms
[+] Does not recognize a change in file attributes, with size and last-modified date identical 83ms
[+] Does recognize an attribute-modified-only file as tweaked (/IT) 65ms
[+] Does not include an attribute-modified-only file with /IS 70ms
Tests completed in 589ms
Passed: 7 Failed: 0 Skipped: 0 Pending: 0 Inconclusive: 0