Moteur de recherche digne de ce nom

lenainjaune Messages postés 715 Date d'inscription   Statut Contributeur Dernière intervention   -  
mamiemando Messages postés 33766 Date d'inscription   Statut Modérateur Dernière intervention   -

Bonjour à tou.te.s :D !

Alors que je cherchais une solution pour copier depuis un système Linux un dossier depuis et vers un système de fichier NTFS, en préservant les droits, propriétaires et attributs (date-heure création/modification, caché, archive, etc.), j'ai trouvé ce qui semblait être mon bonheur : mcopy du paquetage mtools

La documentation étant plutôt fournie, j'ai voulu aller à l'essentiel en cherchant depuis le moteur de recherche G..gle la requête suivante : linux mcopy hidden folder preserve attributes

Les premiers résultats :

How to copy folder content including hidden files. - Linux Docs

How to copy with cp to include hidden files and ...

Oups ... j'ai oublié, le moteur est chatouilleux et veut que je lui précise, que oui je ne suis pas complètement abruti et que je n'ai pas saisi par mégarde mcopy à la place d'un simple copy (après tout pourquoi je voudrais utiliser une commande qui ne correspond pas à 99.9999% des requêtes qu'il a enregistré ou des sites qu'il a référencé)

Donc il faut que je lui précise en mettant entre guillemets : linux "mcopy" hidden folder preserve attributes

=> ah ... c'est mieux :( !!!!

How to copy with cp to include hidden files and ...

...

Le meilleur vous le connaissez ? C'est quand je me dis que peut être les résultats en correspondance à ma demande, se trouveront sur les prochaines pages (vous savez les liens vers les pages 2, 3, etc. affichées en bas de page).

=> nope !!!

Il me transforme alors ce que mes petits doigts endoloris on perdu du temps à saisir pour la 10e fois en : linux "copy" hidden folder preserve attributes

Ben oui, c'est clair que je ne sais pas ce que je demande (pour celleux qui n'auraient pas suivi, "mcopy" s'est miraculeusement ou divinement transformé en "copy" ouééééé :c )

Clairement ce moteur me prend pour un c..n !

Bref j'en arrive à ma demande.

Existe t-il un moteur de recherche (pas forcément depuis un navigateur, même en CLI je suis preneur), qui cherche strictement ce que je lui demande (et non qui interprète/suppose), qui permet de faire une recherche fine à base de conditions, idéalement avec la possibilité d'utiliser des expressions rationnelles et cerise sur le gâteau qui conserve mes requêtes pour pouvoir les améliorer ou les conserver ?

Ou bien est-ce beaucoup trop demander ?

Je pense également à un meta-moteur qui soit en capacité d'agréger les résultats d'autres moteurs ou un artifice qui permette de contourner les restrictions et fonctionnalités débiles de ce moteur de m...de ...

Voilou, si quelqu'un a une idée pour reprendre le chemin de la zénitude, je suis preneur, car là je suis abattu !

Avec adelphité,

lnj

Linux / Firefox 136.0


2 réponses

luckydu43 Messages postés 4251 Date d'inscription   Statut Membre Dernière intervention   1 054
 

Bonjour

La question est compliquée.

Les robots indexeurs (Google, Bing, Yahoo) sont aussi peu nombreux que les serveurs cible qui créent un dictionnaire. Plus nombreux sont les moteurs de recherche (et les agrégateurs de moteurs) qui eux, se "contentent" de requêter ces serveurs et mettre en forme la réponse. De sorte, il est possible d'avoir un moteur de recherche CLI.

Cela dit, ce besoin CLI étant plus qu'à la marge, les développements se concentrent sur les interfaces Web et il est, à mon sens, plus puissant de maîtriser les outils avancés de son moteur de recherche Web favori que d'apprendre un nouveau process en CLI. Ça ira même plus vite.

J'en vois un intérêt quand je suis sur une console Termux et que j'ai la flemme de sortir de l'app et ouvrir le Navigateur, dans ce cas le paquet surfraw devrait faire le job (dispo sur Termux (lien)). A lire la doc, je doute que ça puisse être aussi puissant que les opérateurs de recherche Web. Ça intéresse ma culture perso.

Dans le cas de DuckDuckGo il convient donc d'apprendre par cœur ces opérateurs de recherche (lien). Côté Google on trouve ceux-ci par exemple (lien).

Essaie de voir si un agrégateur de moteurs de recherche tel qu'Ecosia ou Ixquick est compatible avec les opérateurs de recherche de plusieurs moteurs en simultané. Ce dernier point intéresse aussi ma culture perso.


0
lenainjaune Messages postés 715 Date d'inscription   Statut Contributeur Dernière intervention   62
 

Bonjour luckydu43 et merci pour ta réactivité :D

Termux c'est pour Android, non ? Je n'ai pas précisé c'est vrai, mais je cherche la solution pour un poste de travail (je navigue très peu depuis mon smartphone, je suis un PCéiste convaincu).

Pour DuckDuckGo je vais regarder la syntaxe de recherche, mais pour l'utiliser de temps à autres, je ne suis pas super convaincu de la pertinence et surtout l'abondance des résultats.

Pour G..gle : voui je sais qu'on peut utiliser un langage évolué pour faire des recherches, mais ça sert à quoi si le moindre mot est modifiable (je rappelle qu'historiquement mettre des guillemets doubles "..." assurait de mettre en littéral donc NON interprétable, apparemment ce n'est pas le cas maintenant).

Ecosia : j'aime beaucoup le projet, mais malheureusement tombe trop souvent en déni de service et l'abondance des résultats n'est pas là

Apparemment lxquick est utilisé par StartPage. Pour le moment je n'ai pas creusé ce moteur qui ne m'a pas donné directement satisfaction, mais comme certains lui prêtent des qualités, ça me donne envie de creuser.
 


Cela dit, ce besoin CLI étant plus qu'à la marge, les développements se concentrent sur les interfaces Web et il est, à mon sens, plus puissant de maîtriser les outils avancés de son moteur de recherche Web favori que d'apprendre un nouveau process en CLI. Ça ira même plus vite.

Pas forcément d'accord, car ce qui passe par un CLI se scripte, ce qui se scripte permet d'utiliser un langage que tu maîtrises (dans mon cas bash et un peu python). J'ai déjà un peu testé le navigateur CLI w3m sans trop l'apprendre. Ma petite expérience m'a montré que les requêtes se font principalement par GET (dans l'URL). Si tu maîtrises le langage de requête du moteur, il te suffit d'écrire l'URL + arguments GET et peut être même on peut s'affranchir d'un navigateur en CLI pour exécuter et récupérer le résultat par une commande wget ou curl. Mais ça impliquerait un moteur ou meta-moteur qui utilise un langage évolué et permet de faire des requêtes par GET.

A creuser ...

0
luckydu43 Messages postés 4251 Date d'inscription   Statut Membre Dernière intervention   1 054 > lenainjaune Messages postés 715 Date d'inscription   Statut Contributeur Dernière intervention  
 

Au plaisir :-)

  • "Termux c'est pour Android, non ? Je n'ai pas précisé c'est vrai, mais je cherche la solution pour un poste de travail"

Le premier lien est la doc gitlab du projet, à la marge ça tourne sous n'importe quel terminal Unix. Si c'est pas le cas c'est de la configuration (version des dépendances, variables d'environnement par ex) qui est à ajuster. Sous Windows, MinGW est une excellente alternative pour avoir un bash-alike.

Si tu arrives à scripter une recherche très précise plus vite que la même recherche dans le navigateur, dis-moi comment !

