backup-partition: support copy before feature update

This commit is contained in:
Christian Hesse 2024-05-22 12:03:53 +02:00
parent 6cbe13a135
commit affa118161
3 changed files with 30 additions and 3 deletions

View file

@ -15,11 +15,13 @@
:do { :do {
:local ScriptName [ :jobname ]; :local ScriptName [ :jobname ];
:global BackupPartitionCopyBeforeFeatureUpdate;
:global PackagesUpdateBackupFailure; :global PackagesUpdateBackupFailure;
:global LogPrint; :global LogPrint;
:global ScriptFromTerminal; :global ScriptFromTerminal;
:global ScriptLock; :global ScriptLock;
:global VersionToNum;
:local CopyTo do={ :local CopyTo do={
:local ScriptName [ :tostr $1 ]; :local ScriptName [ :tostr $1 ];
@ -67,6 +69,17 @@
:error false; :error false;
} }
} }
} else={
:local Update [ /system/package/update/get ];
:local NumInstalled [ $VersionToNum ($Update->"installed-version") ];
:local NumLatest [ $VersionToNum ($Update->"latest-version") ];
:if ($BackupPartitionCopyBeforeFeatureUpdate = true && $NumLatest > 0 && \
($NumInstalled & 0xffff0000) != ($NumLatest & 0xffff0000)) do={
:if ([ $CopyTo $ScriptName $FallbackTo ] = false) do={
:set PackagesUpdateBackupFailure true;
:error false;
}
}
} }
} }

View file

@ -18,7 +18,8 @@ Description
This script saves the current configuration to fallback This script saves the current configuration to fallback
[partition](https://wiki.mikrotik.com/wiki/Manual:Partitions). [partition](https://wiki.mikrotik.com/wiki/Manual:Partitions).
It can also copy-over the RouterOS installation when run interactively. It can also copy-over the RouterOS installation when run interactively
or just before a feature update.
For this to work you need a device with sufficient flash storage that is For this to work you need a device with sufficient flash storage that is
properly partitioned. properly partitioned.
@ -29,8 +30,7 @@ added in the backup partition's configuration. You may want to use
> ⚠️ **Warning**: By default only the configuration is saved to backup > ⚠️ **Warning**: By default only the configuration is saved to backup
> partition. Every now and then you should copy your installation over > partition. Every now and then you should copy your installation over
> for a recent RouterOS version! For that run the script from terminal > for a recent RouterOS version! See below for options.
> manually.
Requirements and installation Requirements and installation
----------------------------- -----------------------------
@ -39,6 +39,18 @@ Just install the script:
$ScriptInstallUpdate backup-partition; $ScriptInstallUpdate backup-partition;
Configuration
-------------
The configuration goes to `global-config-overlay`, the only parameter is:
* `BackupPartitionCopyBeforeFeatureUpdate`: copy-over the RouterOS
installation when a feature update is pending
> **Info**: Copy relevant configuration from
> [`global-config`](../global-config.rsc) (the one without `-overlay`) to
> your local `global-config-overlay` and modify it to your specific needs.
Usage and invocation Usage and invocation
-------------------- --------------------

View file

@ -85,6 +85,8 @@
:global BackupUploadUrl "sftp://example.com/backup/"; :global BackupUploadUrl "sftp://example.com/backup/";
:global BackupUploadUser "mikrotik"; :global BackupUploadUser "mikrotik";
:global BackupUploadPass "v3ry-s3cr3t"; :global BackupUploadPass "v3ry-s3cr3t";
# Copy the RouterOS installation to backup partition before feature update.
:global BackupPartitionCopyBeforeFeatureUpdate false;
# This defines the settings for firewall address-lists (fw-addr-lists). # This defines the settings for firewall address-lists (fw-addr-lists).
:global FwAddrLists { :global FwAddrLists {