#!/bin/bash # $HeadURL: https://svn.pasta.freemyip.com/main/miniade/trunk/bin/nop-sh $ $LastChangedRevision: 10133 $ # Modules . $(miniade) || { echo "${0##*/}: ERROR: miniade failed (hint: run 'miniade' to see error)" >&2; exit 1; } # Configurable stuff SRC_TAPE_ID=vtape008 DST_TAPE_ID=vtape009 # Other globals main() { local MY_ARGS # Defaults for options # Process options miniade_process_options MY_ARGS "$@" && set -- "${MY_ARGS[@]}" # Process arguments [ $# = 0 ] || usage # Sanity checks and derivations SRC_TAPE_ROOT=/srv/$SRC_TAPE_ID DST_TAPE_ROOT=/srv/$DST_TAPE_ID # Guts miniade_info "$(date): starting cloning ..." for SET in $(ls $SRC_TAPE_ROOT); do miniade_info "$(date): starting set $SET ..." for DLE in $(ls $SRC_TAPE_ROOT/$SET); do miniade_evaler "mkdir -p $DST_TAPE_ROOT/$SET/$DLE" if ! btrfs subvolume list -o $DST_TAPE_ROOT/$SET/$DLE/latest > /dev/null 2>&1; then miniade_warning "$DST_TAPE_ROOT/$SET/$DLE/latest: creating subvol ..." miniade_evaler "btrfs --quiet subvolume create $DST_TAPE_ROOT/$SET/$DLE/latest" fi miniade_info "$(date): starting dle $SET/$DLE ..." miniade_evaler "rsync --exclude '.rdw2*' -axHAX --delete --delete-excluded $SRC_TAPE_ROOT/$SET/$DLE/latest/ $DST_TAPE_ROOT/$SET/$DLE/latest/" || true miniade_info "$(date): finished dle $SET/$DLE" done miniade_info "$(date): finished set $SET" done miniade_info "$(date): finished cloning" miniade_info "$(date): checking for missing/obsolete dles ..." diff <(find $SRC_TAPE_ROOT/ -maxdepth 2 | sort) <(find $DST_TAPE_ROOT/ -maxdepth 2 | sort | sed "s@$DST_TAPE_ID@$SRC_TAPE_ID@g") || true } main "$@"