diff --git a/backup.sh b/backup.sh index 32c6404..df742a3 100755 --- a/backup.sh +++ b/backup.sh @@ -23,15 +23,15 @@ date # Blir brukt som navn på ZFS-snapshot og logger. -snapshot="$(date +%Y%m%d)" +declare -r snapshot="$(date +%Y%m%d)" if [ "$1" = "full" ]; then # Fullbackupen starter før midnatt, legg på en dag - snapshot=$(date -v +1d +%Y%m%d) + declare -r snapshot=$(date -v +1d +%Y%m%d) fi -lockfile="/backupz/backup.sh.lock" +declare -r lockfile="/backupz/backup.sh.lock" if [ -e $lockfile ]; then - pid="$(cat $lockfile)" + declare -r pid="$(cat $lockfile)" # TODO: Bruk bedre metode for å finne prosess. if ps -p "$pid"; then @@ -69,7 +69,7 @@ while [ "$(zfs get -Hp available principal/backupz | cut -f3)" -lt 50000000000 ] echo "Disken er nesten full, rydder"; echo - min_backups=5 + declare -ri min_backups=5 if [ "$(zfs list -t snapshot | grep -c "backupz@")" -lt "$min_backups" ]; then echo; echo "Mindre enn $min_backups backups lagret, feiger ut fra sletting"; @@ -77,7 +77,7 @@ while [ "$(zfs get -Hp available principal/backupz | cut -f3)" -lt 50000000000 ] break; fi - oldest=$(zfs list -t snapshot | grep backupz@ | head -n1 | tr @ ' ' | awk '{print $2}') + declare -r oldest=$(zfs list -t snapshot | grep backupz@ | head -n1 | tr @ ' ' | awk '{print $2}') echo "Kjører zfs destroy på alle disker @$oldest" for d in $(zfs list | grep ^principal/backupz | awk '{print $1}'); do zfs destroy "$d@$oldest" @@ -98,7 +98,7 @@ echo # med en egen json-fil og litt jq-magi? # Liste over vertsmaskiner som skal tas backup av. -declare hosts=() +declare -a hosts=() # SSH-vertsnavn hvis det er forskjellig fra vertsnavnet i listen. declare -A host_ssh_hostname=() @@ -106,12 +106,13 @@ declare -A host_ssh_hostname=() # Backup-katalog hvis den er forskjellig fra vertsnavnet i listen. declare -A hosts_output_dir=() +# ameno hosts+=("ameno") -declare -r ameno_includes=( +declare -ra ameno_includes=( "/" "/boot/firmware" ) -declare -r ameno_excludes=( +declare -ra ameno_excludes=( "/var/cache/" "/var/lib/snapd/" "/var/log/journal/" @@ -121,60 +122,61 @@ declare -r ameno_excludes=( # hosts+=("knakelibrak_wiki") # host_ssh_hostname["knakelibrak_wiki"]="wiki" # hosts_output_dir["knakelibrak_wiki"]="wiki" -# declare -r wiki_includes=( +# declare -ra wiki_includes=( # "/var/lib/mediawiki" # ) -# declare -r wiki_excludes=() +# declare -ra wiki_excludes=() # knakelibrak (databases) # hosts+=("knakelibrak_databases") # host_ssh_hostname["knakelibrak_databases"]="knakelibrak" # hosts_output_dir["knakelibrak_databases"]="databases" -# declare -r knakelibrak_databases_includes=( +# declare -ra knakelibrak_databases_includes=( # "/var/backups/databases" # ) -# declare -r knakelibrak_databases_excludes=() +# declare -ra knakelibrak_databases_excludes=() # jokum (synapse) # hosts+=("jokum_synapse") # host_ssh_hostname["jokum_synapse"]="jokum" # hosts_output_dir["jokum_synapse"]="jokum/synapse" -# declare -r jokum_synapse_includes=( +# declare -ra jokum_synapse_includes=( # "/data/synapse/" # ) -# declare -r jokum_synapse_excludes=() +# declare -ra jokum_synapse_excludes=() # skrotnisse # hosts+=("skrotnisse") -# declare -r skrotnisse_includes=( +# declare -ra skrotnisse_includes=( # "/var/www/" # "/srv/" # ) -# declare -r skrotnisse_excludes=() +# declare -ra skrotnisse_excludes=() # dash8 # hosts+=("dash8") -# declare -r dash8_includes=( +# declare -ra dash8_includes=( # "/var/lib/bitlbee/" # ) -# declare -r dash8_excludes=() +# declare -ra dash8_excludes=() # tim # hosts+=("tim") # hosts_output_dir["tim"]="web" -# declare -r tim_includes=( +# declare -ra tim_includes=( # "/var/lib/squirrelmail" # ) -# declare -r tim_excludes=() +# declare -ra tim_excludes=() +# microbel (hjemmeområder) hosts+=("homepvv") -declare -r homepvv_includes=( +declare -ra homepvv_includes=( "/" "/boot" "/export/home/pvv" "/var" ) -declare -r homepvv_excludes=( +declare -ra homepvv_excludes=( # Se ./homepvv.exclude - den skal bli plukket opp automatisk ) @@ -182,47 +184,51 @@ declare -r homepvv_excludes=( # Minecraft-verden kopieres fra /var/backups/minecraft/current/ istf. # /srv/minecraft-pvv/. hosts+=("innovation") -declare -r innovation_includes=( +declare -ra innovation_includes=( "/" "/boot/efi" ) -declare -r innovation_excludes=( +declare -ra innovation_excludes=( "/srv/minecraft-pvv/" "/var/cache/" "/var/db/freebsd-update/files/" ) +# lommel # hosts+=("lommel") -# declare -r lommel_includes=( +# declare -ra lommel_includes=( # "/" # ) -# declare -r lommel_excludes=( +# declare -ra lommel_excludes=( # se ./lommel.exclude - den skal bli plukket opp automatisk # ) +# sleipner hosts+=("sleipner") -declare -r sleipner_includes=( +declare -ra sleipner_includes=( "/" ) -declare -r sleipner_excludes=( +declare -ra sleipner_excludes=( "/scratch/" "/var/cache/" ) +# spikkjeposche # hosts+=("spikkjeposche") -# declare -r spikkjeposche_includes=( +# declare -ra spikkjeposche_includes=( # "/usr/local/www" # "/usr/local/etc/lighttpd" # "/etc/ssl/private" # ) -# declare -r spikkjeposche_excludes=() +# declare -ra spikkjeposche_excludes=() +# tom hosts+=("tom") -declare -r tom_includes=( +declare -ra tom_includes=( "/" "/boot/efi" ) -declare -r tom_excludes=( +declare -ra tom_excludes=( "/var/cache/" ) ### Slutt på liste over vertsmaskiner og hva som skal tas backup av. ### @@ -230,7 +236,7 @@ declare -r tom_excludes=( #export RSYNC_RSH="ssh -c arcfour -v" export RSYNC_RSH="ssh -v" declare -r rsync="/usr/local/bin/rsync" -rsync_flags=( +declare -ra rsync_flags=( --archive --hard-links --one-file-system @@ -256,14 +262,14 @@ declare -A venteproc=() # fi for host in "${hosts[@]}"; do - command=( + declare -a command=( "$rsync" "${rsync_flags[@]}" "--log-file=${logdir}/${host}.log.$snapshot" ) - exclude_paths_var="${host}_excludes[@]" - exclude_paths=("${!exclude_paths_var}") + declare exclude_paths_var="${host}_excludes[@]" + declare -a exclude_paths=("${!exclude_paths_var}") for exclude in "${exclude_paths[@]}"; do command+=("--exclude=${exclude}") done @@ -272,8 +278,8 @@ for host in "${hosts[@]}"; do command+=("--exclude-from=/backupz/${host}.exclude") fi - include_paths_var="${host}_includes[@]" - include_paths=("${!include_paths_var}") + declare include_paths_var="${host}_includes[@]" + declare -a include_paths=("${!include_paths_var}") if [ "${#include_paths[@]}" -eq 0 ]; then echo "Ingen inkluderingsstier for vert $host, hopper over." continue