IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Script bash : vérifier l'espace suffisant du HD


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2015
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Script bash : vérifier l'espace suffisant du HD
    Bonjour à tous,
    Je suis une débutante su shell et j'aurais besoin d'une petite aide,
    j'ai crée une fonction qui archive et compresse un dossier qu'on lui entre en paramètre et j'aurais aimé créer un script qui vérifie auparavant si l'espace de stockage est suffisant si c'est le cas il effectue la fonction d'archive si ça ne l'est pas il indique: libérez de l'espace?
    Je vous remercie par avance d'une éventuelle réponse...

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 725
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 725
    Points : 15 125
    Points
    15 125
    Par défaut
    Citation Envoyé par mini_moy Voir le message
    [...] j'aurais aimé créer un script qui vérifie auparavant si l'espace de stockage est suffisant si c'est le cas il effectue la fonction d'archive si ça ne l'est pas il indique: libérez de l'espace?
    Je vous remercie par avance d'une éventuelle réponse...
    Hé bien vas-y, fais-toi plaisir, crée ton script, personne ne t'en empêche...

    Elle est où la question, il est où le problème ?
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  3. #3
    Invité
    Invité(e)
    Par défaut
    Pour connaitre l'état des espaces de stockage linux te propose deux commandes : du et df. Je te laisse lire le manuel pour en savoir plus.
    En ce qui concerne l'espace disponible sur le disque courant tu peux utiliser df -k ./
    Il te suffit ensuite d'extraire la donnée de la colonne "Available" (Disponible) et de la comparée à la taille nécessaire.


    Citation Envoyé par Jipété Voir le message
    Hé bien vas-y, fais-toi plaisir, crée ton script, personne ne t'en empêche...

    Elle est où la question, il est où le problème ?
    Force est d'avouer que la question est mal/pas posée, cependant elle reste compréhensible et la réponse est un peu rude

  4. #4
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 276
    Points : 12 721
    Points
    12 721
    Par défaut
    Bonjour,

    Pour vérifier l'espace de stockage, tu as la commande df /repertoire_ou_tu_veux_stocker qui te donnera la taille du système de fichier ou se trouve le répertoire, ainsi que l'espace utilisé et l'espace libre.
    Ensuite, il ne te reste plus qu'à récupérer le champs qui t’intéresse et le comparer la taille de l'archive compressée que tu veux justement créer: ici, on devient un peu absurde, puisque pour avoir la taille, tu dois faire l'archive...

    Quoique Jipété doit avoir une idée, non ?
    Cordialement.

  5. #5
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour,

    ici, on devient un peu absurde, puisque pour avoir la taille, tu dois faire l'archive...
    La compression absolue n'existant pas, la taille maximale présumée d'une archive est la taille des fichiers non compressés. Donc 1 pour 1. Le script ne peut pas connaître la "compressibilité" des fichiers d'extensions exotiques.

    la réponse est un peu rude
    Le but de ce genre de message étant de faire bosser les autres à ta place, je ne blâmerais pas Jipété.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  6. #6
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 276
    Points : 12 721
    Points
    12 721
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Bonjour,
    La compression absolue n'existant pas, la taille maximale présumée d'une archive est la taille des fichiers non compressés. Donc 1 pour 1. Le script ne peut pas connaître la "compressibilité" des fichiers d'extensions exotiques.
    Je ne suis pas d'accord sur la taille maximale présumée, si le fichier initiale est vide, le fichier compressé lui ne le sera pas et une archive en générale embarque toute la partie sommaire (nom du fichier,taille,...).

    Après, si on exclue la partie temporelle de la compression, rien n'empêche d'archiver et de compresser une première fois vers stdout (ou /dev/null) en mode verbose ou autres options qui permet de récupérer les informations utiles.
    Cordialement.

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2015
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Hé bien vas-y, fais-toi plaisir, crée ton script, personne ne t'en empêche...

    Elle est où la question, il est où le problème ?
    re-bonjour, désolée il est vrai que j'avais mal exprimé ma question, en fait je suis sous sun et non pas linux du coup j'ai tenté la commande suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    FREE_SPACE=$((1024 * $(df -P . | awk 'BEGIN{RS="";FS=" "}{print $11}'))) mais cela ne fonctionne pas j'ai le message suivant qui s'affiche:
    df: unknown option: P
    Usage: df [-F FSType] [-abegklntVv] [-o FSType-specific_options] [directory | block_device | resource]
    bash: 1024 * : syntax error: operand expected (error token is " ")
    du coup si une âme charitable pouvait m'apporter une aide dans la rédaction de mon script par quelques suggestions je lui en serais très reconnaissante merci d'avance

  8. #8
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 725
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 725
    Points : 15 125
    Points
    15 125
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Quoique Jipété doit avoir une idée, non ?
    Non, aucune ; j'avais juste bien senti venir ça :
    Citation Envoyé par Flodelarab Voir le message
    Le but de ce genre de message étant de faire bosser les autres à ta place, je ne blâmerais pas Jipété.
    D'ailleurs, la preuve :
    Citation Envoyé par mini_moy Voir le message
    du coup si une âme charitable pouvait m'apporter une aide dans la rédaction de mon script par quelques suggestions je lui en serais très reconnaissante merci d'avance


    Citation Envoyé par mini_moy Voir le message
    en fait je suis sous sun et non pas linux du coup j'ai tenté la commande suivante: FREE_SPACE=$((1024 * $(df -P . | awk 'BEGIN{RS="";FS=" "}{print $11}'))) mais cela ne fonctionne pas j'ai le message suivant qui s'affiche:
    df: unknown option: P
    Hé bien oui, tu as un message d'erreur, elle sort d'où cette option "-P" ? Personne n'en a parlé dans les précédents messages, tu improvises au petit bonheur la chance ?
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2015
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Non, aucune ; j'avais juste bien senti venir ça :

    D'ailleurs, la preuve :




    Hé bien oui, tu as un message d'erreur, elle sort d'où cette option "-P" ? Personne n'en a parlé dans les précédents messages, tu improvises au petit bonheur la chance ?
    Je ne cherche pas à ce qu'on fasse mon travail j'ai demandé des suggestions quant à des astuces que des personnes connaissant bash depuis plus longtemps que moi pouvaient avoir (puisque je n'ai découvert ce langage que depuis une semaine), je pensais que c'était le but de ce forum, cette ligne de mon script n'est qu'une partie infime et je me suis débrouillée toute seule jusqu'ici je ne demande à personne de le faire à ma place, j'avoue que ma question était mal posée peut-être car il était tard et que j'ai bloquée toute la journée sur mon problème mais je ne pense pas qu'il était justifié de jeter l'opprobre sur moi comme tu l'as fais.
    Bref, concernant le paramètre p je l'ai trouvée dans un livre qu'un ami m'a prêté où il était indiqué qu'associée à la commande df elle permettait de stocker la valeur dans une variable qui pourra être rappelée.

  10. #10
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    des suggestions quant à des astuces
    L'astuce, disedorgue te l'a donnée:
    rien n'empêche d'archiver et de compresser une première fois vers stdout (ou /dev/null) en mode verbose ou autres options qui permet de récupérer les informations utiles.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  11. #11
    Inactif  
    Homme Profil pro
    Analyste-Programmeur / Intégrateur ERP
    Inscrit en
    Mai 2013
    Messages
    2 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-Programmeur / Intégrateur ERP
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 511
    Points : 10 335
    Points
    10 335
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    L'astuce, disedorgue te l'a donnée:
    De ce que j'ai compris le problème de mini-moy n'est pas la taille de l'archive, mais de récupérer l'espace libre du répertoire de destination dans une variable, afin de pouvoir la comparer à la taille de son archive.

    Donc effectivement, comme l'a dit Disedorgue, il faut utiliser la commande df, mais celle-ci retourne plusieurs informations, le problème de mini-moy étant donc de seulement récupérer le champ qui l'intéresse dans une variable.


    Je n'y connais pas grand chose mais peut-être se pencher du coté de tout ce qui est awk / sed ou cut ?

    En gros un peu adapté ce genre de problème (sauf que cette personne voulait récupérer le pourcentage utilisé et non pas la valeur exacte, il faut donc adapter la colonne à extraire) :

    Code vu sur un autre forum : Sélectionner tout - Visualiser dans une fenêtre à part
    df /home | awk '{ print $5 }' | tail -n 1

  12. #12
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    le problème (...) n'est pas la taille de l'archive, (...) afin de pouvoir la comparer à la taille de son archive.
    Phrase auto-contradictoire. Bravo.

    Je n'y connais pas grand chose mais peut-être se pencher du coté de tout ce qui est awk / sed ou cut ?
    sed et awk ne traitent que les fichiers textes alors qu'une archive peut être de n'importe quel type.
    Et cut ne fait que couper. Tu pourras couper autant que tu veux ton fichier, il faudra toujours au moins autant de place pour les stocker.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  13. #13
    Inactif  
    Homme Profil pro
    Analyste-Programmeur / Intégrateur ERP
    Inscrit en
    Mai 2013
    Messages
    2 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-Programmeur / Intégrateur ERP
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 511
    Points : 10 335
    Points
    10 335
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Phrase auto-contradictoire. Bravo.
    Ou pas, faudrait voir à apprendre à lire.

    Elle connait la taille de l'archive.
    Elle veut récupérer la taille de l'espace libre POUR LA COMPARER à la taille de son archive qu'elle connait déjà.

    Il n'y a rien de contradictoire...

    Ah aucun moment elle n'a dit qu'elle cherchait à connaître la taille de l'archive.


    Citation Envoyé par Flodelarab Voir le message
    sed et awk ne traitent que les fichiers textes alors qu'une archive peut être de n'importe quel type.
    Et cut ne fait que couper. Tu pourras couper autant que tu veux ton fichier, il faudra toujours au moins autant de place pour les stocker.
    Il ne s'agit pas de découper l'archive, mais le résultat de la commande df pour ne récupérer que l'information qui l'intéresse, as-tu au moins été voir le lien que j'ai mis avant de m'agresser ?


    Edit: Désolé mini-moy, mais je viens de me prendre un avertissement pour avoir essayé de t'aiguiller via une solution venant d'un autre forum, du coup, je te laisse entre les mains des gentils messieurs agressifs qui ont du mal à lire, et je m'en retourne aux sections où l'on est un peu plus "libre"... (c'est ironique à dire dans la section Linux )

  14. #14
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 276
    Points : 12 721
    Points
    12 721
    Par défaut
    Voici la ligne qui t’intéresse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FREE_SPACE=$((1024 * $(df -k . | awk 'NR == 2 {print $4}')))
    Pour information, l'option -P existe bien mais sous gnu et qui n'est là que pour être compatible posix.
    Cordialement.

  15. #15
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FREE_SPACE=$(df -B 1 . | awk 'NR == 2 {print $4}')
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  16. #16
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 276
    Points : 12 721
    Points
    12 721
    Par défaut
    Je ne connais pas l'option -B, elle sert à quoi (elle ne fait pas parti des option sous solaris) ?

    Sinon, selon la doc oracle, l'option -P existe sous solaris (certainement récent) qui est équivalent à -k mais se base sur un BLOCKSIZE=512 au lieu de 1024.
    Cordialement.

  17. #17
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    -B définit la taille du bloc. Par défaut, l'unité est le kilo-octet; tout comme avec le -k. Donc -B 1 demande le nombre d'octets, directement.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  18. #18
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par mini_moy Voir le message
    re-bonjour, désolée il est vrai que j'avais mal exprimé ma question, en fait je suis sous sun et non pas linux du coup j'ai tenté la commande suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FREE_SPACE=$((1024 * $(df -P . | awk 'BEGIN{RS="";FS=" "}{print $11}')))
    mais cela ne fonctionne pas j'ai le message suivant qui s'affiche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     df: unknown option: P
    Usage: df [-F FSType] [-abegklntVv] [-o FSType-specific_options] [directory | block_device | resource]
    du coup si une âme charitable pouvait m'apporter une aide dans la rédaction de mon script par quelques suggestions je lui en serais très reconnaissante merci d'avance
    Le mieux, dans ton cas, serait que tu vérifies, DANS TON ENVIRONNEMENT, le fonctionnement de "df" (avec man df) pour voir précisément à quoi correspondent les options.

    Sinon, il me semble que l'option "-k" est assez standard (posix?).

    Donc je t'invite à vérifier, dans ton environnement, les réponses de tutzeroone et disedorgue:
    Citation Envoyé par tutzeroone Voir le message
    En ce qui concerne l'espace disponible sur le disque courant tu peux utiliser df -k ./
    Il te suffit ensuite d'extraire la donnée de la colonne "Available" (Disponible) et de la comparée à la taille nécessaire.
    Citation Envoyé par disedorgue Voir le message
    Voici la ligne qui t’intéresse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FREE_SPACE=$((1024 * $(df -k . | awk 'NR == 2 {print $4}')))

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/06/2010, 15h46
  2. cat espace et script bash
    Par krikrizzz dans le forum Shell et commandes GNU
    Réponses: 15
    Dernier message: 20/08/2009, 16h30
  3. Requête POST dans un script bash
    Par desperado dans le forum Linux
    Réponses: 4
    Dernier message: 11/12/2007, 22h38
  4. Problème script Bash
    Par Sphost dans le forum Linux
    Réponses: 10
    Dernier message: 26/07/2005, 09h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo