Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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
Guy Roussin
A tester en une passe :
find . -printf "%p %u %gn" > listowner

Guy

Le 08/10/2014 19:03, admini a écrit :
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
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 mercredi 8 octobre 2014 à 17:03, admini a écr it :
je dois parcourir, de façon resursive, pas mal de millions (25M) de
fichiers pour trouver tous les owners de tous les fichiers.



25 millions de fichiers !! J'ai bien cru halluciner... o_O

Travailles-tu sur un - très gros - serveur de 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.



J'ai tenté l'expérience mais sur l'ensemble de l'arborescence donc avec la
commande "find / -type d > listdir" puis j'ai passé ta seconde commande.

Je n'ai pas rigoureusement chronométré mais ça m'a pris certainement moins de
5 min pour chacune des deux commandes.

Je ne sais pas quelle est la configuration matérielle de ta machine, mais , pour
ton information, mon ordinateur (de bureau) possède, brièvement, un pro cesseur
dual-core Athlon 64 bits à 3 GHz, une mémoire centrale DDR3 de 8 Go à 800 MHz
et 2 disques durs Western Digital VelociRaptor SATA2 de 1 To à 10'000 tr/ min
chacun.

Juste par curiosité, peux-tu nous dire combien pèsent tes deux fichiers listdir
et listowner (qui doivent contenir les informations sur les quelques 7
millions de fichiers) ?

Chez moi, mon listdir contient prés de 20'000 lignes et pèse prés de 660 ko,
mon listowner approximativement 250'000 lignes et 15 Mo !!

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.



Je n'ai pas de réponse(s) toute(s) faite(s) à te proposer - d'autant qu e mes
connaissances au niveau de la ligne de commande restent bien limitées - m ais
as-tu pensé à regarder du coté des commandes 'ls', 'sed' voire 'awk' ?

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
Stéphane GARGOLY
Bonjour à tous les utilisateurs et développeurs de Debian :

Le mercredi 8 octobre 2014 à 18:47, Stéphane GARGOLY
a écrit :
Chez moi, mon listdir contient prés de 20'000 lignes et pèse prés d e 660
ko, mon listowner approximativement 250'000 lignes et 15 Mo !!



D'abord un petit rectificatif : ce n'est pas 250'000 mais 270'000 lignes po ur
mon listowner. ;-)

J'ai essayé la solution proposée par Guy donc avec la commande "find / -printf
"%p %u %gn" > listowner2" et cela a l'air d'être plus rapide : quelques
dizaines de secondes...

Mais mon fichier listowner2 est presque aussi gros que le précédent.

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
admini
Le 08/10/2014 20:47, Stéphane GARGOLY a écrit :
Bonjour à tous les utilisateurs et développeurs de Debian :

Le mercredi 8 octobre 2014 à 17:03, admini a écrit :
je dois parcourir, de façon resursive, pas mal de millions (25M) de
fichiers pour trouver tous les owners de tous les fichiers.



25 millions de fichiers !! J'ai bien cru halluciner... o_O



ben, c'est de la production quoi.


Travailles-tu sur un - très gros - serveur de fichiers ?



non, je travaille sur des baies SAN en fibre channel. ce sont des baies
Netapp.


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.



J'ai tenté l'expérience mais sur l'ensemble de l'arborescence donc avec la
commande "find / -type d > listdir" puis j'ai passé ta seconde commande.

Je n'ai pas rigoureusement chronométré mais ça m'a pris certainement moins de
5 min pour chacune des deux commandes.

Je ne sais pas quelle est la configuration matérielle de ta machine, mais, pour
ton information, mon ordinateur (de bureau) possède, brièvement, un processeur
dual-core Athlon 64 bits à 3 GHz, une mémoire centrale DDR3 de 8 Go à 800 MHz
et 2 disques durs Western Digital VelociRaptor SATA2 de 1 To à 10'000 tr/min
chacun.

Juste par curiosité, peux-tu nous dire combien pèsent tes deux fichiers listdir
et listowner (qui doivent contenir les informations sur les quelques 7
millions de fichiers) ?




les fichers vont de 1Ko à qqs centaines de Mo. le serveur est virtualisé
sous ESX avec un vCPU et 4Go de RAM. la cadence du vCPU est gérée par la
ferme ESX. les disques sont des disques SAN en raid5. c'est du sata
7200ppm, mais des disques de stockage quoi. on ne peut pas vraiment
faire de comparaison avec des disques dits "grand publique". c'est vrai
que le raid5 n'aide pas pour la perfe.



Chez moi, mon listdir contient prés de 20'000 lignes et pèse prés de 660 ko,
mon listowner approximativement 250'000 lignes et 15 Mo !!



le fichier qui list tous les répertoires fait 175000 lignes. il y a donc
175000 répertoires qui contiennent les 7Millions de fichiers. le fichier
avec tous les fichiers et leur owner fait 700Mo.



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.



Je n'ai pas de réponse(s) toute(s) faite(s) à te proposer - d'autant que mes
connaissances au niveau de la ligne de commande restent bien limitées - mais
as-tu pensé à regarder du coté des commandes 'ls', 'sed' voire 'awk' ?



