Salut !
De passage pour la première fois depuis bien deux ans, pour vous partager ce script.
Utilisant un raspberry pi, j'ai fait un joli script aux ptits oignons pour ma sauvegarde.
Sentez-vous libre de le critiquer (mais pas trop quand même :p ). Je pense quand même avoir fait un truc assez propre.
#!/bin/sh
USERNAME="salamandar"
RSYNC_ARGS="--progress -rltDvze"
EXCLUDE=""
LOCALDOMAIN="salamanderry"
LOCALPORT="22"
DISTDOMAIN="geekolloc.fr"
DISTPORT="2022"
help() {
cat<<EOS
Utilisation : raspi [ext] fonction arguments
fonction : help, connect, backup
EOS
}
connect() {
ssh -p $PORT $DISTANT -X
}
set_domain() {
if [[ $1 == "ext" ]]; then
DISTROOT=$USERNAME@$DISTDOMAIN:/Mammuth
PORT=$DISTPORT
else
DISTROOT=$USERNAME@$LOCALDOMAIN:/Mammuth
PORT=$LOCALPORT
fi
}
backup() {
check_dir_set
echo "$LOCALDIR -> $DISTROOT/$DISTDIR"
rsync $RSYNC_ARGS "ssh -p $PORT" $LOCALDIR $DISTROOT/$DISTDIR # --exclude $HOME/.cache --exclude Rip
}
get() {
check_dir_set
echo "$DISTROOT/$DISTDIR -> $LOCALDIR"
rsync $RSYNC_ARGS "ssh -p $PORT" $DISTROOT/$DISTDIR $LOCALDIR # --filter "- .cache"
}
check_dir_set() {
if ! $dir_is_set ; then
echo "Error, dirs are not set !"
help
exit 1
fi
}
if [[ -z "$1" ]]; then
echo "Pas d'arguments donnés !"
help
exit
fi
# Default values
set_domain int
action="help"
# Permet de vérifier qu'on a bien donné un argument de dossier
dir_is_set=false
while [[ $1 ]]
do
case "$1" in
help|--help|-h)
action="help"
shift
;;
ext)
set_domain ext
shift
;;
int)
set_domain int
shift
;;
force)
RSYNC_ARGS+=" --delete"
shift
;;
Home|home|H|h)
LOCALDIR="$HOME/"
DISTDIR="home/"
dir_is_set=true
shift
;;
Images|images|I|i)
LOCALDIR="/home/Data/Images/"
DISTDIR="Images/"
dir_is_set=true
shift
;;
Musique|musique|M|m)
LOCALDIR="/home/Musique/"
DISTDIR="Musique/"
dir_is_set=true
shift
;;
Public|public|P|p)
LOCALDIR="$HOME/Synchronisés/Public/"
DISTDIR="public/"
RSYNC_ARGS+=" -L"
dir_is_set=true
shift
;;
connect|co|--connect|-c)
action="connect"
shift
;;
backup|ba|--backup|-b)
action="backup"
shift
;;
get|download|--get|--download|-g|-dl|g|dl)
action="get"
shift
;;
edit)
action="edit"
shift
;;
*)
echo "Argument \"$1\" inconnu !"
help
exit 1
;;
esac
done
# Maintenant qu'on a lu les arguments, on peut exécuter en sérénité ce qui a été demandé
# Un argument "plus loin" écrase les options précédentes
case $action in
help)
help
;;
connect)
connect
;;
backup)
backup
;;
get)
get
;;
edit)
subl3 $0
;;
connect)
connect
;;
connect)
connect
;;
esac
exit 0
Il sera bientôt dispo sur Github ici :
https://github.com/Salamandar/configs
Qu'en pensez-vous ?