OVH Cloud OVH Cloud

parcours de millions de fichiers

27 réponses
Avatar
admini
salut la liste

je dois parcourir, de façon resursive, pas mal de millions (25M) de
fichiers pour trouver tous les owners de tous les fichiers.

j'ai d'abord fait une expérience sur seulement 7Millions, avec

find . -type d > listdir

ca a pris 30minutes

puis

while read i ; do stat -c '%n %U %G' $i/* ;done<listdir > listowner

ca a pris 78 minutes.

bon, à la prod, personne n'a rien dit. vous etes les premires à en être
au courant.


y a t-il un autre moyen plus économique vis à vis du stockage et du
système ( CPU mémoire) de faire de telles choses, je vais le tester
demain sur un lot de 7 Millions de fichiers.

d'avance merci de vos réponses.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: https://lists.debian.org/54356E65.40708@freeatome.com

10 réponses

1 2 3
Avatar
admini
Le 09/10/2014 02:05, Francois Lafont a écrit :
Bonsoir,

Le 09/10/2014 00:03, Belaïd a écrit :

Pourquoi ne pas utiliser la base de donnée de la commande locate ?


J'espère pour le PO que locate n'est pas installé sur son serveur
de production car il n'y a pas de miracle, si cet outil va très
vite c'est parce qu'il met à jour régulièrement un base représentant
l'ensemble de l'arborescence de fichiers. Sur un serveur avec autant
de fichiers que le PO, ça peut avoir des conséquences très mauvaises
au niveau perf (pendant que locate scanne l'arborescence, tout est
ralenti).

Je pense que le plus économique est le find comme déjà indiqué
car il n'y a qu'un seul processus. Ensuite, si le but recherché
est de perturber le serveur le moins possible, alors effectivement
il ne faut pas hésiter à utiliser *simultanément* nice (pour que le
processus soit gentil au niveau CPU) et ionice (pour qu'il soit
gentil au niveau I/O). Évidemment, ça va allonger le temps d'exécution
de la commande, pas de miracle.



bon, ok. je vais tenter le ionice alors. merci

Plus la commande sera « gentille » moins elle perturbera le serveur
durant son exécution mais plus l'exécution sera longue. À l'inverse,
moins la commande sera « gentille », plus elle perturbera le serveur
durant son exécution mais plus l'exécution sera rapide. Perso, si
rien ne presse, je préfère lancer une commande « gentille » en tâche
de fond sur un serveur de prod quitte à attendre le lendemain pour
avoir le résultat final. ;)




--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: https://lists.debian.org/
Avatar
daniel huhardeaux
Le 09/10/2014 02:05, Francois Lafont a écrit :
Bonsoir,

Le 09/10/2014 00:03, Belaïd a écrit :

Pourquoi ne pas utiliser la base de donnée de la commande locate ?


J'espère pour le PO que locate n'est pas installé sur son serveur
de production car il n'y a pas de miracle, si cet outil va très
vite c'est parce qu'il met à jour régulièrement un base représentant
l'ensemble de l'arborescence de fichiers.


[...]

man updatedb

DESCRIPTION
updatedb creates or updates a database used by
locate(1). If the database already exists, its data is reused to avoid
rereading directories that have not
changed.

updatedb is usually run daily by cron(8) to update the default
database.

Il suffit de retirer la màj de cron et le tour est joué.

--
Daniel

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: https://lists.debian.org/
Avatar
Philippe Gras
Le 9 oct. 14 à 02:05, Francois Lafont a écrit :

Bonsoir,

Le 09/10/2014 00:03, Belaïd a écrit :

Pourquoi ne pas utiliser la base de donnée de la commande locate ?



J'espère pour le PO que locate n'est pas installé sur son serveur
de production car il n'y a pas de miracle, si cet outil va très
vite c'est parce qu'il met à jour régulièrement un base représentant
l'ensemble de l'arborescence de fichiers. Sur un serveur avec autant
de fichiers que le PO, ça peut avoir des conséquences très mauvaises
au niveau perf (pendant que locate scanne l'arborescence, tout est
ralenti).



Vous êtes sûr de ça ? Quand j'effectue des mises à jour ou que je
mets un
nouveau fichier sur le serveur, je dois faire ‘updatedb' pour que
locate les
prenne en compte.


Je pense que le plus économique est le find comme déjà indiqué
car il n'y a qu'un seul processus. Ensuite, si le but recherché
est de perturber le serveur le moins possible, alors effectivement
il ne faut pas hésiter à utiliser *simultanément* nice (pour que le
processus soit gentil au niveau CPU) et ionice (pour qu'il soit
gentil au niveau I/O). Évidemment, ça va allonger le temps d'exécution
de la commande, pas de miracle.
Plus la commande sera « gentille » moins elle perturbera le serveur
durant son exécution mais plus l'exécution sera longue. À l'inverse,
moins la commande sera « gentille », plus elle perturbera le serveur
durant son exécution mais plus l'exécution sera rapide. Perso, si
rien ne presse, je préfère lancer une commande « gentille » en tâche
de fond sur un serveur de prod quitte à attendre le lendemain pour
avoir le résultat final. ;)

--
François Lafont

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet
"unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: https://lists.debian.org/m14jfg$c7b$




--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: https://lists.debian.org/
Avatar
Sébastien NOBILI
Bonjour,

Le jeudi 09 octobre 2014 à 10:11, daniel huhardeaux a écrit :
Le 09/10/2014 02:05, Francois Lafont a écrit :
>Le 09/10/2014 00:03, Belaïd a écrit :
>
>>Pourquoi ne pas utiliser la base de donnée de la commande locate ?
>J'espère pour le PO que locate n'est pas installé sur son serveur
>de production car il n'y a pas de miracle, si cet outil va très
>vite c'est parce qu'il met à jour régulièrement un base représentant
>l'ensemble de l'arborescence de fichiers.



Je suis assez d'accord avec ça, mais ça n'exclut pas pour autant cette solution.
Il y a peut-être des moments de moindre activité sur ce serveur qui pourraient
être de bons candidats pour cette mise-à-jour.

Si le besoin (analyse de tous ces fichiers) est récurrent, ça peut se justifier,
en revanche s'il est ponctuel alors le find sera sûrement la meilleure solution.

Il suffit de retirer la màj de cron et le tour est joué.



Retirer la mise-à-jour de cron rend l'intérêt de locate plutôt limité. L'idée
lancée par Belaïd était justement de profiter du fait que la base locate est à
jour et que donc la réponse sera rapide. Si la base n'est plus à jour, la
réponse ne sera plus rapide et donc la solution perd tout son intérêt.

Seb

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: https://lists.debian.org/
Avatar
daniel huhardeaux
Le 09/10/2014 10:55, Sébastien NOBILI a écrit :
[...]
Il suffit de retirer la màj de cron et le tour est joué.


Retirer la mise-à-jour de cron rend l'intérêt de locate plutôt limité. L'idée
lancée par Belaïd était justement de profiter du fait que la base locate est à
jour et que donc la réponse sera rapide. Si la base n'est plus à jour, la
réponse ne sera plus rapide et donc la solution perd tout son intérêt.



Il faut lire ce que j'ai écrit: j'ai répondu à François qui disait que
le update de la base se faisait automatiquement => non, c'est une tâche
cron qui s'en occupe, on peut donc désactiver cette màj auto. Ce qui
fait que pour le problème cité par Belaïd on peut parfaitement installer
et utiliser locate -en faisant le update une fois avant la recherche-
puis le laisser sur le serveur _sans_ que cela n'induise le problème
soulevé par François. Dans 6 mois il lui suffira de refaire l'update
manuellement avant la nouvelle recherche.

--
Daniel

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: https://lists.debian.org/
Avatar
admini
Le 09/10/2014 10:36, Philippe Gras a écrit :

Le 9 oct. 14 à 02:05, Francois Lafont a écrit :

Bonsoir,

Le 09/10/2014 00:03, Belaïd a écrit :

Pourquoi ne pas utiliser la base de donnée de la commande locate ?



J'espère pour le PO que locate n'est pas installé sur son serveur
de production car il n'y a pas de miracle, si cet outil va très
vite c'est parce qu'il met à jour régulièrement un base représentant
l'ensemble de l'arborescence de fichiers. Sur un serveur avec autant
de fichiers que le PO, ça peut avoir des conséquences très mauvaises
au niveau perf (pendant que locate scanne l'arborescence, tout est
ralenti).



Vous êtes sûr de ça ? Quand j'effectue des mises à jour ou que je mets un
nouveau fichier sur le serveur, je dois faire ‘updatedb' pour que
locate les
prenne en compte.



oui, mais si c'est le updatedb est dans le cron, tu attends le
lendemain, tu auras ton fichier dans la base.

pour mes serveurs, j'ai désactivé ce genre de chose. locate est bien
pour un usage à petite échelle: trouver ses photos ou vidéos de
vacances, c'est très pratique. mais sur une baie SAN, c'est interdit.
j'ai vu des admins se faire taper sur les doigts pour avoir lancé un ls
-R sur un serveur de prod à 9h du matin. vu le prix du giga sur un baie
SAN en fibre optique ... vaut mieux éviter de la stressé de cette
manière tous les jours.

de toute façon, ce genre de demande est rare. j'ai planifié le truc sur
une semaine entière. aujourd'hui je vais faire sur un autre lot de
7millions à partir de 12h00, avec ionice, comme le conseillent des
membres de la liste. c'est une bonne idée, car on a aussi des bases
Oracle à la maison. pour ceux qui connaissent, une base oracle en data
warehouse ca bouffe bien les IO comme de petits pains. il faut bien
savoir les gérer.



Je pense que le plus économique est le find comme déjà indiqué
car il n'y a qu'un seul processus. Ensuite, si le but recherché
est de perturber le serveur le moins possible, alors effectivement
il ne faut pas hésiter à utiliser *simultanément* nice (pour que le
processus soit gentil au niveau CPU) et ionice (pour qu'il soit
gentil au niveau I/O). Évidemment, ça va allonger le temps d'exécution
de la commande, pas de miracle.
Plus la commande sera « gentille » moins elle perturbera le serveur
durant son exécution mais plus l'exécution sera longue. À l'inverse,
moins la commande sera « gentille », plus elle perturbera le serveur
durant son exécution mais plus l'exécution sera rapide. Perso, si
rien ne presse, je préfère lancer une commande « gentille » en tâche
de fond sur un serveur de prod quitte à attendre le lendemain pour
avoir le résultat final. ;)

--
François Lafont

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: https://lists.debian.org/m14jfg$c7b$







--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: https://lists.debian.org/
Avatar
Philippe Gras

Vous êtes sûr de ça ? Quand j'effectue des mises à jour ou que je
mets un
nouveau fichier sur le serveur, je dois faire ‘updatedb' pour que
locate les
prenne en compte.



oui, mais si c'est le updatedb est dans le cron, tu attends le
lendemain, tu auras ton fichier dans la base.

pour mes serveurs, j'ai désactivé ce genre de chose. locate est
bien pour un usage à petite échelle: trouver ses photos ou vidéos
de vacances, c'est très pratique. mais sur une baie SAN, c'est
interdit.
j'ai vu des admins se faire taper sur les doigts pour avoir lancé
un ls -R sur un serveur de prod à 9h du matin. vu le prix du giga
sur un baie SAN en fibre optique ... vaut mieux éviter de la
stressé de cette manière tous les jours.



OK. Merci pour l'info. Je vais regarder à quelle heure s'effectue
cette tâche cron. Si c'est pendant la journée,
je la désactiverai aussi ! Je trouve locate bien pratique, mais je ne
l'utilise pas pour faire des requêtes avec
des millions de résultats.


de toute façon, ce genre de demande est rare. j'ai planifié le truc
sur une semaine entière. aujourd'hui je vais faire sur un autre lot
de 7millions à partir de 12h00, avec ionice, comme le conseillent
des membres de la liste. c'est une bonne idée, car on a aussi des
bases Oracle à la maison. pour ceux qui connaissent, une base
oracle en data warehouse ca bouffe bien les IO comme de petits
pains. il faut bien savoir les gérer.



Je pense que le plus économique est le find comme déjà indiqué
car il n'y a qu'un seul processus. Ensuite, si le but recherché
est de perturber le serveur le moins possible, alors effectivement
il ne faut pas hésiter à utiliser *simultanément* nice (pour que le
processus soit gentil au niveau CPU) et ionice (pour qu'il soit
gentil au niveau I/O). Évidemment, ça va allonger le temps
d'exécution
de la commande, pas de miracle.
Plus la commande sera « gentille » moins elle perturbera le serveur
durant son exécution mais plus l'exécution sera longue. À l'inverse,
moins la commande sera « gentille », plus elle perturbera le serveur
durant son exécution mais plus l'exécution sera rapide. Perso, si
rien ne presse, je préfère lancer une commande « gentille » en tâche
de fond sur un serveur de prod quitte à attendre le lendemain pour
avoir le résultat final. ;)

--
François Lafont

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet
"unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: https://lists.debian.org/m14jfg$c7b$







--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet
"unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: https://lists.debian.org/




--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: https://lists.debian.org/
Avatar
Stéphane GARGOLY
Bonjour à tous les utilisateurs et développeurs de Debian :

Le jeudi 9 octobre 2014 à 09:24, Philippe Gras a
écrit :
OK. Merci pour l'info. Je vais regarder à quelle heure s'effectue
cette tâche cron. Si c'est pendant la journée,
je la désactiverai aussi ! Je trouve locate bien pratique, mais je ne
l'utilise pas pour faire des requêtes avec
des millions de résultats.



Ou tout simplement changer d'heure - voire choisir une périodicité moin s
fréquente - au niveau d'un fichier crontab.

Cordialement et à bientôt,

Stéphane.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: https://lists.debian.org/
Avatar
andre_debian
On Thursday 09 October 2014 10:36:35 Philippe Gras wrote:
Vous êtes sûr de ça ? Quand j'effectue des mises à jour ou que je
mets un
nouveau fichier sur le serveur, je dois faire ‘updatedb' pour que
locate les prenne en compte.



Oui, avant de lancer loca te il faut faire un updatedb.

André

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: https://lists.debian.org/
Avatar
Belaïd
--089e0116094c57e6e3050502ac3f
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Bonsoir,
Pour la commande de mise à jour de la base de données locate, ell e est
aussi utilisée avec ionice -c 3 (voir le script cron) et exécut ée dans mon
cas chaque jour à 6h25

Le 9 octobre 2014 02:05, Francois Lafont a écri t :

Bonsoir,

Le 09/10/2014 00:03, Belaïd a écrit :

> Pourquoi ne pas utiliser la base de donnée de la commande locate ?

J'espère pour le PO que locate n'est pas installé sur son serve ur
de production car il n'y a pas de miracle, si cet outil va très
vite c'est parce qu'il met à jour régulièrement un base re présentant
l'ensemble de l'arborescence de fichiers. Sur un serveur avec autant
de fichiers que le PO, ça peut avoir des conséquences très mauvaises
au niveau perf (pendant que locate scanne l'arborescence, tout est
ralenti).

Je pense que le plus économique est le find comme déjà ind iqué
car il n'y a qu'un seul processus. Ensuite, si le but recherché
est de perturber le serveur le moins possible, alors effectivement
il ne faut pas hésiter à utiliser *simultanément* nice (po ur que le
processus soit gentil au niveau CPU) et ionice (pour qu'il soit
gentil au niveau I/O). Évidemment, ça va allonger le temps d'ex écution
de la commande, pas de miracle.
Plus la commande sera « gentille » moins elle perturbera le ser veur
durant son exécution mais plus l'exécution sera longue. À l'inverse,
moins la commande sera « gentille », plus elle perturbera le se rveur
durant son exécution mais plus l'exécution sera rapide. Perso, si
rien ne presse, je préfère lancer une commande « gentille » en tâche
de fond sur un serveur de prod quitte à attendre le lendemain pour
avoir le résultat final. ;)

--
François Lafont

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: https://lists.debian.org/m14jfg$c7b$






--
< Belaid >

--089e0116094c57e6e3050502ac3f
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir="ltr"><div>Bonsoir,<br></div>Pour la commande de mise à jou r de la base de données locate, elle est aussi utilisée avec ioni ce -c 3 (voir le script cron) et exécutée dans mon cas chaque jou r à 6h25<br></div><div class="gmail_extra"><br><div class="gmail_q uote">Le 9 octobre 2014 02:05, Francois Lafont <span dir="ltr">&lt;<a hre f="mailto:" target="_blank"></a >&gt;</span> a écrit :<br><blockquote class="gmail_quote" style="m argin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Bonsoir,<br>
<br>
Le 09/10/2014 00:03, Belaïd a écrit :<br>
<span class=""><br>
&gt; Pourquoi ne pas utiliser la base de donnée de la commande locate ?<br>
<br>
</span>J&#39;espère pour le PO que locate n&#39;est pas installé sur son serveur<br>
de production car il n&#39;y a pas de miracle, si cet outil va très<br >
vite c&#39;est parce qu&#39;il met à jour régulièrement un b ase représentant<br>
l&#39;ensemble de l&#39;arborescence de fichiers. Sur un serveur avec autan t<br>
de fichiers que le PO, ça peut avoir des conséquences très m auvaises<br>
au niveau perf (pendant que locate scanne l&#39;arborescence, tout est<br>
ralenti).<br>
<br>
Je pense que le plus économique est le find comme déjà indiq ué<br>
car il n&#39;y a qu&#39;un seul processus. Ensuite, si le but recherchà ©<br>
est de perturber le serveur le moins possible, alors effectivement<br>
il ne faut pas hésiter à utiliser *simultanément* nice (pour que le<br>
processus soit gentil au niveau CPU) et ionice (pour qu&#39;il soit<br>
gentil au niveau I/O). Évidemment, ça va allonger le temps d&#39; exécution<br>
de la commande, pas de miracle.<br>
Plus la commande sera « gentille » moins elle perturbera le serve ur<br>
durant son exécution mais plus l&#39;exécution sera longue. à € l&#39;inverse,<br>
moins la commande sera « gentille », plus elle perturbera le serv eur<br>
durant son exécution mais plus l&#39;exécution sera rapide. Perso , si<br>
rien ne presse, je préfère lancer une commande « gentille » en tâche<br>
de fond sur un serveur de prod quitte à attendre le lendemain pour<br>
avoir le résultat final. ;)<br>
<br>
--<br>
François Lafont<br>
<span class=""><br>
--<br>
Lisez la FAQ de la liste avant de poser une question :<br>
<a href="http://wiki.debian.org/fr/FrenchLists" target="_blank">http:// wiki.debian.org/fr/FrenchLists</a><br>
<br>
Pour vous DESABONNER, envoyez un message avec comme objet &quot;unsubscribe &quot;<br>
vers <a href="mailto:">debian- </a><br>
En cas de soucis, contactez EN ANGLAIS <a href="mailto: ebian.org"></a><br>
</span>Archive: <a href="https://lists.debian.org/m14jfg$c7b$ org" target="_blank">https://lists.debian.org/m14jfg$c7b$< /a><br>
<br>
</blockquote></div><br><br clear="all"><br>-- <br>&lt; Belaid &gt;
</div>

--089e0116094c57e6e3050502ac3f--

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: https://lists.debian.org/CAFuS2bZUdEOUfiPBdg4O1EZxYreHO3AvowgOKCb5V+
1 2 3