Mettons de côté la vitesse, à lire la doc tu n'auras pas plus de filtres en CLI que depuis le navigateur. Voici ici celle de Google  (lien), à moins que la doc API soit largement incomplète, tu fais mieux depuis le Web (donc autant puisque ça part en GET à la fin).

  • "Mais ça impliquerait un moteur ou meta-moteur qui utilise un langage évolué et permet de faire des requêtes par GET"

C'est LITTÉRALEMENT le job des opérateurs de recherche : ils fournissent un langage évolué pour faire des requêtes de recherche. Habituellement par une interface Web simplifiée mais tu peux intercepter la requête, la glisser dans ton script, la modifier et donc faire cette même recherche depuis un client REST.

La CLI est une excellente interface, j'ai à l'instant même, parmi tous mes terminaux ouverts, 3 visibles dans les écrans ;-) J'avais même mon téléphone Android en interface console intégrale soit bien plus qu'une simple session Termux et j'en suis revenu. Peut-être que j'y retournerai mais côté vitesse, l'interface à boutons en single page est imbattable. Il en est de même pour la saisie de recherche sur Google en ayant les bons keywords en tête.

Pour ce qui est de tes problèmes listés, je ne les reproduis pas. J'essaie d'utiliser le plus de keywords possible, si je connais la date de parution j'affine avec les options de recherche par date.

Objectivement DuckDuckGo m'est le plus pertinent en informatique aujourd'hui. Bing est mon daily-driver sur le pc du taf et ça marche très bien aussi.

Je n'utilise Google que pour les pages référencées récemment (dont les actualités) et les images.

  • "Pour G..gle : voui je sais qu'on peut utiliser un langage évolué pour faire des recherches, mais ça sert à quoi si le moindre mot est modifiable (je rappelle qu'historiquement mettre des guillemets doubles "..." assurait de mettre en littéral donc NON interprétable, apparemment ce n'est pas le cas maintenant)."

Note bien que CLI ou interface Web, c'est le même serveur qui répond avec les mêmes "problèmes". Google ou pas.

0
lenainjaune Messages postés 715 Date d'inscription   Statut Contributeur Dernière intervention   62 > luckydu43 Messages postés 4251 Date d'inscription   Statut Membre Dernière intervention  
 
  • "Termux c'est pour Android, non ? ... je cherche la solution pour un poste de travail"

Le premier lien est la doc gitlab du projet, à la marge ça tourne sous n'importe quel terminal Unix.

Oui, je me doute que c'est installable sous Linux (dans mon cas Debian) puisque système Android, mais je n'ai pas trouvé de procédure pour accomplir cette tâche (aussi ce fil semble indiquer que ce n'est pas aussi simple que ce que j'aurais souhaité et je ne veux pas y passer trop de temps) ; le truc amusant c'est que pour le coup, on trouve pleins de procédures pour installer Debian DANS termux (et NON termux dans Debian) ...

Si tu arrives à scripter une recherche très précise plus vite que la même recherche dans le navigateur, dis-moi comment !

...
tu n'auras pas plus de filtres en CLI que depuis le navigateur
...
tu fais mieux depuis le Web (donc autant puisque ça part en GET à la fin)
...
Note bien que CLI ou interface Web, c'est le même serveur qui répond avec les mêmes "problèmes". Google ou pas.

Je pense que je me suis mal exprimé ... Je ne pense pas que scripter augmenterait la rapidité de mise en place mais augmenterait l'ergonomie (si j'en juge des pages de recherche avancées).

Je suis retourné voir la recherche avancée de G..gle avec tous les mots suivants linux hidden folder attributes et avec ce mot ou cette expression exacte "mcopy" "preserve" qui a été converti en cette URL : https://www.google.com/search?as_q=linux+hidden+folder+attributes&as_epq=%26%2334%3Bmcopy%26%2334%3B+%26%2334%3Bpreserve%26%2334%3B&as_oq=&as_eq=&as_nlo=&as_nhi=&lr=&cr=&as_qdr=all&as_sitesearch=&as_occt=any&as_filetype=&tbs=

=> pas mieux ...

Toutefois, j'ai vu dans la syntaxe de DuckDuckGo (le lien que tu m'as fourni) :

"cats and dogs" Results for exact term "cats and dogs". If no or few results are found, we'll try to show related results.

donc que si une requête ne retournerait pas assez de résultat, elle retournerait des résultats approximatifs

Ce qui m'amène à la supposition que si les résultats ne sont pas assez conformes, c'est peut-être simplement parce qu'ils n'existent pas.

Donc j'en reviens à mon idée de meta-moteur pour maximiser les résultats ...

---

Objectivement DuckDuckGo m'est le plus pertinent en informatique aujourd'hui.

OK je vais essayer d'apprendre à mieux utiliser DuckDuckGo.

---

Aussi ...

depuis un client REST
...
Voici ici celle de Google  (lien)

Je ne suis pas sûr de ce qu'est un client REST et surtout de son rôle ... Envoyer des requêtes HTTP(S) ? Une requête peut-elle être initiée depuis un client telnet ?

En m'inspirant de cette page, je viens de tester cette URL dans mon navigateur : https://www.googleapis.com/customsearch/v1?exactTerms=preserve&q=linux+hidden+folder+attributes

Il me retourne : error 403 "Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API."

=> de ce que je comprends il lui faut une clé liée à une identité G..gle (connexion au compte, etc.), mais bon 1) je suis rarement connecté à un tel compte et 2) je ne comprends pas le caractère "nécessaire" d'avoir une clé d'API car quand je fais une recherche "standard" je n'ai nul besoin de m'authentifier avec un quelconque ID ...

0
mamiemando Messages postés 33766 Date d'inscription   Statut Modérateur Dernière intervention   7 878
 

Bonjour,

Alors que je cherchais une solution pour copier depuis un système Linux un dossier depuis et vers un système de fichier NTFS, en préservant les droits, propriétaires et attributs (date-heure création/modification, caché, archive, etc.), j'ai trouvé ce qui semblait être mon bonheur : mcopy du paquetage mtools

Selon ton cas d'usage (par exemple archiver des fichiers), une solution de contournement est de faire une archive tar.gz (voir ici). 

Existe t-il un moteur de recherche (pas forcément depuis un navigateur, même en CLI je suis preneur), qui cherche strictement ce que je lui demande (et non qui interprète/suppose), qui permet de faire une recherche fine à base de conditions, idéalement avec la possibilité d'utiliser des expressions rationnelles et cerise sur le gâteau qui conserve mes requêtes pour pouvoir les améliorer ou les conserver ?

Concernant la recherche elle-même, selon le moteur il existe des moyens de raffiner sa recherche à l'aide de syntaxe dédiées (voir ici pour google search). Dans ton cas, je pense que l'une des difficultés est simplement que dans ton cas tu cherches quelque chose qui sauf erreur de ma part, n'est pas faisable (voir *).

Ou bien est-ce beaucoup trop demander ?

Eh bien... oui car quand un moteur de recherche te trouve ce qu'il juge le meilleur et souvent il trouvera toujours des résultats approchants (voir **). Je sais que c'est contraire à ce que tu veux, mais dans l'absolu, c'est plutôt un bon comportement car parfois on ne sait toujours exactement ce qu'on cherche, mais quand c'est le cas, ce peut être assez frustrant (et finalement, le problème serait le même avec une IA générative).

(*) Il faut bien comprendre qu'en soi, c'est qu'un système de fichiers (ext4, NTFS, FAT32) utilise des inodes (descripteurs de fichiers) différents, ce qui entraîne des possibilités différentes (longueur du nom du fichiers et caractères autorisés, taille maximale du fichier, notion de droits, possibilité de faire des liens symboliques, etc.). Si on regarde un inode ext4, l'utilisateur (resp. groupe) propriétaire est mémorisé à l'aide de son UID (resp. GID) et donc l'utilisateur 1000 n'est pas forcément le même d'un Linux à l'autre. C'est précisément à cause de ces limitations qu'installer Linux (ou un logiciel Linux) sur un système de fichiers non prévu à cet effet est une mauvaise idée. On pourrait alors se demander pourquoi on voit des droits "Linux" sur des systèmes de fichiers "Windows" quand on est sous Linux. C'est simplement que ces droits sont affublés par Linux au moment de monter le système de fichiers Windows (NTFS, FAT32) ; ils ne sont pas inhérents au système de fichiers lui-même.

