Oiler Works
  • Home
    • My resume
    • Free premium
    • Privacy Policy
  • Portfolio
  • Blogs
    • Computing
    • Science & MBA
    • Gaveta de remédios
    • Canadá
    • Presentes

Solução duplicati emergencial

23/8/2021

0 Comments

 
Solução Emergencial para Backup usando recursos disponíveis no escritório e Duplicati.

Devido ao colapso do servidor de arquivos da Polícia Rodoviária Federal em Contagem, foi preciso encontrar uma alternativa usando equipamentos não especializados. O setor de documentação produz diariamente aproximadamente 10GB de arquivos digitalizados correspondentes a documentos físicos majoritariamente encaminhados por correspondência. É relevante que estes dados sejam preservados indefinidamente até que um novo servidor de arquivos seja adquirido. Para tal, um drive externo de 2TB foi compartilhado através de um corriqueiro notebook de trabalho pessoal, com Windows 10, segregado para este novo fim. Para atingir o fim de redundância, um segundo drive externo de 2TB foi instalado em um notebook pessoal localizado em sala diversa e durante o horário comercial, o software Duplicati rodando no notebook dedicado realiza backups naquele. Como segunda redundância, tal software também faz um backup parcial dos últimos 60 dias (devido à limitação de espaço, no armazenamento interno de um terceiro notebook pessoal.


Foram criados três tarefas no Duplicati, conforme exportações a seguir.
  • Nudox para Bianca
  • Nudox para Local
  • Digitalizados para Bianca

Todas tarefas executam previamente (através da configuração run_script_before) o Script Batch  Script_Schedule.bat que irá retornar um erro 0 a 5 autorizando ou não a tarefa individual. Caso a tarefa que executa o Script Batch seja "Nudox para Local", esse mesmo script irá executar o Script PowerShell Desarquivar_Antigos.ps1
A tarefa Nudox para Local executa o Script Batch Script_Shutdown.bat ao final da mesma (através da configuração run_script_after) que desencadeia o desligamento do notebook após 21 horas. O mesmo notebook está programado através de sua BIOS para ligar automaticamente às 6 horas.

{
  "CreatedByVersion": "2.0.6.3",
  "Schedule": {
    "ID": 1,
    "Tags": [
      "ID=1"
    ],
    "Time": "2021-08-23T12:34:00Z",
    "Repeat": "77m",
    "LastRun": "2021-08-23T11:17:00Z",
    "Rule": "AllowedWeekDays=Monday,Tuesday,Wednesday,Thursday,Friday",
    "AllowedDays": [
      "mon",
      "tue",
      "wed",
      "thu",
      "fri"
    ]
  },
  "Backup": {
    "ID": "1",
    "Name": "Nudox para Bianca",
    "Description": "Limitado de 8:00 a 17:00\nBackup do drive externo \"X:\\Nudox\" para o drive externo Xbox \"\\\\N042018003351\\Nudox-Bi\\Duplicati\"\nRetenção: 1D:4h,7D:1D,2M:1W,2Y:1M,U:1Y\nbi-horária por 1 dia, diária por 1 semana, semanal por 2 meses, mensal por 2 anos, anual sem prazo",
    "Tags": [],
    "TargetURL": "file://\\\\3351\\Nudox-Bi\\Duplicati\\?auth-username=xxxx",
    "DBPath": "C:\\WINDOWS\\system32\\config\\systemprofile\\AppData\\Local\\Duplicati\\OJNVMOKNZR.sqlite",
    "Sources": [
      "X:\\NUDOX\\"
    ],
    "Settings": [
      {
        "Filter": "",
        "Name": "encryption-module",
        "Value": "",
        "Argument": null
      },
      {
        "Filter": "",
        "Name": "compression-module",
        "Value": "zip",
        "Argument": null
      },
      {
        "Filter": "",
        "Name": "dblock-size",
        "Value": "100MB",
        "Argument": null
      },
      {
        "Filter": "",
        "Name": "retention-policy",
        "Value": "U:1Y,1Y:1M,2M:1W,2W:1D,1D:4h",
        "Argument": null
      },
      {
        "Filter": "",
        "Name": "--no-encryption",
        "Value": "true",
        "Argument": null
      },
      {
        "Filter": "",
        "Name": "--run-script-before",
        "Value": "C:\\Program Files\\Duplicati 2\\_Script-Scheduler.bat",
        "Argument": null
      },
      {
        "Filter": "",
        "Name": "--exclude-files-attributes",
        "Value": "hidden,system,temporary,Normal",
        "Argument": null
      },
      {
        "Filter": "",
        "Name": "--send-http-url",
        "Value": "https://www.duplicati-monitoring.com/log/xxxx/xxxx/26645",
        "Argument": null
      }
    ],
    "Filters": [
      {
        "Order": 0,
        "Include": false,
        "Expression": "$RECYCLE.BIN\\"
      },
      {
        "Order": 1,
        "Include": false,
        "Expression": "System Volume Information\\"
      },
      {
        "Order": 2,
        "Include": false,
        "Expression": ".*"
      },
      {
        "Order": 3,
        "Include": false,
        "Expression": "[9\\d-.+\\\\]"
      }
    ],
    "IsTemporary": false
  },
  "DisplayNames": {
    "X:\\NUDOX\\": "NUDOX"
  }
}

{
  "CreatedByVersion": "2.0.6.3",
  "Schedule": {
    "ID": 3,
    "Tags": [
      "ID=4"
    ],
    "Time": "2021-08-23T11:35:00Z",
    "Repeat": "45m",
    "LastRun": "2021-08-23T10:50:00Z",
    "Rule": "AllowedWeekDays=Monday,Tuesday,Wednesday,Thursday,Friday",
    "AllowedDays": [
      "mon",
      "tue",
      "wed",
      "thu",
      "fri"
    ]
  },
  "Backup": {
    "ID": "4",
    "Name": "Nudox para Local",
    "Description": "Limitado de 6:00 a 9:00 e 16:00 a 21:00",
    "Tags": [],
    "TargetURL": "file://C:\\Duplicati\\Nudox",
    "DBPath": "C:\\WINDOWS\\system32\\config\\systemprofile\\AppData\\Local\\Duplicati\\VIPDAPIEGL.sqlite",
    "Sources": [
      "X:\\NUDOX\\"
    ],
    "Settings": [
      {
        "Filter": "",
        "Name": "encryption-module",
        "Value": "",
        "Argument": null
      },
      {
        "Filter": "",
        "Name": "compression-module",
        "Value": "zip",
        "Argument": null
      },
      {
        "Filter": "",
        "Name": "dblock-size",
        "Value": "50MB",
        "Argument": null
      },
      {
        "Filter": "",
        "Name": "retention-policy",
        "Value": "1W:1D,1D:2h",
        "Argument": null
      },
      {
        "Filter": "",
        "Name": "--no-encryption",
        "Value": "true",
        "Argument": null
      },
      {
        "Filter": "",
        "Name": "--exclude-files-attributes",
        "Value": "temporary,system,hidden,Normal",
        "Argument": null
      },
      {
        "Filter": "",
        "Name": "--run-script-before",
        "Value": "C:\\Program Files\\Duplicati 2\\_Script-Scheduler.bat",
        "Argument": null
      },
      {
        "Filter": "",
        "Name": "--send-http-url",
        "Value": "https://www.duplicati-monitoring.com/log/xxxx/xxxx/26647",
        "Argument": null
      },
      {
        "Filter": "",
        "Name": "--run-script-after",
        "Value": "C:\\Program Files\\Duplicati 2\\_Script-Shutdown.bat",
        "Argument": null
      }
    ],
    "Filters": [
      {
        "Order": 0,
        "Include": false,
        "Expression": "$RECYCLE.BIN\\"
      },
      {
        "Order": 1,
        "Include": false,
        "Expression": "System Volume Information\\"
      },
      {
        "Order": 2,
        "Include": false,
        "Expression": ".*"
      },
      {
        "Order": 3,
        "Include": false,
        "Expression": "[9\\d-.+\\\\]"
      }
    ],
    "IsTemporary": false
  },
  "DisplayNames": {
    "X:\\NUDOX\\": "NUDOX"
  }
}

{
  "CreatedByVersion": "2.0.6.3",
  "Schedule": {
    "ID": 2,
    "Tags": [
      "ID=2"
    ],
    "Time": "2021-08-23T11:31:00Z",
    "Repeat": "14m",
    "LastRun": "2021-08-23T11:23:47Z",
    "Rule": "AllowedWeekDays=Monday,Tuesday,Wednesday,Thursday,Friday",
    "AllowedDays": [
      "mon",
      "tue",
      "wed",
      "thu",
      "fri"
    ]
  },
  "Backup": {
    "ID": "2",
    "Name": "Digitalizados para Bianca",
    "Description": "Limitado de 8:00 a 17:00\nBackup do drive externo \"X:\\Nudox\" para o drive externo Xbox \"\\\\N042018003351\\Nudox-Bi\\Digitalizados\" \nRetenção: 10",
    "Tags": [],
    "TargetURL": "file://\\\\N042018003351\\Nudox-Bi\\Digitalizados\\?auth-username=xxxx",
    "DBPath": "C:\\WINDOWS\\system32\\config\\systemprofile\\AppData\\Local\\Duplicati\\NSTTZYYIVN.sqlite",
    "Sources": [
      "X:\\NUDOX\\10-SCANNER\\Digitalizados\\"
    ],
    "Settings": [
      {
        "Filter": "",
        "Name": "encryption-module",
        "Value": "",
        "Argument": null
      },
      {
        "Filter": "",
        "Name": "compression-module",
        "Value": "zip",
        "Argument": null
      },
      {
        "Filter": "",
        "Name": "dblock-size",
        "Value": "50MB",
        "Argument": null
      },
      {
        "Filter": "",
        "Name": "retention-policy",
        "Value": "1W:1D,2D:2h",
        "Argument": null
      },
      {
        "Filter": "",
        "Name": "--no-encryption",
        "Value": "true",
        "Argument": null
      },
      {
        "Filter": "",
        "Name": "--run-script-before",
        "Value": "C:\\Program Files\\Duplicati 2\\_Script-Scheduler.bat",
        "Argument": null
      },
      {
        "Filter": "",
        "Name": "--send-http-url",
        "Value": "https://www.duplicati-monitoring.com/log/xxxx/xxxx/26646",
        "Argument": null
      },
      {
        "Filter": "",
        "Name": "--exclude-files-attributes",
        "Value": "hidden,system,temporary",
        "Argument": null
      }
    ],
    "Filters": [
      {
        "Order": 0,
        "Include": false,
        "Expression": "$RECYCLE.BIN\\"
      },
      {
        "Order": 1,
        "Include": false,
        "Expression": "System Volume Information\\"
      },
      {
        "Order": 2,
        "Include": false,
        "Expression": ".*"
      },
      {
        "Order": 3,
        "Include": true,
        "Expression": "*.pdf"
      }
    ],
    "IsTemporary": false
  },
  "DisplayNames": {
    "X:\\NUDOX\\10-SCANNER\\Digitalizados\\": "Digitalizados"
  }
}
# Desarquivar_antigos.ps1
param($days=60,$reset=0);
[email protected](
"X:\NUDOX\Processados",
"X:\NUDOX\10-SCANNER\Processados",
"X:\NUDOX\31-Pasta31",
"X:\NUDOX\34-Pasta34" );

foreach ($path in $paths) {
        if ($reset -ne 0) {
        #Set Archive for files Normal & CreationTime>=-days
                Get-ChildItem -Path "$path" -Recurse -Force -File -Attributes 'Normal'  | Where-Object { $_.CreationTime -ge (Get-Date).AddDays(-$days) } | ForEach-Object { $_.Attributes = $_.attributes -bor         [System.IO.FileAttributes]::Archive  }
        }
        #Unset Archive for files Archive & CreationTime<-days
                Get-ChildItem -Path "$path" -Recurse -Force -File -Attributes 'Archive' | Where-Object { $_.CreationTime -lt (Get-Date).AddDays(-$days) } | ForEach-Object { $_.attributes = $_.attributes -band (-bnot [System.IO.FileAttributes]::Archive) }
        
}

exit 0
@echo off
:: Script_Shutdown.bat
FOR /f "tokens=1 delims=/:" %%a IN ('time /t') DO SET _hour=%%a
FOR /f "delims="            %%a IN ('date /t') DO SET _date=%%a
FOR /f "delims="            %%a IN ('time /t') DO SET _time=%%a
IF "%DUPLICATI__backup_name%"=="Nudox para Local" goto sch1
exit 0

:sch1
        if %_hour% LSS 21 exit 0
        echo %_date% %_time% [%DUPLICATI__backup_name%] Shutdown triggered >> _Scheduler.txt
    shutdown /s /f /t 30 /d p:0:0 /c "Shutdown triggered by finished Duplicati job [%DUPLICATI__backup_name%]"
exit 0
@echo off
:: script_scheduler.bat
REM https://forum.duplicati.com/t/feature-request-better-scheduling-with-duplicati/10964/7
REM Duplicati will run the script before the backup job and waits for its 
REM completion for 60 seconds (default timeout value). After a timeout a 
REM warning is logged and the backup is started.
REM The following exit codes are supported:
REM
REM - 0: OK, run operation
REM - 1: OK, don't run operation
REM - 2: Warning, run operation
REM - 3: Warning, don't run operation
REM - 4: Error, run operation
REM - 5: Error don't run operation
REM - other: Error don't run operation

FOR /f "tokens=1 delims=/:" %%a IN ('time /t') DO SET _hour=%%a
FOR /f "delims="            %%a IN ('date /t') DO SET _date=%%a
FOR /f "delims="            %%a IN ('time /t') DO SET _time=%%a
ping N042018003351 -n 1 -w 1000 | find "TTL=" >nul 2>&1 
SET _ping=%ERRORLEVEL%
IF "%DUPLICATI__backup_name%"=="Digitalizados para Bianca" GOTO sch1
IF "%DUPLICATI__backup_name%"=="Nudox para Bianca" goto sch1
IF "%DUPLICATI__backup_name%"=="Nudox para Local" goto sch2

:sch1
REM Destino Bianca, entre 8 e 17, precisa teste de ping
        if %_hour% LSS 07 goto nobackup
        if %_hour% GEQ 18 goto nobackup
        if %_ping% EQU 1 goto nobackup
        PowerShell -NoProfile -ExecutionPolicy Bypass -file "%~dp0_Desarquivar_antigos.ps1" -days 120 -reset 1
        goto backup

:sch2
REM Destino drive interno, entre 6 e 9, e 16 e 21, quando Bianca deve estar desligado, precisar PS <60 dias
        if %_ping% EQU 0 (
                if %_hour% GEQ 09 (
                        if %_hour% LSS 16 goto nobackup
                )
                if %_hour% LSS 06 goto nobackup
                if %_hour% GEQ 21 goto nobackup
        )
        PowerShell -NoProfile -ExecutionPolicy Bypass -file "%~dp0_Desarquivar_antigos.ps1" -days 45 -reset 1
        goto backup

:backup
if %_ping% EQU 1 echo %_date% %_time% [%DUPLICATI__backup_name%] Backup authorized by no ping>> _Scheduler.txt
echo 2-Backup
exit /b 0

:nobackup
if %_ping% EQU 1 echo %_date% %_time% [%DUPLICATI__backup_name%] Backup denied by no ping>> _Scheduler.txt
echo 3-No backup
exit /b 5
0 Comments

Your comment will be posted after it is approved.


Leave a Reply.

    Arquivos

    November 2021
    August 2021
    August 2020
    August 2019
    November 2018
    October 2018
    August 2017
    March 2017
    April 2016
    March 2016
    November 2013
    March 2013
    February 2013
    November 2012
    October 2012

    Categorias

    All
    Linux
    Openwrt
    Windows 8

    RSS Feed

Powered by Create your own unique website with customizable templates.
  • Home
    • My resume
    • Free premium
    • Privacy Policy
  • Portfolio
  • Blogs
    • Computing
    • Science & MBA
    • Gaveta de remédios
    • Canadá
    • Presentes