Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 05/11/2015, à 23:13

FelixP

Petit script de sauvegarde

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 tongue ). 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 ?


Envoyé depuis mon navigateur libre sous mon os libre.
Manjaro (basé Arch) + Cinnamon, et Firefox-Nightly 44.0 !
Voyez mes astuces ici : http://doc.ubuntu-fr.org/utilisateurs/felixp

Hors ligne

#2 Le 05/11/2015, à 23:15

FelixP

Re : Petit script de sauvegarde

Pour explications, comme ma BBox ne gère pas le loopback (merci bouygues), quand je suis en local je ne peux pas utiliser geekolloc.fr. Je dois donc utiliser le nom local de mon raspi.

Les arguments peuvent arriver dans n'importe quel ordre, sachant que le dernier sur la ligne de commande est pris en compte.
Pour sauvegarder, par exemple :

raspi backup musique
# Ou plus court :
raspi m -b

Envoyé depuis mon navigateur libre sous mon os libre.
Manjaro (basé Arch) + Cinnamon, et Firefox-Nightly 44.0 !
Voyez mes astuces ici : http://doc.ubuntu-fr.org/utilisateurs/felixp

Hors ligne