(**) Si on omet les opérateurs que je mentionnais, l'algorithme au cœur d'un moteur de recherche (par exemple PageRank) ne sait pas si une page parle exactement de ce que tu veux ou pas. Il se contente de calculer des poids qui lui laisse penser que cette page est plus ou moins pertinente et te retourne les meilleurs résultats trouver. Vérifier finement que chaque résultat concorde effectivement avec ta recherche serait non seulement techniquement difficile et probablement coûteux sur le plan énergétique. Et vu l'impact environnemental croissant du numérique (notamment avec l'avènement de l'IA), je pense pas que ce serait une bonne chose.

Bonne chance

0
lenainjaune Messages postés 715 Date d'inscription   Statut Contributeur Dernière intervention   62
 

Coucou mamiemando :D

Oui tu as raison, la recherche approfondie à base d'expressions rationnelles, n'est pas l'idéal pour aller vers la sobriété énergétique ...

Du coup, comme la recherche se base sur du texte, ça m'a inspiré une idée. En CLI (ex : wget ou navigateur w3m) récupérer les contenus "texte" des pages des résultats (je peux limiter par exemple à 100), sans les ressources coûteuses, telles que les images, audio, vidéos, flux, BLOB, etc. (j'ai déjà fait ça une fois, il faudrait que je retrouve la méthode). Comme ça il me suffirait d'exécuter la requête sur un moteur et de faire ma recherche approfondie sur les fichiers résultats en local et ainsi remonter les pages qui correspondent à ma recherche. Dans cette perspective, je peux même imaginer agréger sur plusieurs moteurs pour maximiser les retours.

Tu en penses quoi ? Me suis-je emporté ou ça te semble faisable ?

Note : pour la copie depuis et vers un même système de fichiers NTFS, je vais creuser ta solution, mais je ne pense pas que tar permette de conserver les attributs/propriétés tels que si fichier caché (au sens Windows hein), jonctions, etc. L'objectif final que je caresse est de permettre une copie depuis Linux comme robocopy de Windows (mais là je rêve peut être un peu pour le coup ...)

0
mamiemando Messages postés 33766 Date d'inscription   Statut Modérateur Dernière intervention   7 878 > lenainjaune Messages postés 715 Date d'inscription   Statut Contributeur Dernière intervention  
 

Hello,

Oui tu as raison, la recherche approfondie à base d'expressions rationnelles, n'est pas l'idéal pour aller vers la sobriété énergétique ...

