Aller au contenu principal
Sujet: Faire une sauvegarde de son pupsave  (Lu 712 fois) sujet précédent - sujet suivant
0 Membres et 1 Invitédans ce sujet

Faire une sauvegarde de son pupsave

... en fin de session, ou n'importe quand !

Bonsoir, toutes et tous !

Le script qui suit fonctionne bien chez moi sur un Upup-Raring (voir capture ci-dessous), mais si jamais vous avez une minute, pourriez-vous le tester sur votre puplette ? Merci d'avance.

Le mystère que j'ai rencontré est que lz4 nécessiterait d'étre lancé d'une console pour faire son boulot ? Si Môssieu LZ4 n'a pas sa console, Môssieu LZ4 ne travaille pas ?!  Ou bien c'est moi qui n'ai rien compris au Môssieu ?! :lol:  À la décharge du dit Môssieu, je dois ajouter que c'est seulement quand le script est lancé d'un menu « ae » que lz4 fait son difficile.  Toute piste de solution bienvenue.

Pour zip, pas de problème, c'est un vieux de la vieille qui s'accommode de toutes les situations. J'ai mis les deux, lz4 et zip, au cas où. Si votre Puppy n'a pas lz4, zip prend la relève.

Comme j'ai dit, si vous avez une minute -- c'est pas une cassure. Sauf que c'est le genre de petit script super commode à avoir sous la main (d'après moi !).  Je crois avoir assez bien commenté le script, et indiqué les dépendances. Mais si vous avez des questions, des observations, ou des suggestions d'amélioration, faut pas vous gêner. 

À+

#!/bin/bash
# /opt/local/Systeme/copderes-PupLin.sh
# OU | OR
# ~/my-applications/bin/copderes-PupLin.sh
#~~~~~~~~~~
# Objectif : créer rapidement une copie du fichier de
# .................  sauvegarde personnel actif du Puppy.
# Requiert : tree, awk, dirname, lz4 (recommandé) OU zip.
#~~~~~~~~~~
# Goal: make a fast backup of the active pupsave file.
# Requires: tree, awk, dirname, lz4 (recommended) OR zip.
#~~~~~~~~~~
# © Christian L'Écuyer,Gatineau (Qc), Canada, 2018-05-07. GPL3.
# (Alias musher0 [forum Puppy].)  # Licence ci-dessous | License below.
####
cd /mnt/home # Tous les Puppys ont une partition « home ».

# Variables
CiblE="`awk -F="'" '$1 ~ /LAST/ { print $2 }' /etc/rc.d/BOOTCONFIG | awk '$1 ~ /save/ { print $1}'`"
#' Le nom du pupsave actif est toujours indiqué dans ce fichier.
CiblE="`tree -fi -L 3 | grep "$CiblE" | grep -v -E "zip|lz"`"
Dat="`date '+%y%m%d-%Hh%M'`"
DiR="`dirname $CiblE`"

cd $DiR # On entre dans le rép. du Puppy même.

CiblE="`echo $CiblE | awk -F"/" '{ print $NF }'`" # On précise.
cp -f $CiblE "$CiblE-$Dat" # On fait une copie pour ne pas
# déranger le pupsave actif.

CiblE="$CiblE-$Dat" # On ajoute la date. Plus commode.

# Action
if [ -x /usr/bin/lz4 ];then
 rxvt -g 78x4 -e lz4 -f9B4BD $CiblE  # ou st (simple terminal)
 # Curieux... Il faut à lz4 une console pour fonctionner correctement ?
else # rxvt -g 78x4 -e # Pas besoin pour zip.
 zip -5 $CiblE.zip $CiblE
fi
wait # On attend que le processus soit terminé.

# Nettoyage
rm -f $CiblE # Important. Autrement la prochaine sauvegarde
# ne fonctionnera pas comme il faut.

