#!/bin/bash {{ file_header | default () }} {% for item in rsync_mirror_dirs %} {# Header #} echo "-----------------------" echo "Source: {{ item.src }}" echo "Destination: {{ item.dest.split(':') | last }}" {# Mount check source #} {# der führende / muss beim Dataset entfernt werden, sonst melden das Kommando immer "mounted" zurück #} if [[ "$(/usr/sbin/zfs get mounted -H {{ item.src | regex_replace('^/', '') }} | cut -f3)" = "yes" ]] ; then {# Mount check destination #} if [[ "$(ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no {{ item.dest.split(':') | first }} /usr/sbin/zfs get mounted -H {{ item.dest.split(':') | last | regex_replace('^/', '') }} | cut -f3)" = "yes" ]] ; then rsync -e "ssh -i /etc/rsync_mirror/.ssh/id_rsync_mirror -o StrictHostKeyChecking=no" --bwlimit={{ rsync_mirror_bw_limit }} --archive --verbose --inplace --itemize-changes --omit-dir-times --human-readable --stats --compress --fuzzy --force --partial --delete-after --recursive {{ item.src }}/ {{ item.dest }}/ {# "/" am Ende von Src+Dest ist Wichtig und notwendig, sonst wird in Unterordner kopiert #} else echo "Destination-Dataset not mounted!" exit 1 fi else echo "Source-Dataset not mounted!" exit 1 fi {% endfor %}