#1 Le 12/06/2016, à 11: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, à 19:58)
Ubuntu-Unity 24.04 Alienware X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42
Hors ligne
#2 Le 16/06/2016, à 07: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, à 08:58)
Maxire
Archlinux/Mate + Ubuntu 22.04 + Archlinux/Gnome sur poste de travail
Hors ligne
#3 Le 16/06/2016, à 10: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 24.04 Alienware X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42
Hors ligne
#4 Le 16/06/2016, à 11: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, à 11: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 24.04 Alienware X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42
Hors ligne
#6 Le 16/06/2016, à 11: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, à 13: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, à 13:18)
Ubuntu-Unity 24.04 Alienware X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42
Hors ligne
#8 Le 16/06/2016, à 14: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, à 17: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, à 19:57)
Ubuntu-Unity 24.04 Alienware X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42
Hors ligne