ben, j'ai peur que ls parcourt effectivement les répertoires, alors que
stat ne lit, me semble -t il que la table d'inodes, ce qui bien moins
stressant pour les IO du système. enfin, je crois ....



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
admini
Le 08/10/2014 20:22, Guy Roussin a écrit :
A tester en une passe :
find . -printf "%p %u %gn" > listowner



je fais ça sur de petite quantité de fichiers: 1 à demi million.
mais au delà, ça devient un peu chaud. avec stat, je me suis dit que ça
devrait traverser que les tables d'inodes, et donc, moins stresser le
disque ... surtout lorsque ceux sont en raid5 et raid10 sur une baie de
stockage ... on évite ce genre de traverse un peu violent. pour info,
j'ai lancé la commande entre midi et 2. les 25 millions seront parcourus
donc en plusieurs lots durant une semaine ....


Guy

Le 08/10/2014 19:03, admini a écrit :
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
En cas de soucis, contactez EN ANGLAIS
Archive: https://lists.debian.org/
Avatar
Serge SMEESTERS
Pour améliorer les perf', regardes du côté de ionice et linu x io scheduler...

--
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
François Boisson
Le Wed, 08 Oct 2014 19:03:33 +0200
admini a écrit:

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




find . -type f -printf "%h%f %u %gn" > listowner

non?

François Boisson

--
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
yamo'
Salut,

admini a écrit le 08/10/2014 21:50 :
les fichers vont de 1Ko à qqs centaines de Mo. le serveur est virtualisé
sous ESX avec un vCPU et 4Go de RAM. la cadence du vCPU est gérée par la
ferme ESX. les disques sont des disques SAN en raid5. c'est du sata
7200ppm, mais des disques de stockage quoi. on ne peut pas vraiment
faire de comparaison avec des disques dits "grand publique". c'est vrai
que le raid5 n'aide pas pour la perfe.




S'il est virtualisé, je le clonerais et bosserais sur le clone et ferait
du rsync pour mettre à jour le clone si il y a besoin de refaire la mesure.


--
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/m147hf$62b$
Avatar
Belaïd
--e89a8f3baa3125e0660504f07b3e
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Bonsoir,
Pourquoi ne pas utiliser la base de donnée de la commande locate ?
du genre: locate "*" | xargs stat -c "%n %U %G"
pour un peu plus de 56000 entrées le traitement a duré 4 secondes
(processeur Atom 1,8ghz, 4go de mémoire)
la base doit au préalable être à jour

Le 8 octobre 2014 19:03, admini a écrit :

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 e t du
système ( CPU mémoire) de faire de telles choses, je vais le te ster 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" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">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/






--
< Belaid >

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

<div dir="ltr"><div><div><div><div>Bonsoir,<br></div>Pourquoi ne pas util iser la base de donnée de la commande locate ?<br></div>du genre: loca te &quot;*&quot; | xargs stat -c &quot;%n %U %G&quot;<br></div>pour un peu plus de 56000 entrées le traitement a duré 4 secondes (processeur Atom 1,8ghz, 4go de mémoire)<br></div>la base doit au préalable être à jour<br></div><div class="gmail_extra"><br><div class= "gmail_quote">Le 8 octobre 2014 19:03, admini <span dir="ltr">&lt;<a href ="mailto:" target="_blank"></a> &gt;</span> a écrit :<br><blockquote class="gmail_quote" style="ma rgin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">salut la liste <br>
<br>
je dois parcourir, de façon resursive, pas mal de millions (25M) de fi chiers pour trouver tous les owners de tous les fichiers.<br>
<br>
j&#39;ai d&#39;abord fait une expérience sur seulement 7Millions, avec <br>
<br>
find .  -type d &gt; listdir<br>
<br>
ca a pris 30minutes<br>
<br>
puis<br>
<br>
while read i ; do stat -c &#39;%n %U %G&#39; $i/* ;done&lt;listdir &gt; lis towner<br>
<br>
ca a pris 78 minutes.<br>
<br>
bon, à la prod, personne n&#39;a rien dit. vous etes les premires à   en être au courant.<br>
<br>
<br>
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 t ester demain sur un lot de 7 Millions de fichiers.<br>
<br>
d&#39;avance merci de vos réponses.<span class="HOEnZb"><font color ="#888888"><br>
<br>
-- <br>
Lisez la FAQ de la liste avant de poser une question :<br>
<a href="http://wiki.debian.org/fr/FrenchLists" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://wiki.debian.org/fr/FrenchLists" target="_blank">http:// wiki.debian.org/fr/<u></u>FrenchLists</a><br>
<br>
Pour vous DESABONNER, envoyez un message avec comme objet &quot;unsubscribe &quot;<br>
vers <a href="mailto:" target ="_blank">debian-user-french-REQUEST@<u></u>lists.debian.org</a><br>
En cas de soucis, contactez EN ANGLAIS <a href="mailto: ebian.org" target="_blank"></a><br>
Archive: <a href="https://lists.debian.org/" target="_blank">https://lists.debian.org/<u></u> com</a><br>
<br>
</font></span></blockquote></div><br><br clear="all"><br>-- <br>&lt; Bela id &gt;
</div>

--e89a8f3baa3125e0660504f07b3e--

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">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/CAFuS2bZTQn03kWBo+
Avatar
Francois Lafont
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.
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$
1 2 3