Aller au contenu principal
Sujet: Un script pour eviter de remasteriser (Lu 710 fois) sujet précédent - sujet suivant
0 Membres et 1 Invitédans ce sujet

Re : Un script pour eviter de remasteriser

Répondre #15
Bonsoir à toutes et à tous.

En accompagnement au présent script, on trouvera à https://augras.eu/puppy_forum/index.php?topic=88.new#new
deux petits scripts pour créer de petits pupsaves.

Merci de votre attention et bonne fin de journée.
musher0
~~~~~~~~~
C'est parce qu'on n'ose pas que c'est difficile.
(D'après Sénèque)

Re : Un script pour eviter de remasteriser

Répondre #16
C'est ok, augras. Pas besoin de faire un rappel, je suis retourné sur le forum Murga/Puppy, et je me le suis fait moi-même ! Désolé pour la demande dans le message précédent

Je suis remonté jusqu'au fil anglo où j'ai présenté la version initiale du présent script -- avec laquelle le confrère DavidS45 a connu du succès, d'ailleurs. Pour mémoire, c'est soit "ASRI Éducation", soit "Sailor Enceladus", qui a lancé l'idée et présenté un 1er script pour ce faire. Ces deux prototypes semblent introuvables, cependant, malgré une soirée de recherches.

Ce que j'essaie de faire maintenant, c'est une espèce de script "best practice" (pratique exemplaire) qui essaie de réagir / interagir selon que l'utilisateur a un fichier ou un répertoire pupsave. Maintenant que j'ai rapaillé les comptes rendus d'expérience et les notes de travail, ça devrait aller mieux.

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

Re : Un script pour eviter de remasteriser

Répondre #17
Bonjour tout le monde.

Je n'en suis pas encore à cette distinction entre fichier et répertoire pupsave; aussi il reste à solutionner le problème soulevé par jplt, à savoir quoi faire quand toutes les positions de ?drv sont occupées.

Mais je suis satisfait du résultat à ce jour de cette version  0.5 du script. (Voir capture ci-dessous.) Il crée un sfs nommé adrv-bis.sfs qu'il suffit de renommer en adrv_version-du-Puppy.sfs si la position adrv n'est pas prise.  Petite note en passant, la ligne rsync de ce script est inspirée d'une ligne similaire dans le script "refractasnapshot" de la distro Refracta.

Si vous avez une minute pour « donner une go » à ce script et me faire un petit retour, je vous en serais reconnaissant. N'oubliez pas de lire les commentaires s.v.p. avant de poser des questions au sujet de ce script. Merci.

À+

#!/bin/bash
####
# /opt/local/bin/psave2adrv-0.5.sh -- Version bilingue FR-EN | Bilingual EN-FR version --
# Alternately, you can save this script in: | À la place, vous pouvez enregistrer ce script
# dans /root/my-applications/bin/psave2adrv-0.5.sh
#
########## # Usage: (EN)
# First, enter the directory where your Pup is located and open a terminal there.
# Then type: psave2adrv-0.5.sh name-and-version-of-your-Pup
#
# Example: psave2adrv-0.5.sh xenial_7.0.6
# You have to change this variable to match the Puppy's name and version.
# However, if you already are in the Puppy's folder,
# you can type: psave2adrv-0.5.sh .
#
########## # Usage : (FR)
# D'abord entrer dans le répertoire où se trouve votre Puppy et y ouvrir une console.
# Puis taper : psave2adrv.0-5.sh nom-et-version-de-votre-Puppy
#
# Exemple : psave2adrv-0.5.sh xenial_7.0.6
# Vous devez changer cette variable pour qu'elle corresponde
# au nom et à la version du Puppy.
# Cependant, si vous êtes déjà dans le répertoire du Puppy,
# vous pouvez taper : psave2adrv-0.5.sh .
####
# © musher0, 2018-03-31. GPL3 # Rév. : 2018-06-10, 11 et 15
# Q.v. https://opensource.org/licenses/GPL-3.0 for original text in English.
##########
#    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 toute
#  version ultérieure choisie par vous).
#        Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE
#  GARANTIE, ni explicite ni implicite, y compris des garanties de commercialisation ou
#  d'adaptation à un but spécifique. Pour obtenir plus    de détails, veuillez vous reporter au
#  texte de cette licence à https://opensource.org/licenses/GPL-3.0 pour le texte officiel, à
#    http://www.linux-france.org/article/these/gpl.html pour une traduction et à
#    https://fr.wikipedia.org/wiki/Licence_publique_générale_GNU pour une explication en français.
################
####
# LANGVx="$LANG";LANG=en_CA # For tests. | Pour les tests.
clear
case "${LANG:0:2}" in
    fr) echo -e "\n\e[32m\e[4m    Script pour faire un « adrv » d'un \e[7mfichier\e[27m « pupsave ».    \e[0m" ;;
    en|*) echo -e "\n\e[32m\e[4m    Script to make an 'adrv' out of a 'pupsave' \e[7mfile\e[27m.    \e[0m" ;;
