solo nuevos modificados mir ejemplos copyall copiar archivos asp.net msbuild web-deployment robocopy

asp.net - nuevos - robocopy/mir



Utiliza Robocopy para copiar solo archivos modificados? (3)

Estoy tratando de encontrar una manera fácil de implementar solo los archivos modificados en el servidor web para fines de implementación. En tiempos pasados, he usado MSBuild, que solo podía copiar archivos que eran más nuevos que los del objetivo, pero tengo prisa y no quiero intentar averiguar la versión más nueva de MSBuild.

¿Puedo usar ROBOCOPY para esto? Hay una lista de opciones para la exclusión, que es:

  • / XC :: eXclude archivos modificados.
  • / XN :: eXclude Archivos más nuevos.
  • / XO :: eXclude archivos más antiguos.
  • / XX :: eXclude archivos y directorios de eXtra.
  • / XL :: eXclude archivos y directorios solitarios.

¿Qué significa exactamente excluir? ¿Excluir copia, o excluir sobrescribir? Por ejemplo, si escribiera:

ROBOCOPY C: / SourceFolder / ABC.dll D: / DestinationFolder / XO

¿Copiaría esto solo archivos más nuevos, no archivos de la misma edad?

¿O hay una mejor herramienta para hacer esto?


Para responder a todas sus preguntas:

¿Puedo usar ROBOCOPY para esto?

Sí, RC debe satisfacer sus requisitos (simplicidad, solo copie lo que sea necesario)

¿Qué significa exactamente excluir?

Se excluirá la copia - RC lo llama saltar

¿ /XO opción /XO solo archivos más nuevos, no archivos de la misma edad?

Sí, RC solo copiará los archivos más nuevos. Los archivos de la misma edad serán omitidos.

(el comando correcto sería robocopy C:/SourceFolder D:/DestinationFolder ABC.dll /XO )

Tal vez en su caso el uso de la opción /MIR podría ser útil. En general, RC está más orientado a directorios y árboles de directorios que a archivos individuales.


Parece que la opción /e es lo que necesita, salteará los mismos archivos / directorios.

robocopy c:/data c:/backup /e

Si ejecuta el comando dos veces, verá que la segunda ronda es mucho más rápida, ya que omite muchas cosas.


Puede usar robocopy para copiar archivos con una marca de archivo y restablecer el atributo. Use la línea de comandos / M, este es mi script de copia de seguridad con algunos trucos adicionales.

Este script necesita la herramienta NirCmd para mantener el mouse en movimiento para que mi máquina no se duerma. La secuencia de comandos usa un archivo de bloqueo para indicar cuándo se completó la secuencia de respaldo y se cerró la secuencia de comandos mousemove.bat. Puedes dejar esta parte fuera.

Otra es la herramienta 7-Zip para dividir archivos de virtualbox más pequeños que archivos de 4GB, mi carpeta de destino aún es FAT32, por lo que es obligatorio. Debería usar el disco NTFS pero todavía no he convertido los discos de respaldo.

copia de seguridad-robocopy.bat

@REM https://technet.microsoft.com/en-us/library/cc733145.aspx @REM http://www.skonet.com/articles_archive/robocopy_job_template.aspx set basedir=%~dp0 del /Q %basedir%backup-robocopy-log.txt set dt=%date%_%time:~0,8% echo "%dt% robocopy started" > %basedir%backup-robocopy-lock.txt start "Keep system awake" /MIN /LOW cmd.exe /C %basedir%backup-robocopy-movemouse.bat set dest=E:/backup call :BACKUP "Program Files/MariaDB 5.5/data" call :BACKUP "projects" call :BACKUP "Users/Myname" :SPLIT @REM Split +4GB file to multiple files to support FAT32 destination disk, @REM splitted files must be stored outside of the robocopy destination folder. set srcfile=C:/Users/Myname/VirtualBox VMs/Ubuntu/Ubuntu.vdi set dstfile=%dest%/Users/Myname/VirtualBox VMs/Ubuntu/Ubuntu.vdi set dstfile2=%dest%/non-robocopy/Users/Myname/VirtualBox VMs/Ubuntu/Ubuntu.vdi IF NOT EXIST "%dstfile%" ( IF NOT EXIST "%dstfile2%.7z.001" attrib +A "%srcfile%" dir /b /aa "%srcfile%" && ( del /Q "%dstfile2%.7z.*" c:/apps/commands/7za.exe -mx0 -v4000m u "%dstfile2%.7z" "%srcfile%" attrib -A "%srcfile%" @set dt=%date%_%time:~0,8% @echo %dt% Splitted %srcfile% >> %basedir%backup-robocopy-log.txt ) ) del /Q %basedir%backup-robocopy-lock.txt GOTO :END :BACKUP TITLE Backup %~1 robocopy.exe "c:/%~1" "%dest%/%~1" /JOB:%basedir%backup-robocopy-job.rcj GOTO :EOF :END @set dt=%date%_%time:~0,8% @echo %dt% robocopy completed >> %basedir%backup-robocopy-log.txt @echo %dt% robocopy completed @pause

backup-robocopy-job.rcj

:: Robocopy Job Parameters :: robocopy.exe "c:/projects" "E:/backup/projects" /JOB:backup-robocopy-job.rcj :: Source Directory (this is given in command line) ::/SD:c:/examplefolder :: Destination Directory (this is given in command line) ::/DD:E:/backup/examplefolder :: Include files matching these names /IF *.* /M :: copy only files with the Archive attribute and reset it. /XJD :: eXclude Junction points for Directories. :: Exclude Directories /XD C:/projects/bak C:/projects/old C:/project/tomcat/logs C:/project/tomcat/work C:/Users/Myname/.eclipse C:/Users/Myname/.m2 C:/Users/Myname/.thumbnails C:/Users/Myname/AppData C:/Users/Myname/Favorites C:/Users/Myname/Links C:/Users/Myname/Saved Games C:/Users/Myname/Searches :: Exclude files matching these names /XF C:/Users/Myname/ntuser.dat *.~bpl :: Exclude files with any of the given Attributes set :: S=System, H=Hidden /XA:SH :: Copy options /S :: copy Subdirectories, but not empty ones. /E :: copy subdirectories, including Empty ones. /COPY:DAT :: what to COPY for files (default is /COPY:DAT). /DCOPY:T :: COPY Directory Timestamps. /PURGE :: delete dest files/dirs that no longer exist in source. :: Retry Options /R:0 :: number of Retries on failed copies: default 1 million. /W:1 :: Wait time between retries: default is 30 seconds. :: Logging Options (LOG+ append) /NDL :: No Directory List - don''t log directory names. /NP :: No Progress - don''t display percentage copied. /TEE :: output to console window, as well as the log file. /LOG+:c:/apps/commands/backup-robocopy-log.txt :: append to logfile

copia de seguridad-robocopy-movemouse.bat

@echo off @REM Move mouse to prevent maching from sleeping @rem while running a backup script echo Keep system awake while robocopy is running, echo this script moves a mouse once in a while. set basedir=%~dp0 set IDX=0 :LOOP IF NOT EXIST "%basedir%backup-robocopy-lock.txt" GOTO :EOF SET /A IDX=%IDX% + 1 IF "%IDX%"=="240" ( SET IDX=0 echo Move mouse to keep system awake c:/apps/commands/nircmdc.exe sendmouse move 5 5 c:/apps/commands/nircmdc.exe sendmouse move -5 -5 ) c:/apps/commands/nircmdc.exe wait 1000 GOTO :LOOP