exit
####s
# EN -- Q.v. https://opensource.org/licenses/GPL-3.0
#~~~~
# FR -- Ce programme est libre : vous pouvez le redistribuer ou modifier
# selon les termes de la Licence Publique Générale GNU publiée par la
# Free Software Foundation (v. 3  ou ultérieure, à votre choix).
#      Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS
# AUCUNE GARANTIE, ni explicite ni implicite, y inclus de commercialisation
# ou d'adaptation à un but spécifique. Pour plus de détails, vous reporter au
# texte officiel de cette licence à l'adresse ci-dessus, à sa traduction à
# http://www.linux-france.org/article/these/gpl.html, et à l'explication qui en
# est donnée à https://fr.wikipedia.org/wiki/Licence_publique_générale_GNU.
#~~~~~~~~~~

(Le code ci-dessus est identique à celui dans l'archive zip ci-dessous.)
musher0
~~~~~~~~~
C'est parce qu'on n'ose pas que c'est difficile.
(D'après Sénèque)

Re : Faire une sauvegarde de son pupsave

Répondre #1
Bonjour musher0,
Encore un script bien pratique !
Merci Christian.
Je vais tester. Mais dans l'immédiat flocon54 me mobilise beaucoup !
Philippe

Re : Faire une sauvegarde de son pupsave

Répondre #2
Sous-titre : Je cherche un cobaye !!!

Re-allô !

J'ai remanié ce script en profondeur. Il faut dire que je cherche en même temps une façon rapide et pratique de présenter tout script et d'indiquer la licence. Un gabarit, quoi.

J'ai opté ici pour une solution avec case... in... esac.

Si vous voulez de l'info sur le script, vous tapez -- en console (ben oui! Y-a-t-i une autre façon !?) --
< copderes-PupLin.sh i > ou I -- ou a, ou A (pour aide) -- ou h ou H (des fois que vous seriez anglicisé(e) !!!)
Pour celles et ceux qui ne sont pas devin(e)s ;) , au long, c'est : « copie de réserve Puppy Linux.sh ».
Ç'a plus de sens, comme ça ?  :))

On continue ! Si vous voulez connaître sous quelle licence est ce script, vous tapez -- en console (ben oui, etc...) -- :)
 
< copderes-PupLin.sh l > ou L

Pour faire tourner le script, vous tapez <
copderes-PupLin.sh > et rien d'autre. Comme d'habitude, quoi.

Dans cette mouture, j'ai essayé de généraliser, prévoir le cas où l'utilisateur a un répertoire plutôt qu'un fichier pupsave. Vous allez voir, dans la 2e partie, il y a plein de dièses : c'est là que j'ai besoin d'un cobaye !
[Modéré par ] @augras car hors sujet

Alors voilà. Tout commentaire qui se tient sera le bienvenu. À+


#!/bin/bash