esac

if [ "$1" = "" ];then
    case "${LANG:0:2}" in
          fr) echo -e "\n\t\e[33m\e[4mVeuillez redémarrer avec le nom et la version de\e[24m
    \e[4mvotre Puppy comme 1er paramètre après la commande.\e[24m
          Par ex. : psave2adrv-0.5.sh \e[4mxenial_7.0.6\e[0m\n" ;;
          en|*) echo -e "\n\t\e[33m\e[4mPlease restart with the name and version of\e[24m
    \e[4myour Pup as the first parameter after the command.\e[24m
          E.g.: psave2adrv0.5.sh \e[4mxenial_7.0.6\e[0m\n" ;;
      esac
    exit
fi
# Mises en garde : # Word of caution:
case "${LANG:0:2}" in
          fr) echo -e "\n\t\e[33mAvez-vous :
    -- émondé votre contenu (c.-à-d. enlevé les fichiers
    et répertoires vides ou superflus) ?

    Cela a-t-il été fait ? Tapez 'o' pour oui ou 'n' pour non.\e[0m" ;;
#      -- démonté tous les sfs de programmes ?

        en|*) echo -e "\n\t\e[33mHave you:
    -- pruned your content (i.e. removed empty or
    superfluous files and directories)?

    Has this been done? Type 'y' for yes or 'n' for no.\e[0m" ;;
#      -- unmounted all program sfs's?
esac
read Reponse
case $Reponse in
    n|N) case "${LANG:0:2}" in
          fr) echo -e "\n\t\e[33mVeuillez émonder avant de reprendre.\e[0m\n" ;;
          en|*) echo -e "\n\t\e[33mPlease prune what needs to be pruned
    before re-running this script.\e[0m\n" ;;
          esac
    exit ;;
esac

#### Où ?
# Découverte de la partition
awk -F"'" '$1 ~ /PDEV1/ { print $2 }' /etc/rc.d/PUPSTATE > /tmp/Part
awk -F"'" '$1 ~ /PSUBDIR/ { print $2 }' /etc/rc.d/PUPSTATE > /tmp/Rep
Place="/mnt/`cat /tmp/Part``cat /tmp/Rep`"
cd $Place # cd /mnt/home/xenialPup32-706-n412-FR # par ex.

# tabula rasa
rm -rdf adrv-destination/*
[ -d $Place/adrv-destination ] && rmdir --ignore-fail-on-non-empty $Place/adrv-destination
mkdir -p adrv-destination
mkdir -p pupsave-source

# Assez de MEV ?
Tot="`du -c /initrd/pup_rw | tail -1 | awk '{ print $1}'`"

MEV="`free -b | awk '$1 ~ /Mem/ { print $2}'`"
if [ "$MEV" -gt "${Tot}" ];then
    MEV="`echo "scale=3;$MEV/1000000000" | bc`"
    case "${LANG:0:2}" in
          fr)echo -e "\t\e[33m\e[4mVous avez assez de MEV ($MEV Go).\e[0m\n" ;;
          en|*)echo -e "\t\e[33m\e[4mYou have enough RAM ($MEV Gb).\e[0m\n" ;;
    esac
    sleep 3s
else
    case "${LANG:0:2}" in
          fr)echo -e "\t\e[33m\e[4mVous n'avez pas assez de MEV ($MEV Go). On ne peut continuer.\e[0m\n" ;;
          en|*)echo -e "\t\e[33m\e[4mYou do not have enough RAM ($MEV Gb). We cannot continue.\e[0m\n" ;;
    esac
    exit
fi
# Calcul probablement conservateur, mais empêchera les mauvaises surprises.
# Probably conservative calculation, but will prevent unpleasant surprises.

# Transférer
    cd adrv-destination
    rsync -azm /initrd/pup_rw/* . --exclude="dev" --exclude="initrd" --exclude="lost+found" --exclude=".wh.*" --exclude="tmp"
    wait

Squasher () { ReceivingArch="adrv-bis";
    mksquashfs /mnt/home/xenialPup32-706-n412-FR/adrv-destination ../$ReceivingArch.sfs -noappend -all-root -b 1048576 -comp xz -Xdict-size 100% > mksfs.rpt &
# The last part of this line < -b 104... etc. > insure pretty much maximum compression
# of the sfs archive. It takes a couple of minutes, depending on the size of the pupsave file. /
# La dernière partie de cette ligne < -b 104... etc. > assure une compression quasi maximale
# de l'archive sfs. Cela prend +/- deux minutes, selon la taille du pupsave.

# Pour voir les détails de l'opération, s.v.p. ouvrir le fichier texte mksquashfs.rpt
# dans votre éditeur ou lisez-le avec more. /
# To see the details of the operation, please open the mksquashfs.rpt text file
# in your editor or read it with more.

    while pgrep mksquashfs &> /dev/null;do
          echo -en "\e[34m.";sleep 0.5
# Source de cette barre : réponse no 0 par « purushothaman poovai » à https://
# stackoverflow.com/questions/238073/how-to-add-a-progress-bar-to-a-shell-script#238094
    done
    echo -e "\e[0m.\n"; }

Squasher

if [ $? = 0 ];then
    case ${LANG:0:2} in fr)echo -e "\t\e[33mRéussi !\e[0m\n" ;;
          en|*)echo -e "\t\e[33mSuccess!\e[0m\n" ;;
    esac
else
    case ${LANG:0:2} in fr)echo -e "\t\e[33mQuelque chose ne tourne pas rond.
    Veuillez recommencer.\e[0m\n" ;;
          en|*)echo -e "\t\e[33mSomething went wrong.
    Please retry.\e[0m\n" ;;
    esac
fi

case ${LANG:0:2} in fr)echo -e "\t\e[33mRappelez-vous de créer un nouveau, petit, fichier
    'pupsave' avant de relancer votre Puppy, par exemple
    avec le script < psave-96M-2fs-a > ci-joint.\e[0m\n" ;;
          en|*)echo -e "\t\e[33mPlease remember to create a new, small, pupsave
    file before before rebooting your Puppy, e.g. with
    included script < psave-96M-2fs-a >.\e[0m\n" ;;
    esac

# LANG="$LANGVx" # For tests. | Pour les tests.

exit
~~~~~~~~~~~~~~ Notes ~~~~~~~~~~~~~~
# else
# Autres conditions : # si l'utilisateur a un répertoire pupsave, on quitte ?
# Augras a réussi à le faire, mais il serait bon de retester.
#
#    case ${LANG:0:2} in
#          fr)echo -e "\t\e[33mCe script ne marchera pas parce que vous avez
#    un répertoire plutôt qu'un fichier de sauvegarde.

#    Veuillez faire l'opération manuellement.\e[0m\n" ;;
#          en|*)echo -e "\t\e[33mThis script will not work because you have
#    a pupsave folder rather than a pupsave file.

#    Please do this operation manually.\e[0m\n" ;;
#    esac
#    exit
# fi

# Autres étapes
# S'il y a déjà un [a|f|y]drv__machin : combiner ? # Détecter et offrir l'option au début ?
~~~~~~~~~~~~~~ Fin des notes ~~~~~~~~~~~~~~
musher0
~~~~~~~~~
C'est parce qu'on n'ose pas que c'est difficile.
(D'après Sénèque)

Re : Un script pour eviter de remasteriser

Répondre #18
@jplt : Tu es encore là ?  cava   On n'a pas eu de tes nouvelles depuis un petit moment... :(

Bonne nouvelle ! J'ai eu la permission de peebee de combiner les adrv, fdrv et ydrv de son BionicPup pour faire de la place :
http://www.murga-linux.com/puppy/viewtopic.php?p=996106&sort=lastpost#996106

Je pense adapter mon combineur de sfs ordinaires aux ?drv.  A vue de nez, je pense combiner les trois dans le fdrv,  ce qui laisserait deux « positions » libres (adrv et ydrv). Note -- Il vaut mieux ne pas toucher au zdrv. 

On pourra ensuite utiliser la version définitive du présent script (quand elle sera prête) pour transformer le pupsave en adrv sans obstacle.

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

Re : Un script pour eviter de remasteriser

Répondre #19
Bon matin à toutes et à tous.

Pour récapituler, à l'intention de jplt ou de tout usager qui voudrait transformer un gros fichier pupsave en adrv :

-- d'abord créer un petit pupsave (voir fil adjacent) sur le Puppy en question;

-- si le dit Puppy a déjà la position « adrv » occupée, on le fait passer à un fdrv (utiliser le script sur un fil adjacent à celui-ci), mais d'un autre Puppy;

-- quand cela est fait, quand la place est libre, en d'autres mots, on revient dans le Puppy en question et on transforme son gros pupsave en adrv à l'aide du script ci-dessus. On devrait gagner de 60 % à 65 % d'espace par rapport à la taille du gros pupsave original qu'on avait;

-- Quand on redémarre,  on choisit le petit pupsave (nommé "arf" par défaut). On ne doit pas choisir son ancien pupsave;

-- On fait une session complète dans ce nouvel environnement en guise de test. Si T.V.B., au redémarrage suivant (au 2e redémarrage, donc), on pourra effacer, ou ranger ailleurs, ou zipper, son ancien gros pupsave.

J'espère avoir fait le tour de la question.  Si vous trouvez certains points encore obscurs, n'hésitez pas à demander des éclaircissements ci-dessous.

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

Re : Un script pour eviter de remasteriser

Répondre #20
Bonjour,
Je ne sais plus ce que tu avais solutionné ! Ça ne fonctionnait pas, tu as modifié un peu le script et ça a fonctionné !
Par contre je me demande maintenant à quel script fait référence ce fil ? Aucun script n'est joint !
Est-ce qu'il s'agit du script ci-joint ? Si oui je l'ajouterai au poste initial... et je déplacerai mes messages du fil 
Combiner des ?drv*.sfs qui font référence à ce script joint ici et non à ce nouveau script.
Philippe

Re : Un script pour eviter de remasteriser

Répondre #21
Salut Philippe !

Ben... c'est quoi qu'y a dans mon 3e post ci-dessus ?!  :)
Mais je vais revenir enligner mes scripts. Comme ça ce sera plus clair !

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

 

Re : Un script pour eviter de remasteriser

Répondre #22
Bonjour Christian (musher0),
Effectivement dans le post au-dessus que tu indiques il y a un script... mais c'est un nouveau ou bien celui auquel fait référence jplt qui a initié ce fil ?
Je n'arrive pas à comprendre à quel script fait référence jplt !
Philippe

 
Simple Audio Video Embedder