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 free - Télécharger - Divers Jeux
- Bash pause ✓ - Forum Shell
- Bash addition - Forum Programmation
- Bash permission non accordée - Forum Shell
- Bash list ✓ - Forum Shell
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