Cataloguer le contenu de ses partitions et fouiller dedans

Post Reply
Message
Author
musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

Cataloguer le contenu de ses partitions et fouiller dedans

#1 Post by musher0 »

Bonjour à toutes et à tous.

J'avais produit il y a quelques années un script utilisant slocate pour cataloguer
ses fichiers et les retrouver facilement.

Après mûrissement de la question, je crois que ceci est mieux -- et plus simple.
-- Le bottin est centralisé dans /mnt/sda1/arbos
---- donc il ne prend pas de place dans votre pupsave.

-- pas besoin d'utilitaire spécialisé
---- tout se fait avec les moyens du bord :
---- awk, tree, ligne-de-points.sh, zip pour la constitution
---- le script Recherche.sh et zgrep pour la consultation.

-- c'est pas un GUI, mais presque
---- les séquences de couleuir ANSI sont abondamment mises à contribution.

-- zgrep, sur lequel je suis tombé par hasard, mais qui réside dans tous les
-- Puppys depuis toujours, s'avère un outil fabuleux :
---- les bottins sont zippés et pourtant, on trouve ce que l'on cherche en
---- un rien de temps.

-- choix de couleur, vert ou bleu, pour la barre de progrès. Se choisit dans le
-- « wrapper ». Par défaut, ce sera en bleu.

-- utilise l'utilitaire nice « en faveur de la machine » comme dit le manuel. Donc
-- prévoyez un moment de la journée où vous avez autre chose à faire que de
-- l'ordinateur : le café, tiens, ou bien aller chercher du pain et du lait chez le
-- dépanneur du voisinage. Au retour, vous aurez des listes à jour !

-- je vous recommande de mettre à jour tous les jours si vous êtes un utilisateur
-- moyen.

-- J'ai configuré tree pour qu'il mette un maximum d'infos dans les listes, semblale
-- à ce que fournit < ls -Algo >. Donc tout est là : permissions, taille, en plus du
-- nom et du chemin, bien évidemment.

-- Ce qui fait de grosses listes, d'où la nécessité de les zipper. La liste de ma
-- partition sur sdh3 faisait 78 Mb, voyez...

-- Et c'est ici qu'entre en scène un brillant p'tit vieux d'utilitaire, l'air négligé ;),
-- la barbe pas faite, mais qui sait vous trouver n'importe quoi dans ce bottin en
-- une seconde ou deux.
-- J'ai nommé « zgrep ». Qui s'utilise comme le grep ordinaire, sauf pour des
-- trucs pointus comme fouiller dans plusieurs répertoires à la suite. etc.

Je joins des captures d'écran ici pour vous mettre l'eau à la bouche. :)

Les scripts en clair suivent. S.v.p. lire les commentaires qu'ils contiennent ?
Ça vous évitera bien des frustrations, croyez-moi !

Dans l'espoir que ces scripts vous seront utiles.
Attachments
arbos-0.1.pet
(6.06 KiB) Downloaded 190 times
arbos.sh-vert.jpg
(184.72 KiB) Downloaded 156 times
arbos.sh-tamisé.jpg
(186.55 KiB) Downloaded 148 times
arbos.sh-bleu.jpg
(174.3 KiB) Downloaded 151 times
Last edited by musher0 on Fri 22 Mar 2019, 05:49, edited 4 times in total.
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#2 Post by musher0 »

Rebonjour.

Voici les scripts.

~~~~~~~~~~~~~~~~

Code: Select all

#!/bin/bash
# /mnt/sda1/arbos/arbos.sh
#
# Objectif -- Créer une liste zippée de fichiers pour
# chacune de vos partitions, pour consultation rapide.
#
# Requiert awk, tree, ligne-de-points.sh, et zgrep pour la consultation.
#
# Particularité -- Tout se déroule dans le répertoire /mnt/sda1/arbos
#
# (c) musher0, 15-19 mars 2019. GPL3.
####
CLR="$1"
[ "$CLR" = "" ] && CLR="123"
cd /mnt/sda1
mkdir -p arbos # En-cas.
ReP=/mnt/sda1/arbos

cd $ReP

