Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/06/2016, à 12:33

L'Africain

(Résolu) Copie fichier seulement si assez de place

Bonjour,
J'ai écrit un petit script pour permettre à des amis de copier facilement les fichiers zim et leur indexation sur leur pc, dans le cas où il aurait un dual-boot avec une partition principale en ntfs et dans le cas où ils aurait uniquement Ubuntu. J'aimerais y ajouter la possibilité de ne copier que un fichier zim (celui de Wikipédia) ainsi que son fichier d'indexation. En gros je cherche à ajouter à mon script une boucle qui vérifie s'il y a assez de place (au mois 30 gigas) sur les partitions, sinon il ne copierait donc que Wikipédia. Voici le script en question :

#!/bin/bash

if 
	sudo blkid | grep Commun
then 
	mkdir /media/Commun/.kiwix
	mkdir -p /media/Commun/.www.kiwix.org/kiwix
       	cp -r -v /media/ISO/Docs/Zim/www.kiwix.org/kiwix/* /media/Commun/.www.kiwix.org/kiwix
	cp -r -v /media/ISO/Docs/Zim/kiwix/* /media/Commun/.kiwix
	sudo ln -s /media/Commun/.kiwix /home/kiwix
	ln -s /media/Commun/.www.kiwix.org $HOME/.www.kiwix.org

else
## Copie des wiki et de l'indexation ##
	mkdir -p $HOME/.www.kiwix.org/kiwix
	sudo mkdir /home/kiwix
	cp -r -v /media/ISO/Docs/Zim/www.kiwix.org/kiwix/* $HOME/.www.kiwix.org/kiwix
	sudo cp -r -v /media/ISO/Docs/Zim/kiwix/* /home/kiwix
	sudo chmod -R a+rwX /home/kiwix/
fi

Je voudrais ajouter :

Vérifie espace sur la plus grande partitions (/home ou Commun)
         Si assez poursuivre opération
         Sinon passez à la copie uniquement de wikipédia

Merci déjà pour votre aide, j'espère avoir assez bien décrit mon problème.

Dernière modification par L'Africain (Le 16/06/2016, à 20:58)


Ubuntu-Unity 18.04 LDLC (clevo) X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42

Hors ligne

#2 Le 16/06/2016, à 08:53

maxire

Re : (Résolu) Copie fichier seulement si assez de place

Salut,

Commande df, exemple:

df -h --output=avail /home

donnera l'espace disponible dans /home.

Edit: Version améliorée,

df  --output=avail /home | tail -n +2

Enlève l'entête, Espace disponible exprimé en octets, plus facile à gérer.

Dernière modification par maxire (Le 16/06/2016, à 09:58)


Maxire
Archlinux/Mate + Ubuntu 22.04 + Archlinux/Gnome sur poste de travail

Hors ligne

#3 Le 16/06/2016, à 11:42

L'Africain

Re : (Résolu) Copie fichier seulement si assez de place

Super merci !
Donc je peux avoir l'espace dispo, mais après comment écrire :
Si c'est supérieur à 4000000 kilo alors fait ça sinon fait l'autre truc?


Ubuntu-Unity 18.04 LDLC (clevo) X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42

Hors ligne

#4 Le 16/06/2016, à 12:06

maxire

Re : (Résolu) Copie fichier seulement si assez de place

Tu sais coder une sélection tu fais quelque chose comme:

if [ $(df  --output=avail /home | tail -n +2) -gt 4000000 ]; then bidule; else chose ; fi

Maxire
Archlinux/Mate + Ubuntu 22.04 + Archlinux/Gnome sur poste de travail

Hors ligne

#5 Le 16/06/2016, à 12:38

L'Africain

Re : (Résolu) Copie fichier seulement si assez de place

ok super, merci, donc pour résumé si je comprends bien le -gt c'est l'équivalent de supérieur à 4000000?
J'essaye ça.


Ubuntu-Unity 18.04 LDLC (clevo) X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42

Hors ligne

#6 Le 16/06/2016, à 12:57

maxire

Re : (Résolu) Copie fichier seulement si assez de place

-gt greater than = supérieur à
-lt lower than = inférieur à
-eq equal = égale
! [ machin -lt  bidule ] = machin supérieur ou égale à bidule (négation de <)
! [ machin -gt bidule ] = machin inférieur ou égale à bidule (négation de >)
4000000 kilo ---> 4000000000 (4 G)


Maxire
Archlinux/Mate + Ubuntu 22.04 + Archlinux/Gnome sur poste de travail

Hors ligne

#7 Le 16/06/2016, à 14:16

L'Africain

Re : (Résolu) Copie fichier seulement si assez de place

Resalut,
Alors pour faire un test j'ai fait ça :

if [ $(df  --output=avail /home | tail -n +2) -gt 18000000 ]; 
	then
		mkdir -p $HOME/test1/TEST;
	else
		mkdir -p $HOME/test2/test;
fi

Sachant que:

 df  --output=avail /home | tail -n +2
17603304

Mais ça marche pas il fai systématiquemen le then (test1)??
Je vois pas où ça coince?

Dernière modification par L'Africain (Le 16/06/2016, à 14:18)


Ubuntu-Unity 18.04 LDLC (clevo) X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42

Hors ligne

#8 Le 16/06/2016, à 15:10

pingouinux

Re : (Résolu) Copie fichier seulement si assez de place

Bonjour,
Le résultat que tu indiques en #7 n'est pas normal. Pour être sûr des valeurs, donne le retour complet de ces commandes, lancées en une seule fois :

df  --output=avail /home | tail -n +2
if [ $(df  --output=avail /home | tail -n +2) -gt 18000000 ]; 
	then
		echo mkdir -p $HOME/test1/TEST;
	else
		echo mkdir -p $HOME/test2/test;
fi

Hors ligne

#9 Le 16/06/2016, à 18:04

L'Africain

Re : (Résolu) Copie fichier seulement si assez de place

Ça semble fonctionner, même sans le echo, il crée le dossier test2, donc pour un espace disque inférieur à 18G:

cyrille@W54:~$ ./wiki.sh 
17556128
mkdir -p /home/cyrille/test2/test

Je dois donc séparer df de la boucle?
Edit : toutes mes excuses ça fonctionne, je me suis embrouillé avec les chiffres, je mettais dans la commande un chiffre en moins, alors c'est sûr ça pouvait pas marcher...
Merci pour ton aide affaire résolue.

Dernière modification par L'Africain (Le 16/06/2016, à 20:57)


Ubuntu-Unity 18.04 LDLC (clevo) X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42

Hors ligne