backup.bat
:: +--------------------------------------------------------------+
:: | Rutina para copiar el contenido de una carpeta a otro disco. |
:: | Usa "fastcopy" para sincronizar el contenido de la carpeta y |
:: | luego usa 7z para "comprimir" el contenido en archivos con |
:: | la fecha del respaldo. |
:: | Nota: 7zip se debe instalar en la carpeta "backup/7zip" |
:: +--------------------------------------------------------------+
set src=%~dp0
:: Descargar fastcopy de https://ipmsg.org/tools/fastcopy.html.en
SET FastCopy=%src%/backup/fastcopy/fastcopy
:: Descargar 7zip de https://www.7-zip.org/download.html (opcional)
SET 7zip=%src%/backup/7zip/7z
:: Lista de carpetas a excluir durante la sincronización.
set exclude="$Mft;Thumbs.db;.DS_Store;Desktop.ini;DfsrPrivate;packages\;node_modules\;bower_components\;Debug\;Release\;Bin\;Log\;TestResults\;gen\;build\;.idea\;out\;obj\;System Volume Information\;$RECYCLE.BIN\;reportes\"
:: Parámetros requeridos por FastCopy para ignorar carpetas vacías y cerrarse cuando finalice.
set params=/skip_empty_dir /cmd=sync /force_close /error_stop=FALSE /disk_mode=auto /speed=full
:: NOTA: Repetir las siguientes líneas por cada respaldo que se desea.
:: Configurar la carpeta que se copiará y a dónde se copiará.
:: Crear un filtro para incluir únicamente una lista de carpetas.
:: Dejar vacío si se deja copiar todo.
set src1="D:\wwwroot\fideicomiso"
set dest1="H:\CEFAG_02May2018\"
set include1=""
%FastCopy% %params% /exclude=%exclude% %src1% /to=%dest1%
:: Generar el nombre del archivo incluyendo el día del respaldo.
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set datetime=%%I
set datetime=%datetime:~0,8%
set filename=%root%backup-%datetime%.7z
%7zip% a -r -t7z "%filename%" "%%FastCopy% %params% /exclude=%exclude% %src1% /to=%dest1%%fideicomiso\*.pdf" -m0=lzma2 -mx=0 -mfb=64 -aoa
:: Fin del respaldo.
:: Se puede programar la tarea del respaldo o deshabilitar la línea del 7zip para no generar respaldos cada día.