LeFaire () {
echo -e "\e[0m\n$line\e[4m\e[38;5;90m\e[48;5;${CLR}m"
# 90 : vin # 123 : bleu ciel # 118 : vert pomme
$ReP/ligne-de-points.sh & # ligne de progrès
nice -n -20 tree -fishpu -L 10 /mnt/$line > /mnt/sda1/arbos/$line.arbo
kill -s 15 `ps | awk '$NF ~ /points\.sh/ && $4 !~ /geany/ { print $1 }'` 2>/dev/null
# echo -ne "e\[0m" # Évite le barbouillage. # < ligne-de-points.sh > le fait.
}

mount | awk '$1 ~ /sd/ && $3 !~ /save/ { print $1,$3,$5,$6 }' | awk -F"\/" '{ print $3}' > $ReP/liste-sd
echo -e "\t\e[1;4mCataloguer prend du temps. Merci de votre patience.\e[0m
\t Je crée une liste de fichiers pour la partition...
\e[1A"
line=""
while read line;do
	cd /mnt/$line
     LeFaire
done < $ReP/liste-sd

cd $ReP
>Puppy.arbo # Pour cataloguer le système Puppy lui-même
for rep in bin boot etc home lib opt root sbin usr var;do
     nice -n 10 tree -fishpu -L 10 /$rep >> Puppy.arbo
     echo "." >> Puppy.arbo
done

# Datation
MAJ="`date '+%Y-%m-%e_%Hh%m'`";echo "Mis à jour le $MAJ." > $ReP/MAJ-$MAJ
echo -e "\e[0m\n\n\tLe zippage des listes prend quelques
\tsecondes. Merci de votre patience."
line=""
ls -1 *.arbo | while read line;do
	zip -9muq $line.zip $line
done
echo -e "\n\t\t\e[4mTerminé !\e[24m
\t   Vous pouvez maintenant consulter
\t       les listes à l'aide de zgrep.\e[0m\n'"
read
# Taper sur la touche « Entrée » pour clore la fenêtre.
~~~~~~~~~~~~~~~~

Code: Select all

#!/bin/bash
# wrapper/arbos.sh # Lanceur pour arbos.sh
#
# Recommandation - Lancer quotidiennement afin de tenir
# ------------------------- vos listes à jour.
#
# Note -- Avec une console de 49 lignes, comme ci-dessous,
# --------- accommodera de 15 à 17 partitions. La ligne de points
# --------- fait « perjuter » la couleur quand elle atteint le bas de
# --------- la console. Remarquez, le script continue de bien faire
# --------- son boulot, mais l'affichage est moins joli.
#
# (c) Christian L'Écuyer, 19 mars 2019. GPL3.

####
FadE="fade 70 -fadecolor "#94A495""
PntR="uc -hc blue -cr gold -pr green -pr2 yellow +pb"
urxvt -$FadE -$PntR -tr -g 70x49+222+32 -b 30 -e /mnt/sda1/arbos/arbos.sh 123
# 123 : bleu ciel (par défaut) # 118 : vert pomme
# Colore le fond de la barre de progrès.
~~~~~~~~~~~~~~~~

Code: Select all

#!/bin/ash
# ligne-de-points.sh
#
# Objectif -- Imprimer dans le terminal une ligne
# ------------- de points pendant un long processus.
#
# Usage --  Incorporer sur une ligne convenable du script
# ------------ principal, en arrière-plan, JUSTE AVANT
# ------------ la commande lançant le long processus.
#
# Exemple -- < ligne-de-points.sh & # Noter l'importante éperluette !
# --------------- < cp -f Gargantuesque_Fichier Répertoire_de_Destination
#
# Inspiré des idées exposées à
# https://stackoverflow.com/questions/238073/ \
# how-to-add-a-progress-bar-to-a-shell-script.
# Relevé le 14 mars 2019 en soirée.
#
# (c) musher0, 15 mars 2019. GPL3.
####
for j in `seq 10`;do # Minutes
     for i in `seq 30`;do # Secondes
# « `seq 30` » ici et « sleep 2s » ci-dessous = 30 fois par minute,
# c.-à-d. un point toutes les deux secondes.
#
# Si on veut voir apparaître un point à toutes les secondes,
# mettre « `seq 60` » ici, et « sleep 1s » à la ligne ci-dessous.
#
          P="."
# On peut mettre autre chose qu'un point, le caractère « ~ », par ex.
          echo -ne "$P"
# Le paramètre < -n > signifie : « Imprime la chaîne suivante sur la même ligne. »
#
# Le paramètre < -e > signifie : « Accepte les séquences ANSI ». Car
# on peut colorer cette ligne à partir du script principal en spécifiant
# des séquences de couleur ANSI.
#
# Par ex., envoyer la commande < echo - "\e[33m" > avant de passer la
# main au présent script fera qu'il imprimera des points de couleur or. En soi,
# le présent script adopte les couleurs par défaut de la console qui le lance.
#
          sleep 2s # 1s
     done
done
echo -e "\e[0m" # En-cas pour la fin, afin d'éviter du barbouillage dans
# la console. Annule les séquences de couleur ANSI si le script principal
# en a utilisé. En d'autres mots, cette commande restaure les couleurs
# de départ de la console.
~~~~~~~~~~~~~~~~

Code: Select all

#!/bin/sh
# Recherche.sh 
#
# Objectif -- Chercher un nom de fichier dans
# ----------- les listes zippées « *.arbo »
# ----------- crées par le script < arbos.sh >.
# 
# Requiert -- Zgrep, et au moins une liste de fichiers
# ----------- zippée créée par le script < arbos.sh >.
#
# Usage -- Recherche.sh nom_de_fichier
#
# Exemple -- Recherche.sh [Dd]anser
#
# Note 1 -- S'utilise en console.
# Note 2 -- En gros, zgrep accepte la plupart des paramètres de grep,
# --------- y compris les « regex » (expressions régulières). Faire
# --------- une recherche simple ne devrait donc pas causer d'ennui. 
# --------- S.v.p. taper < zgrep --help > pour connaître ses limites.
#
# (c) Christian L'Écuyer, 19 mars 2019. GPL3.
# (Alias « musher0 » dans le forum PuppyLinux)
####
Q="$1" # Le terme ou nom de fichier recherché.
for j in a b c d e f g h;do # Recherche sur les disques
	for i in 1 2 3 4 5 6 7 8; # et sur leurs partitions.
		do zgrep $Q sd$j$i.arbo.zip 2>/dev/null | more
	done 
done
~~~~~~~~~~~~~~~~

À la bonne vôtre !
Last edited by musher0 on Thu 21 Mar 2019, 22:30, edited 1 time in total.
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#3 Post by musher0 »

Bonjour les camarades.

S.v.p. trouver ci-joint la version 0.2 --
Changements --
-- Surtout cosmétiques (voir capture d'écran ci-jointe).
---- On ne se contente plus d'afficher une barre de progrès, on dit aussi quand
---- telle partie est cpmplétée;

-- mais aussi un code plus logique, du moins je crois;

-- ajouté une coupure claire, un à-la-ligne, à chaque minute dans le script
---- ligne-de-points.sh.

-- les séquences ANSI sont davantage mises à profit. Soit dit en passant à
---- quiconque s'y intéresse, elles ne sont pas faciles à maîtriser, mais elles
---- sont d'une grande richesse pour gérer l'écran de la console;

-- ajouté des précautions dans le lanceur et ailleurs.

Pour prévenir les points d'interrogation au-dessus des caboches --
Si vous vous demandez pourquoi la ligne de progrès ne reflète pas la proportion de
la taille de telle ou telle partition, c'est que ce script ne travaille pas avec des tailles
de fichier, mais avec des noms de fichier.

La partition Une-Telle, pour laquelle la barre de progrès semble bien courte, renferme
probablement peu de fichiers, mais des gros fichiers. Inversement, la partition Chose,
qui paraît pourtant minuscule à regarder son occupation sur disque, aura une longue
ligne de progrès si elle contient la série complète des mille et un icônes de BeOS,
d'Haiku, de GulfStream et de Puppy_Standard.

À un autre niveau, j'ai décidé de produire d'abord des versions unilingues, puis
de les traduire s'il y a une demande, ou si je crois que cela apporte quelque chose
à PuppyLinux : j'aurai moins de maux de tête !

Enfin, je suis ouvert à toute amélioration de ces scripts. Merci d'avance.

À la bonne vôtre !
Attachments
arbos-0.2.pet
(6.61 KiB) Downloaded 201 times
arbos-02.sh.jpg
(212.59 KiB) Downloaded 133 times
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#4 Post by musher0 »

Bonsoir.

Voici un script de recherche amélioré.

S.v.p. remplacer celui dans l'archive par celui-ci
en attendant la prochaine version d'arbos.

Merci.
~~~~~~~~~~~~~~~

Code: Select all

#!/bin/bash
# Recherche.sh # V. 02
# et lien symbolique < Recherche >.
# Script complémentaire au script < arbos.sh >.
#
# Objectif -- Chercher un nom de fichier ou de chemin
# ------------- dans les listes zippées « *.arbo », créées
# ------------- par le script < arbos.sh >.
#
# Requiert -- which, grep, zgrep, et au moins une liste de fichiers
# -------------- zippée créée par le script < arbos.sh >.
#
# Usage -- Recherche.sh nom_de_fichier
# Par ex. : Recherche chien
# ----------- affichera en console tous les chemins ou noms de
# ----------- fichier comportant la mention « chien ».
# Par ex. : Recherche.sh [Dd]anser
# ----------- affichera en console tous les chemins ou noms de
# ----------- fichier comportant la mention « Danser » ou « danser ».
#
# S.v.p. lire les Notes ci-dessous.
# (c) Christian L'Écuyer, 19 et 21 mars 2019. GPL3.
# (Alias « musher0 » dans le forum PuppyLinux)
####
GREP="`which grep`" # Voir le fichier man de zgrep.
# Pour se servir du grep dans le système.

Q="$1" # Le nom de fichier ou une partie du nom de fichier recherché,
# --------- ou encore son chemin ou une partie de son chemin.

if [ "$Q" = "" ];then
     echo -e "\n\t\e[1;33mDésolé, l'ami(e). Il faut avoir \e[4mun but\e[24m dans la vie ! ;)\e[0m\n"

elif [ "$Q" = "--help" -o "$Q" = "--aide" ];then
     echo -e "\n\t\e[1;33mAide -- Taper :
     \e[7m Recherche terme \e[27m\e[21m

          pour \e[4mafficher tout de suite\e[24m la recherche à l'écran;


     \e[1;7m Recherche terme > nom-de-fichier.txt \e[27m\e[21m

          pour obtenir un relevé de votre recherche \e[4mà lire après\e[24m.
\e[0m"

elif [ "`echo $Q | grep -E '[[:alnum:]]'`" = "" ];then
     echo -e "\n\t\e[1;33mDésolé. Le terme recherché contient des
\t     caractères non alpha-numériques.
\e[0m"

# elif [ "`echo $Q | grep -E '\!|\"|\$|#\%|\?|\&|\*|\(|)|\-'`" ];then
     echo -e "\n\t\e[1;33mDésolé. Le terme recherché contient des
\t     caractères réservés au système.
\e[0m"

else
     echo -e "\n\t\e[1;33mTerme acceptable. Je pars à la chasse !\e[0m\n"
     for j in a b c d e f g h;do # Recherche sur les disques
          for i in 1 2 3 4 5 6 7 8; # et sur leurs partitions.
               do zgrep $Q sd$j$i.arbo.zip 2>/dev/null | more
          done
     done
fi
GREP="" # On nettoie la place.

[ "$?" -gt "0" ] && echo -e "\n\t\e[1;33mIl y a eu erreur. Veuillez reprendre.\e[0m]\n"
exit

##########################
Notes
1) -- S''utilise en console.

2) -- En gros, zgrep accepte la plupart des paramètres de grep,
------ y compris les « regex » (expressions régulières). Faire
------ une recherche simple ne devrait donc pas causer d''ennui.
------ S.v.p. taper < zgrep --help > pour connaître ses limites.

3) -- Si on a trouvé ce que l''on cherche, on peut interrompre
------ zgrep en tapant « Cntrl-Z » -- et non pas « Cntrl-C »,
------ comme à l''accoutumée.

4) -- Le terme entré est vérifié jusqu''à un certain point seulement.
------ Il se peut que le script plante si vous lui founissez par mégarde
------ des signes de ponctuation ou des caractères réservés à bash.
------ Si cela arrive,  tapez « Cntrl-Z », relancez le script et retapez
------ le terme que vous recherchez, sans l''erreur.

##########################
Attachments
Recherche.zip
Le code ci-dessus, zippé.
(1.79 KiB) Downloaded 201 times
Recherche_sh-Messages_d-erreur.jpg
Entre autres éléments nouveaux dans cette version, des garde-fous.
(99.08 KiB) Downloaded 128 times
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

Post Reply