Attention ne confonds pas expression rationelles plutôt très efficaces et qui sont au cœur d'outil comme grep (Global Regular Expression Print), très efficaces si on les utilise à bon escient. En effet, ce genre d'outils repose  sur un algorithme polynomial (voir algorithme d'Aho Corasick). Les LLMs (Large Language Models) nécessitent bien plus des calculs bien plus intenses. Et je ne parle pas du fait qu'il faut aussi souvent beaucoup de matériel dédié, donc consommateur en terres rares... Souvent ils tournent dans des datacenters qui consomment beaucoup d'eau pour les refroidir. Bref, on n'est pas dans le "frugal" !

Du coup, comme la recherche se base sur du texte, ça m'a inspiré une idée. En CLI

Oui, wget ou curl sont des manières de récupérer une page sans tous les médias qu'ils contiennent. Ceci dit le coût énergétique d'un transfert de fichier est de la forme (en gros) A.x+B où x est la taille du fichier avec un B énorme et un A tout petit. Voir cette présentation et ce white paper.

  • Dit autrement, c'est plus l'infrastructure elle-même (les appareils, les mettre sous tension) que ce qui en est fait (transférer des données) qui a un impact environnemental.
  • Mais comme l'explique aussi cette présentation, ça ne veut pas dire qu'il faut pomper à fond les ballons : un acroissement des usages provoque un acroissement de l'infrastructure... et inversement. Voir aussi le paradoxe de Jevons.

Tu en penses quoi ? Me suis-je emporté ou ça te semble faisable ?

Si tu recherches du texte sur une page web, clairement il n'y a aucune raison de télécharger les médias (vidéos, images, sons...), cela dégrade les performances inutilement.

tar permette de conserver les attributs/propriétés tels que si fichier caché (au sens Windows hein), jonctions, etc. L'objectif final que je caresse est de permettre une copie depuis Linux comme robocopy de Windows (mais là je rêve peut être un peu pour le coup ...)

Et pourtant, c'est bien le cas. Voici une expérience qui le met en évidence.

Soit un dossier toto/ qui contient deux fichiers (mando et root) appartenant respectivement aux utilisateurs mando et root.

(mando@velvet) (~) $ ls -l toto
total 0
-rw-rw-r-- 1 mando mando 0 16 avril 19:13 mando
-rw-rw-r-- 1 root  root  0 16 avril 19:13 root

Compressons avec tar ce dossier et déplaçons le vers une partition NTFS :

(mando@velvet) (~) $ sudo fdisk -l
Disque /dev/nvme0n1 : 476,94 GiB, 512110190592 octets, 1000215216 secteurs
Modèle de disque : SAMSUNG MZVLW512HMJP-00000              
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : gpt
Identifiant de disque : CCA34840-4481-48C5-B59B-5DA342615950

Périphérique       Début        Fin  Secteurs Taille Type
/dev/nvme0n1p1      2048    1087487   1085440   530M Environnement de récupération Windows
/dev/nvme0n1p2   1087488    1619967    532480   260M Système EFI
/dev/nvme0n1p3   1619968    1882111    262144   128M Réservé Microsoft
/dev/nvme0n1p4   1882112  281618431 279736320 133,4G Données de base Microsoft
/dev/nvme0n1p5 998418432 1000212479   1794048   876M Environnement de récupération Windows
/dev/nvme0n1p6 281618432  289431551   7813120   3,7G Partition d'échange Linux
/dev/nvme0n1p7 289431552  387088383  97656832  46,6G Système de fichiers Linux
/dev/nvme0n1p8 387088384  998418431 611330048 291,5G Système de fichiers Linux

(mando@velvet) (~) $ sudo mount /dev/nvme0n1p4 /media/mando/

(mando@velvet) (~) $ mv toto.tgz /media/mando/

À présent, rappatrions ce fichier toto.tgz dans le home (partition ext4) et voyons si les droits ont été perdus :

(mando@velvet) (~) $ sudo tar --same-owner -xzvf toto.tgz 
toto/
toto/mando
toto/root

(mando@velvet) (~) $ ls -l toto
total 0
-rw-rw-r-- 1 mando mando 0 16 avril 19:13 mando
-rw-rw-r-- 1 root  root  0 16 avril 19:13 root

Comme le vois, les droits ont été conservés dans la manipulation, preuve que les informations de l'inode (en l'occurence l'UID et le GID propriétaires) ont été sauvés dans l'archive. Si tu utilises des choses plus compliquées, par exemple des droits ACL, je ne sais pas si ça marcherait.

L'objectif final que je caresse est de permettre une copie depuis Linux comme robocopy de Windows (mais là je rêve peut être un peu pour le coup ...)

Je ne connais pas robocopy mais de ce que j'en vois c'est une manière de faire une archive. Donc sauf mauvaise compréhension de ma part ou besoin particulier de ta part (ACL...) j'ai l'impression que tar suffit.

Bonne chance

0