François
1 year ago
2 changed files with 151 additions and 0 deletions
@ -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 |
@ -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…
Reference in new issue