Compare commits

...

8 Commits

Author SHA1 Message Date
Milan Meduna ed2e445ced add_lzop_compression 2021-05-11 15:49:41 +02:00
root 89b9214ce4 preserve_recordsize 2021-01-08 17:58:53 +01:00
Milan Meduna 5838eedf1e Check if config-file exists 2020-11-05 09:27:42 +01:00
root 2a56c7c761 add way to change lock file for flock using second parameter 2020-08-21 11:45:31 +02:00
Milan Meduna 0402f47302 Aktualizovat „README.md“ 2020-04-25 15:30:38 +02:00
Milan Meduna fb2048380d delete regex from delete block to filter only zfsnap created snapshots 2019-09-21 22:11:09 +02:00
Milan Meduna ceb07074df switch to full incremental
change parameter -i to -I when doing incremental backup
2019-09-20 13:20:45 +02:00
Milan Meduna 1ac28151b5 remove_compression 2019-06-19 20:24:34 +02:00
2 changed files with 21 additions and 6 deletions

View File

@ -8,7 +8,7 @@ Edit example config file, run script and config as parameter.
__Requirements:__
zfSnap, pv, Ubuntu (tested on Ubuntu 18.04)
zfSnap, pv, lzop, Ubuntu (tested on Ubuntu 18.04, 19.04, 19.10 and 20.04)
__THE PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT WITHOUT ANY WARRANTY. IT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.__

View File

@ -1,6 +1,20 @@
#!/bin/bash
if [[ ! -f "$1" ]]
then
echo "Config file not exists!"
exit 1
fi
if [ -z "$2" ]
then
lock_variable="/var/lock/zfs-backup-mm"
else
lock_variable="$2"
fi
(
flock -n 200 || { echo 'locked via flock on file /var/lock/zfs-backup-mm' ; exit 1; }
flock -n 200 || { echo "locked via flock on file $lock_variable" ; exit 1; }
zfsnap_block () {
@ -38,14 +52,15 @@ backup_snap=$(echo "$backups_server_zfs_snapshots" | grep "$backup_server_datase
backup_snaps=$(echo "$backups_server_zfs_snapshots" | grep "$backup_server_dataset"/"$dataset_clean"@ | grep -E "....-..-.._........--"$zfsnap_days_keep_snaps"d" | cut -d"@" -f2 | cut -d" " -f1)
source_backups_server_match=$(grep -Fxf <(echo "$source_snaps") <(echo "$backup_snaps"))
source_backups_server_match_tailed=$(echo "$source_backups_server_match" | tail -n1)
dataset_recordsize=$(zfs get recordsize -H -o value "$dataset")
if [ -z "$backup_snap" ]
then
echo "Snapshot on backup server not found, sending "$dataset"@"$source_snap" to server "$backup_server" "$backup_server_dataset"/"$dataset_clean""
zfs send -c "$dataset"@"$source_snap" | pv -L "$shape_megabytes"m | ssh -$backup_server_ipv "$backup_server" -p "$backup_server_port" zfs recv "$backup_server_dataset"/"$dataset_clean" && echo "Send OK"
zfs send "$dataset"@"$source_snap" | lzop | pv -L "$shape_megabytes"m | ssh -$backup_server_ipv "$backup_server" -p "$backup_server_port" "lzop -d | zfs recv -o recordsize="$dataset_recordsize" "$backup_server_dataset"/"$dataset_clean"" && echo "Send OK"
else
echo "Snapshot on backup server found, sending incremental from "$dataset"@"$source_backups_server_match_tailed" to "$dataset"@"$source_snap" to server "$backup_server" "$backup_server_dataset"/"$dataset_clean""
zfs send -ci "$dataset"@"$source_backups_server_match_tailed" "$dataset"@"$source_snap" | pv -L "$shape_megabytes"m | ssh -$backup_server_ipv "$backup_server" -p "$backup_server_port" zfs recv "$backup_server_dataset"/"$dataset_clean" -F && echo "Send OK"
zfs send -I "$dataset"@"$source_backups_server_match_tailed" "$dataset"@"$source_snap" | lzop | pv -L "$shape_megabytes"m | ssh -$backup_server_ipv "$backup_server" -p "$backup_server_port" "lzop -d | zfs recv -o recordsize="$dataset_recordsize" "$backup_server_dataset"/"$dataset_clean" -F" && echo "Send OK"
fi
done
del_snaps_block
@ -57,7 +72,7 @@ for dataset in $source_datasets;
do
dataset_clean=$(echo $dataset | grep -o '[^/]*$')
snaps_to_delete=$(echo "$backups_server_zfs_snapshots" | grep "$backup_server_dataset"/"$dataset_clean"@ | grep -E "....-..-.._........--"$zfsnap_days_keep_snaps"d" | head -n -"$backup_server_number_keep_snaps" | cut -d" " -f1)
snaps_to_delete=$(echo "$backups_server_zfs_snapshots" | grep "$backup_server_dataset"/"$dataset_clean"@ | head -n -"$backup_server_number_keep_snaps" | cut -d" " -f1)
for snap in $snaps_to_delete
do
@ -78,4 +93,4 @@ if [[ $# -eq 0 ]] ; then
fi
source $1
zfsnap_block
) 200>/var/lock/zfs-backup-mm
) 200>$lock_variable