Browse Source

add script to mv orga from sda to nas

pull/4/head
François 1 year ago
parent
commit
6fad177192
  1. 39
      bin/.mvOrga2Nas-completion.bash
  2. 112
      bin/mvOrga2Nas.sh

39
bin/.mvOrga2Nas-completion.bash

@ -0,0 +1,39 @@
#/usr/bin/env bash
_mv_orga_nas_completion () {
KAZ_ROOT=$(cd "$(dirname ${COMP_WORDS[0]})"/..; pwd)
COMPREPLY=()
. "${KAZ_ROOT}/bin/.commonFunctions.sh"
setKazVars
local cword=${COMP_CWORD} cur=${COMP_WORDS[COMP_CWORD]} card=${#COMP_WORDS[@]} i w skip=0
for ((i=1 ; i<cword; i++)) ; do
w="${COMP_WORDS[i]}"
[[ "${w}" == -* ]] && ((skip++))
done
local arg_pos w i names=
((arg_pos = cword - skip))
for ((i=1 ; i<card; i++)) ; do
w="${COMP_WORDS[i]}"
if [[ "${w}" == -* ]]; then
continue
fi
names="${names} ${w}"
done
local KAZ_LIST="${KAZ_BIN_DIR}/kazList.sh"
case "$cur" in
-*)
local proposal="-h -n"
COMPREPLY=( $(compgen -W "${proposal}" -- "${cur}" ) )
;;
*)
local available_orga=$("${KAZ_LIST}" "compose" "enable" "orga" 2>/dev/null | sed "s/-orga\b//g")
local proposal= item
for item in ${available_orga} ; do
[[ " ${names} " =~ " ${item} " ]] || proposal="${proposal} ${item}"
done
COMPREPLY=($(compgen -W "${proposal}" -- "${cur}"))
;;
esac
return 0
}
complete -F _mv_orga_nas_completion mvOrga2Nas.sh

112
bin/mvOrga2Nas.sh

@ -0,0 +1,112 @@
#!/bin/bash
# déplace des orga de
# /var/lib/docker/volumes/
# vers
# /mnt/disk-nas1/docker/volumes/
KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
. "${KAZ_ROOT}/bin/.commonFunctions.sh"
setKazVars
DOCK_NAS="/mnt/disk-nas1/docker/volumes"
export PRG="$0"
cd $(dirname $0)
. "${DOCKERS_ENV}"
declare -a availableOrga
availableOrga=($(sed -e "s/\(.*\)[ \t]*#.*$/\1/" -e "s/^[ \t]*\(.*\)-orga$/\1/" -e "/^$/d" "${KAZ_CONF_DIR}/container-orga.list"))
# no more export in .env
export $(set | grep "domain=")
export SIMU=""
export ONLY_SYNC=""
usage(){
echo "Usage: ${PRG} [orga...]"
echo " -h help"
echo " -n simulation"
echo " -s rsync"
exit 1
}
for ARG in $@; do
case "${ARG}" in
'-h' | '-help' )
usage
;;
'-n' )
shift
export SIMU="echo"
;;
'-s' )
shift
export ONLY_SYNC="yes"
;;
*)
break
;;
esac
done
[[ -z "$1" ]] && usage
for ARG in $@; do
[[ ! " ${availableOrga[*]} " =~ " ${ARG} " ]] && echo "${RED}${ARG}${NC} is not an orga" && usage
done
########################################
cd "${DOCK_VOL}"
volext=$(ls -d orga* | sed 's%.*-%%' | sort -u)
declare -a orgaPhase2
# Pour que l'interruption de service soit la plus courte possible,
# on pré-copie toutes les infos de puis la création de l'orga
echo -n "${BLUE}Phase 1: sync.${NC} "
checkContinue
for ARG in $@; do
for EXT in ${volext}; do
vol="orga_${ARG}-${EXT}"
[ -e "${DOCK_VOL}/${vol}" ] || continue
[ -L "${DOCK_VOL}/${vol}" ] && echo "${GREEN}${vol}${NC} : done" && continue
! [ -d "${DOCK_VOL}/${vol}" ] && echo "${RED}${vol}${NC} : unknown" && continue
echo "${YELLOW}${vol}${NC}"
${SIMU} rsync -auHAX --info=progress2 "${DOCK_VOL}/${vol}/" "${DOCK_NAS}/${vol}/"
[[ " ${ARG} " =~ " ${orgaPhase2} " ]] || orgaPhase2+=( "${ARG}" )
done
done
[ -n "${ONLY_SYNC}" ] && exit 0
if (( ${#orgaPhase2[@]} == 0 )); then
exit 0
fi
echo -n "${BLUE}Phase 2: mv.${NC} "
checkContinue
BACK="${DOCK_VOL}/old"
mkdir -p "${BACK}"
for ARG in "${orgaPhase2[@]}"; do
cd "${KAZ_ROOT}"
cd "${KAZ_COMP_DIR}/${ARG}-orga"
! [ -e "docker-compose.yml" ] && echo "no docker-compose.yml for ${RED}${ARG}${NC}" && continue
${SIMU} docker-compose down
# L'arrêt ne durera que le temps de copier les modifications depuis la phase 1.
for EXT in ${volext}; do
vol="orga_${ARG}-${EXT}"
[ -e "${DOCK_VOL}/${vol}" ] || continue
[ -L "${DOCK_VOL}/${vol}" ] && echo "${GREEN}${vol}${NC} : done" && continue
! [ -d "${DOCK_VOL}/${vol}" ] && echo "${RED}${vol}${NC} : unknown" && continue
echo "${YELLOW}${vol}${NC}"
${SIMU} rsync -auHAX --info=progress2 "${DOCK_VOL}/${vol}/" "${DOCK_NAS}/${vol}/"
${SIMU} mv "${DOCK_VOL}/${vol}" "${BACK}/"
${SIMU} ln -sf "${DOCK_NAS}/${vol}" "${DOCK_VOL}/"
done
${SIMU} docker-compose up -d
[[ -x "reload.sh" ]] && "./reload.sh"
done
Loading…
Cancel
Save