Bash : soucis de formatage de date + question
Résolu/Fermé
A voir également:
- Bash : soucis de formatage de date + question
- Bash permission non accordée - Forum Shell
- Bash écrire dans un fichier - Forum Shell
- Bingo bash free - Télécharger - Divers Jeux
- Bash path - Astuces et Solutions
- Bash: adduser : commande introuvable ✓ - Forum Debian
3 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
3 sept. 2010 à 09:25
3 sept. 2010 à 09:25
Salut,
La syntaxe pour exécuter une commande est :
Donc :
Existe-t-il un moyen de récupérer cette information si par exemple on se place dans le support amovible via un cd ?
Oui :
Ou :
;-))
La syntaxe pour exécuter une commande est :
$(commande)
Donc :
fileDate=$(date '+%d.%m.%Y_%H:%M:%S')
Existe-t-il un moyen de récupérer cette information si par exemple on se place dans le support amovible via un cd ?
Oui :
cd /support_amovible du -sh .
Ou :
du -sh /support_amovible
;-))
Mwarf, oublier le $, j'suis vraiment mal réveillé. Malheureusement cela ne fonctionne toujours pas, j'ai toujours un fichier "Backup-.tar.gz", voici le code entier de cela :
Sinon pour du -sh, il montre l'espace disque occupé, moi il me faudrait l'espace disque libre =)
fileDate=$('date '+%d.%m.%Y_%H:%M:%S'') filename="Backup-$fileDate.tar" eleve=/media/eleve/ tar -vcf $filename $eleve | zenity --progress --pulsate
Sinon pour du -sh, il montre l'espace disque occupé, moi il me faudrait l'espace disque libre =)
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
3 sept. 2010 à 09:49
3 sept. 2010 à 09:49
Mwarf, oublier le $, j'suis vraiment mal réveillé.
Enlève les quotes simples aussi qui ne servent à rien ;-((
Sinon pour du -sh, il montre l'espace disque occupé, moi il me faudrait l'espace disque libre =)
Alors le "df" sera plus approprié ;-)
Enlève les quotes simples aussi qui ne servent à rien ;-((
fileDate=$(date '+%d.%m.%Y_%H:%M:%S')
Sinon pour du -sh, il montre l'espace disque occupé, moi il me faudrait l'espace disque libre =)
Alors le "df" sera plus approprié ;-)
Je les ai enlevées mais aucun changement =/
Sinon pour df, il faut savoir le nom de la partition pour pouvoir sortir l'espace libre, or je ne sais pas comment obtenir le nom de cette partition. (c'est ce que j'ai essayé d'expliquer dans mon premier message)
Je suis désolé, je fais des erreurs de base, mais j'ai commencé à apprendre le bash hier.
Sinon pour df, il faut savoir le nom de la partition pour pouvoir sortir l'espace libre, or je ne sais pas comment obtenir le nom de cette partition. (c'est ce que j'ai essayé d'expliquer dans mon premier message)
Je suis désolé, je fais des erreurs de base, mais j'ai commencé à apprendre le bash hier.
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
Modifié par jipicy le 3/09/2010 à 10:41
Modifié par jipicy le 3/09/2010 à 10:41
$ fileDate=$('date '+%d.%m.%Y_%H:%M:%S'') # mauvaise syntaxe -bash: date +%d.%m.%Y_%H:%M:%S : commande introuvable $ fileDate=$(date '+%d.%m.%Y_%H:%M:%S') # bonne syntaxe $ echo $fileDate 03.09.2010_09:56:49 $
Sinon pour df, il faut savoir le nom de la partition pour pouvoir sortir l'espace libre, or je ne sais pas comment obtenir le nom de cette partition
A partir du moment où tu voulais faire un "cd /support_amovible", c'est que tu sais au moins le nom du répertoire, et par extension son point de montage, non ?
Donc à partir de là on devrait pouvoir connaitre le nom de la partition...
Pour la date, ça fonctionne toujours pas, je comprends pas.
A partir du moment où tu voulais faire un "cd /support_amovible", c'est que tu sais au moins le nom du répertoire, et par extension son point de montage, non ?
Oui
Donc à partir de là on devrait pouvoir connaitre le nom de la partition...
Oui, mais comment ? :p
A partir du moment où tu voulais faire un "cd /support_amovible", c'est que tu sais au moins le nom du répertoire, et par extension son point de montage, non ?
Oui
Donc à partir de là on devrait pouvoir connaitre le nom de la partition...
Oui, mais comment ? :p
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
3 sept. 2010 à 10:34
3 sept. 2010 à 10:34
Oui, mais comment ? :p
Admettons que la clé USB soit montée sous "/media/cle_usb" :
Admettons que la clé USB soit montée sous "/media/cle_usb" :
df -h /media/cle_usb | awk '/cle_usb/ {print $4}'
Je mets le script entier si cela peut aider.
Résumé de script : il doit faire un backup de la partition /media/eleve sur un support externe USB. Il doit également vérifier que l'archive ne sera pas plus grande que l'espace restant sur le support externe.
Ce qui ne fonctionne pas :
- La date dans le nom du backup
- Le test entre les deux valeurs
Merci de votre aide =)
Résumé de script : il doit faire un backup de la partition /media/eleve sur un support externe USB. Il doit également vérifier que l'archive ne sera pas plus grande que l'espace restant sur le support externe.
Ce qui ne fonctionne pas :
- La date dans le nom du backup
- Le test entre les deux valeurs
Merci de votre aide =)
#!/bin/bash eleve=/media/eleve/ fileDate=$(date '+%d.%m.%Y_%H:%M:%S') filename="Backup-${fileDate}.tar" function endbyzenity() { if [ $? -eq 1 ] then exit fi } function compress(){ zenity --question --title "Question" --text "Voulez-vous commencer le backup ? ( Espace disque : $freeSpace Mo / Taille estimée de l'archive : $fileSize Mo )" endbyzenity tar -vcf $filename $eleve | zenity --progress --pulsate --title "Compression tar" gzip -9rvf $filename | zenity --progress --pulsate --title "Compression gz" } folder=$(zenity --entry --title "Dossier de destination" --text "Entrez le nom du dossier de destination") endbyzenity cd /media/eleve fileSize=$(du -km --max-depth=0) fileSize=${fileSize% .} cd $folder freeSpace=$(df -h $folder | awk '$folder {print $4}') freeSpace=${freeSpace#Tail.} freeSpace=${freeSpace%G} let TOTAL=freeSpace*1024 freeSpace=$TOTAL if [$freeSpace -lt $fileSize]; then #TODO bad = $($fileSize-$freeSpace) zenity --error --text "Espace disque insuffisant, veuillez libérer au minimum $bad Mo !" endbyzenity else compress fi
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
3 sept. 2010 à 10:47
3 sept. 2010 à 10:47
Je n'ai pas trop le temps de regarder en détail, mais il me semble qu'il y a pas mal d'erreurs de syntaxe et d'incohérences...
En premier :
Je jetterai un oeil plus tard au reste...
En premier :
filename=$"Backup-$fileDate.tar" <= Mauvaise syntaxe filename="Backup-${fileDate}.tar"
Je jetterai un oeil plus tard au reste...
Désolé pour les erreurs de syntaxes, à la base je fais de la programmation Java, donc le bash me dépayse un peu.
Le soucis pour l'espace disque est résolu.
Pour la date,
P.S. Code complet remis à jour
P.S.2 Correction de la variable $bad en
Le soucis pour l'espace disque est résolu.
Pour la date,
filename="Backup-${fileDate}.tar"ne fonctionne pas non plus -_-
P.S. Code complet remis à jour
P.S.2 Correction de la variable $bad en
let BAD=fileSize-freeSpace
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
3 sept. 2010 à 11:32
3 sept. 2010 à 11:32
Ouvre un terminal et tape :
fileDate=$(date '+%d.%m.%Y_%H:%M:%S') <Entrée> filename="Backup-${fileDate}.tar" <Entrée> echo ${fileDate} <Entrée> echo ${filename} <Entrée>
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
3 sept. 2010 à 11:35
3 sept. 2010 à 11:35
Salut,
Mets des tirets ou underscore au lieux de deux-points
Mets des tirets ou underscore au lieux de deux-points
fileDate=$(date '+%d.%m.%Y_%H-%M-%S')
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
3 sept. 2010 à 11:52
3 sept. 2010 à 11:52