2 réponses
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.
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
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 ...)
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
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.
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 ...
Au plaisir :-)
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).
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.
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.
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) ...
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) :
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 ...
---
OK je vais essayer d'apprendre à mieux utiliser DuckDuckGo.
---
Aussi ...
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 ...