Bash : soucis de formatage de date + question
Résolu
Lucas
-
Lucas -
Lucas -
Bonjour,
Dans le cadre d'un projet scolaire je dois réaliser un petit script permettant de faire le backup d'une partition sur un support amovible USB.
Je dois inclure la date et l'heure du jour dans le nom du fichier, et le formatage suivant ne fonctionne pas :
Avez-vous une petite idée sur l'erreur ? =)
Sinon comme le support de destination est variable, j'aimerais pouvoir récupérer le nom de sa partition (/dev/xxx) afin de pouvoir récupérer l'espace disque restant et ainsi pouvoir comparer avec la taille de l'archive pour permettre ou non le backup. Voici la commande que je souhaite utiliser pour cela :
Existe-t-il un moyen de récupérer cette information si par exemple on se place dans le support amovible via un cd ? Ou alors avez-vous une alternative ?
Merci de votre aide et bonne journée
Dans le cadre d'un projet scolaire je dois réaliser un petit script permettant de faire le backup d'une partition sur un support amovible USB.
Je dois inclure la date et l'heure du jour dans le nom du fichier, et le formatage suivant ne fonctionne pas :
fileDate='date '+%d.%m.%Y_%H:%M:%S''
Avez-vous une petite idée sur l'erreur ? =)
Sinon comme le support de destination est variable, j'aimerais pouvoir récupérer le nom de sa partition (/dev/xxx) afin de pouvoir récupérer l'espace disque restant et ainsi pouvoir comparer avec la taille de l'archive pour permettre ou non le backup. Voici la commande que je souhaite utiliser pour cela :
freeSpace=$(df /dev/sdxx | awk '/sdxx/ {print $4}'
Existe-t-il un moyen de récupérer cette information si par exemple on se place dans le support amovible via un cd ? Ou alors avez-vous une alternative ?
Merci de votre aide et bonne journée
A voir également:
- Bash : soucis de formatage de date + question
- Bingo bash - Télécharger - Divers Jeux
- Bash list ✓ - Forum Shell
- Bash permission non accordée - Forum Shell
- Bash pause ✓ - Forum Shell
- Bash addition - Forum Programmation
3 réponses
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 =)
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.
$ 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
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
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