Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
15d0fc8354 | ||
|
|
cdba59be95 | ||
|
|
1eaef5f0c8 | ||
|
|
6bfba97a4c | ||
|
|
ed92f4e213 | ||
|
|
48b5c61215 | ||
|
|
49305c7632 | ||
|
|
6227786ae2 | ||
|
|
eaaccc4c9e | ||
|
|
471cf57b7e | ||
|
|
626ac2a0c5 |
30
CHANGELOG.md
30
CHANGELOG.md
@@ -1,16 +1,33 @@
|
||||
# Changelog
|
||||
|
||||
## [1.2.1](https://github.com/kmwoley/restic-windows-backup/tree/HEAD) (2020-06-08)
|
||||
## [1.3](https://github.com/kmwoley/restic-windows-backup/tree/HEAD)
|
||||
|
||||
[Full Changelog](https://github.com/kmwoley/restic-windows-backup/compare/1.1...HEAD)
|
||||
|
||||
* Fix/improve internet connectivity checks for azure: gs: b2:
|
||||
* Internet connectivity test now supports more repository types (s3:, sftp:, rest:, azure:, gs:), and ignores unsupported (swift:, rclone: and local)
|
||||
* Add 32-bit support in the `install.ps1`
|
||||
[Full Changelog](https://github.com/kmwoley/restic-windows-backup/compare/1.2.1...HEAD)
|
||||
|
||||
Improvements for Restic 0.12 and additional error logging.
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Restic + rclone errors [\#26](https://github.com/kmwoley/restic-windows-backup/issues/26)
|
||||
- FYI: Restic now has built-in VSS support [\#23](https://github.com/kmwoley/restic-windows-backup/issues/23)
|
||||
- SFTP backup [\#22](https://github.com/kmwoley/restic-windows-backup/issues/22)
|
||||
- Dirrectory/Folder Backup [\#21](https://github.com/kmwoley/restic-windows-backup/issues/21)
|
||||
- Docker format [\#20](https://github.com/kmwoley/restic-windows-backup/issues/20)
|
||||
- Filtering out errors before deciding to retry ? [\#19](https://github.com/kmwoley/restic-windows-backup/issues/19)
|
||||
- Backup task stucked [\#18](https://github.com/kmwoley/restic-windows-backup/issues/18)
|
||||
|
||||
## [1.2.1](https://github.com/kmwoley/restic-windows-backup/tree/1.2.1) (2020-06-08)
|
||||
|
||||
[Full Changelog](https://github.com/kmwoley/restic-windows-backup/compare/1.1...1.2.1)
|
||||
|
||||
* Internet connectivity test now supports more repository types (s3:, sftp:, rest:, azure:, gs:), and ignores unsupported (swift:, rclone: and local)
|
||||
* Add 32-bit support in the `install.ps1`
|
||||
|
||||
* Fix/improve internet connectivity checks for azure: gs: b2:
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- azure repo could not be parsed [\#15](https://github.com/kmwoley/restic-windows-backup/issues/15)
|
||||
- Need to strip rest: in addition to s3: from RESTIC\_REPOSITORY [\#14](https://github.com/kmwoley/restic-windows-backup/issues/14)
|
||||
- Use non-s3 repos [\#10](https://github.com/kmwoley/restic-windows-backup/issues/10)
|
||||
- Test-Connection fails [\#9](https://github.com/kmwoley/restic-windows-backup/issues/9)
|
||||
@@ -19,6 +36,7 @@
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Release 1 3 [\#17](https://github.com/kmwoley/restic-windows-backup/pull/17) ([kmwoley](https://github.com/kmwoley))
|
||||
- 1.2 Release [\#13](https://github.com/kmwoley/restic-windows-backup/pull/13) ([kmwoley](https://github.com/kmwoley))
|
||||
|
||||
## [1.1](https://github.com/kmwoley/restic-windows-backup/tree/1.1) (2020-02-15)
|
||||
|
||||
32
backup.ps1
32
backup.ps1
@@ -67,7 +67,7 @@ function Invoke-Maintenance {
|
||||
|
||||
# forget snapshots based upon the retention policy
|
||||
Write-Output "[[Maintenance]] Start forgetting..." | Tee-Object -Append $SuccessLog
|
||||
& $ResticExe --verbose -q forget $SnapshotRetentionPolicy 3>&1 2>> $ErrorLog | Tee-Object -Append $SuccessLog
|
||||
& $ResticExe forget $SnapshotRetentionPolicy 3>&1 2>> $ErrorLog | Tee-Object -Append $SuccessLog
|
||||
if(-not $?) {
|
||||
Write-Output "[[Maintenance]] Forget operation completed with errors" | Tee-Object -Append $ErrorLog | Tee-Object -Append $SuccessLog
|
||||
$maintenance_success = $false
|
||||
@@ -76,7 +76,7 @@ function Invoke-Maintenance {
|
||||
# prune (remove) data from the backup step. Running this separate from `forget` because
|
||||
# `forget` only prunes when it detects removed snapshots upon invocation, not previously removed
|
||||
Write-Output "[[Maintenance]] Start pruning..." | Tee-Object -Append $SuccessLog
|
||||
& $ResticExe --verbose -q prune 3>&1 2>> $ErrorLog | Tee-Object -Append $SuccessLog
|
||||
& $ResticExe prune 3>&1 2>> $ErrorLog | Tee-Object -Append $SuccessLog
|
||||
if(-not $?) {
|
||||
Write-Output "[[Maintenance]] Prune operation completed with errors" | Tee-Object -Append $ErrorLog | Tee-Object -Append $SuccessLog
|
||||
$maintenance_success = $false
|
||||
@@ -103,7 +103,7 @@ function Invoke-Maintenance {
|
||||
$Script:ResticStateLastDeepMaintenance = Get-Date
|
||||
}
|
||||
|
||||
& $ResticExe --verbose -q check @data_check 3>&1 2>> $ErrorLog | Tee-Object -Append $SuccessLog
|
||||
& $ResticExe check @data_check 3>&1 2>> $ErrorLog | Tee-Object -Append $SuccessLog
|
||||
if(-not $?) {
|
||||
Write-Output "[[Maintenance]] Check completed with errors" | Tee-Object -Append $ErrorLog | Tee-Object -Append $SuccessLog
|
||||
$maintenance_success = $false
|
||||
@@ -113,7 +113,7 @@ function Invoke-Maintenance {
|
||||
|
||||
if($maintenance_success -eq $true) {
|
||||
$Script:ResticStateLastMaintenance = Get-Date
|
||||
$Script:ResticStateMaintenanceCounter = 0;
|
||||
$Script:ResticStateMaintenanceCounter = 0
|
||||
}
|
||||
}
|
||||
|
||||
@@ -166,7 +166,7 @@ function Invoke-Backup {
|
||||
}
|
||||
|
||||
# Launch Restic
|
||||
& $ResticExe --verbose -q backup $folder_list --exclude-file=$WindowsExcludeFile --exclude-file=$LocalExcludeFile 3>&1 2>> $ErrorLog | Tee-Object -Append $SuccessLog
|
||||
& $ResticExe backup $folder_list --exclude-file=$WindowsExcludeFile --exclude-file=$LocalExcludeFile 3>&1 2>> $ErrorLog | Tee-Object -Append $SuccessLog
|
||||
if(-not $?) {
|
||||
Write-Output "[[Backup]] Completed with errors" | Tee-Object -Append $ErrorLog | Tee-Object -Append $SuccessLog
|
||||
$return_value = $false
|
||||
@@ -213,7 +213,19 @@ function Send-Email {
|
||||
}
|
||||
if((($status -eq "SUCCESS") -and ($SendEmailOnSuccess -ne $false)) -or ((($status -eq "ERROR") -or $success_after_failure) -and ($SendEmailOnError -ne $false))) {
|
||||
$subject = "$env:COMPUTERNAME Restic Backup Report [$status]"
|
||||
Send-MailMessage @ResticEmailConfig -From $ResticEmailFrom -To $ResticEmailTo -Credential $credentials -Subject $subject -Body $body @attachments
|
||||
|
||||
# create a temporary error log to log errors; can't write to the same file that Send-MailMessage is reading
|
||||
$temp_error_log = $ErrorLog + "_temp"
|
||||
|
||||
Send-MailMessage @ResticEmailConfig -From $ResticEmailFrom -To $ResticEmailTo -Credential $credentials -Subject $subject -Body $body @attachments 3>&1 2>> $temp_error_log
|
||||
|
||||
if(-not $?) {
|
||||
Write-Output "[[Email]] Sending email completed with errors" | Tee-Object -Append $temp_error_log | Tee-Object -Append $SuccessLog
|
||||
}
|
||||
|
||||
# join error logs and remove the temporary
|
||||
Get-Content $temp_error_log | Add-Content $ErrorLog
|
||||
Remove-Item $temp_error_log
|
||||
}
|
||||
}
|
||||
|
||||
@@ -337,15 +349,15 @@ function Invoke-Main {
|
||||
}
|
||||
}
|
||||
|
||||
Write-Warning "Errors found! Error Log: $error_log"
|
||||
Write-Output "[[General]] Errors found. Log: $error_log" | Tee-Object -Append $success_log | Tee-Object -Append $error_log
|
||||
$error_count++
|
||||
|
||||
$attempt_count--
|
||||
if($attempt_count -gt 0) {
|
||||
Write-Output "Sleeping for 15 min and then retrying..." | Tee-Object -Append $success_log
|
||||
Write-Output "[[Retry]] Sleeping for 15 min and then retrying..." | Tee-Object -Append $success_log
|
||||
}
|
||||
else {
|
||||
Write-Output "Retry limit has been reached. No more attempts to backup will be made." | Tee-Object -Append $success_log
|
||||
Write-Output "[[Retry]] Retry limit has been reached. No more attempts to backup will be made." | Tee-Object -Append $success_log
|
||||
}
|
||||
if($internet_available -eq $true) {
|
||||
Invoke-HistoryCheck $success_log $error_log
|
||||
@@ -364,4 +376,4 @@ function Invoke-Main {
|
||||
exit $error_count
|
||||
}
|
||||
|
||||
Invoke-Main
|
||||
Invoke-Main
|
||||
|
||||
@@ -43,7 +43,7 @@ $backup_task_name = "Restic Backup"
|
||||
$backup_task = Get-ScheduledTask $backup_task_name -ErrorAction SilentlyContinue
|
||||
if($null -eq $backup_task) {
|
||||
try {
|
||||
$task_action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument '-NonInteractive -NoLogo -NoProfile -Command ".\backup.ps1; exit $LASTEXITCODE"' -WorkingDirectory $InstallPath
|
||||
$task_action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument '-ExecutionPolicy Bypass -NonInteractive -NoLogo -NoProfile -Command ".\backup.ps1; exit $LASTEXITCODE"' -WorkingDirectory $InstallPath
|
||||
$task_user = New-ScheduledTaskPrincipal -UserId "NT AUTHORITY\SYSTEM" -RunLevel Highest
|
||||
$task_settings = New-ScheduledTaskSettingsSet -RestartCount 4 -RestartInterval (New-TimeSpan -Minutes 15) -ExecutionTimeLimit (New-TimeSpan -Days 3) -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -DontStopOnIdleEnd -MultipleInstances IgnoreNew -IdleDuration 0 -IdleWaitTimeout 0 -StartWhenAvailable -RestartOnIdle
|
||||
$task_trigger = New-ScheduledTaskTrigger -Daily -At 4:00am
|
||||
|
||||
Reference in New Issue
Block a user