[size=3][font=Georgia]TITRE="# ~~~~~~~~~~~~~ copderes-PupLin.sh ~~~~~~~~~~~~ #"[/font][/size]
[size=3][font=Georgia]AUTEUR="# © Christian L'Écuyer,Gatineau (Qc), Canada, 2018-05-07. GPL3.[/font][/size]
[size=3][font=Georgia]# (Alias musher0 [forum Puppy].) # Rév. : 2018-05-09"[/font][/size]
[size=3][font=Georgia]MERCI="# Remerciements à : / Thanks to:"[/font][/size]
[size=3][font=Georgia]LignE="# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #"[/font][/size]
[size=3][font=Georgia]INFO="$TITRE\n# /opt/local/Systeme/copderes-PupLin.sh[/font][/size]
[size=3][font=Georgia]# OU | OR\n# ~/my-applications/bin/copderes-PupLin.sh[/font][/size]
[size=3][font=Georgia]# ~~~~~~~~~~\n# Objectif : créer rapidement une copie du fichier de[/font][/size]
[size=3][font=Georgia]# .......... sauvegarde personnel actif du Puppy.[/font][/size]
[size=3][font=Georgia]# Requiert : tree, awk, dirname, zip.\n# Optionnel : lz4 (mais recommendé), st.[/font][/size]
[size=3][font=Georgia]# ~~~~~~~~~~[/font][/size]
[size=3][font=Georgia]# Goal: make a fast backup of the active pupsave file.[/font][/size]
[size=3][font=Georgia]# Requires: tree, awk, dirname, zip.\n# Optional: lz4 (but recommended), st.[/font][/size]
[size=3][font=Georgia]# ~~~~~~~~~~\n$AUTEUR\n$LignE"[/font][/size]
[size=3][font=Georgia]# Licence au bas du script | License at the bottom of the script.[/font][/size]
[size=3][font=Georgia]case "$1" in[/font][/size]
[size=3][font=Georgia]    l|L)LIC="# ~~~~~~~~~~~ LICENSE for: / LICENCE pour : ~~~~~~~~ #"[/font][/size]
[size=3][font=Georgia]    clear;echo -e "\n$LIC\n$TITRE\n$AUTEUR"[/font][/size]
[size=3][font=Georgia]    [ "${#MERCI}" -gt "32" ] && echo "$MERCI"[/font][/size]
[size=3][font=Georgia]    tail -n 12 $PWD/copderes-PupLin.sh[/font][/size]
[size=3][font=Georgia]    echo $LignE ;; # Licence / License[/font][/size]
[size=3][font=Georgia][/font][/size]
[size=3][font=Georgia]    a|A|h|H|i|I)echo -e "\n$INFO\n" ;; # Info.[/font][/size]
[size=3][font=Georgia][/font][/size]
[size=3][font=Georgia]    *)cd /initrd # Script[/font][/size]
[size=3][font=Georgia]    Dat="`date '+%y%m%d-%Hh%M'`"[/font][/size]
[size=3][font=Georgia][/font][/size]
[size=3][font=Georgia]    if [ "`ls -Algod pup_rw | awk /drw/`" ];then[/font][/size]
[size=3][font=Georgia]          cd /mnt/home # Tous les Puppys ont une partition « home ».[/font][/size]
[size=3][font=Georgia][/font][/size]
[size=3][font=Georgia]    # Variables[/font][/size]
[size=3][font=Georgia]          CiblE="`awk -F="'" '$1 ~ /LAST/ { print $2 }' /etc/rc.d/BOOTCONFIG | awk '$1 ~ /save/ { print $1}'`"[/font][/size]
[size=3][font=Georgia]    #' Le nom du pupsave actif est toujours indiqué dans ce fichier.[/font][/size]
[size=3][font=Georgia]          CiblE="`tree -fi -L 3 | grep "$CiblE" | grep -v -E "zip|lz"`"[/font][/size]
[size=3][font=Georgia]          DiR="`dirname $CiblE`"[/font][/size]
[size=3][font=Georgia]          cd $DiR # On entre dans le rép. du Puppy même.[/font][/size]
[size=3][font=Georgia][/font][/size]
[size=3][font=Georgia]          CiblE="`echo $CiblE | awk -F"/" '{ print $NF }'`" # On précise.[/font][/size]
[size=3][font=Georgia]          cp -f $CiblE "$CiblE-$Dat" # On fait une copie pour ne pas déranger le pupsave actif.[/font][/size]
[size=3][font=Georgia][/font][/size]
[size=3][font=Georgia]          CiblE="$CiblE-$Dat" # On ajoute la date. Plus commode.[/font][/size]
[size=3][font=Georgia][/font][/size]
[size=3][font=Georgia]          if [ -x /usr/bin/lz4 ];then # Action[/font][/size]
[size=3][font=Georgia]              if [ -x /usr/bin/st ];then[/font][/size]
[size=3][font=Georgia]                    st -g 78x4 -e lz4 -f9B5BD $CiblE # st (simple terminal)[/font][/size]
[size=3][font=Georgia]              else rxvt -g 78x4 -sr-e lz4 -f9B5BD $CiblE[/font][/size]
[size=3][font=Georgia]              fi # Curieux... Il faut à lz4 une console pour fonctionner correctement ?[/font][/size]
[size=3][font=Georgia][/font][/size]
[size=3][font=Georgia]          else zip -5 $CiblE.zip $CiblE # Pas besoin pour zip.[/font][/size]
[size=3][font=Georgia]          fi[/font][/size]
[size=3][font=Georgia]          wait # On attend que le processus soit terminé.[/font][/size]
[size=3][font=Georgia][/font][/size]
[size=3][font=Georgia]          rm -f $CiblE # Nettoyage # Important. Autrement,[/font][/size]
[size=3][font=Georgia]    #  la prochaine sauvegarde ne se fera pas comme il faut.[/font][/size]
[size=3][font=Georgia][/font][/size]
[size=3][font=Georgia]    # else # Tentatively; to be tested by someone who uses pupsave folders. TIA. |[/font][/size]
[size=3][font=Georgia]    ## Encore à l'essai; à tester par quelqu'un qui utilise des répertoires « pupsave ».[/font][/size]
[size=3][font=Georgia]    ## Merci d'avance.[/font][/size]
[size=3][font=Georgia]    #    cd /mnt/home[/font][/size]
[size=3][font=Georgia]    #    Z="PupLinSav$Dat"[/font][/size]
[size=3][font=Georgia]    #    zip -0ry $Z.zip /mnt/home/Rep-Pup-Save/ # Trouver le moyen de préciser.[/font][/size]
[size=3][font=Georgia]    #    if [ -x /usr/bin/lz4 ];then # Action[/font][/size]
[size=3][font=Georgia]    #        if [ -x /usr/bin/st ];then[/font][/size]
[size=3][font=Georgia]    #              st -g 78x4 -e lz4 -f9B5BD $Z.zip[/font][/size]
[size=3][font=Georgia]    #        else rxvt -g 78x4 -sr-e lz4 -f9B5BD $Z.zip[/font][/size]
[size=3][font=Georgia]    #        fi[/font][/size]
[size=3][font=Georgia]    #    else zip -5 $Z.zip.zip $Z.zip[/font][/size]
[size=3][font=Georgia]    ## Même remarques que ci-dessus concernant les compresseurs.[/font][/size]
[size=3][font=Georgia]    #    fi[/font][/size]
[size=3][font=Georgia]    fi ;;[/font][/size]
[size=3][font=Georgia]esac[/font][/size]
[size=3][font=Georgia]exit[/font][/size]
[size=3][font=Georgia][/font][/size]
[size=3][font=Georgia]# EN -- Q.v. https://opensource.org/licenses/GPL-3.0[/font][/size]
[size=3][font=Georgia]# ~~~~[/font][/size]
[size=3][font=Georgia]# FR -- Ce programme est libre : vous pouvez le redistribuer ou modifier[/font][/size]
[size=3][font=Georgia]# selon les termes de la Licence Publique Générale GNU publiée par la[/font][/size]
[size=3][font=Georgia]# Free Software Foundation (v. 3  ou ultérieure, à votre choix).[/font][/size]
[size=3][font=Georgia]#      Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS[/font][/size]
[size=3][font=Georgia]# AUCUNE GARANTIE, ni explicite ni implicite, y inclus de commercialisation[/font][/size]
[size=3][font=Georgia]# ou d'adaptation à un but spécifique. Pour plus de détails, s.v.p. vous[/font][/size]
[size=3][font=Georgia]# reporter au texte officiel de cette licence à l'adresse Internet ci-dessus[/font][/size]
[size=3][font=Georgia]# (traduction à http://linux-france.org/article/these/gpl.html), et à[/font][/size]
[size=3][font=Georgia]# l'explication qui en est donnée à[/font][/size]
# https://fr.wikipedia.org/wiki/Licence_publique_générale_GNU.



musher0
~~~~~~~~~
C'est parce qu'on n'ose pas que c'est difficile.
(D'après Sénèque)

 
Simple Audio Video Embedder