Lister tout le contenu d'un disque dur dans une table mysql
Fermé
xunil2003
Messages postés
766
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2024
-
14 janv. 2014 à 19:36
Utilisateur anonyme - 16 janv. 2014 à 12:40
Utilisateur anonyme - 16 janv. 2014 à 12:40
A voir également:
- Lister tout le contenu d'un disque dur dans une table mysql
- Cloner disque dur - Guide
- Defragmenter disque dur - Guide
- Table ascii - Guide
- Chkdsk disque dur externe - Guide
- Remplacer disque dur par ssd - Guide
3 réponses
mamiemando
Messages postés
33352
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
12 novembre 2024
7 804
Modifié par mamiemando le 15/01/2014 à 11:16
Modifié par mamiemando le 15/01/2014 à 11:16
Il faut que ton script shell construise une chaîne avec la bonne requête SQL. Ça devrait ressembler à quelque chose dans ce genre :
Ici je suppose que la colonne qui stocke le nom du fichier s'appelle "ma_colonne" et que la table "ma_table" a une seule colonne ou un index auto incrémenté. Adapte la requête SQL en fonction de la structure de ta table.
Tu notes que ni le login, ni l'host, ni le mot de passe n'apparaissent en clair dans le script. On fait cela pour éviter que des informations sensibles n'apparaissent en clair dans ce script, mais du coup il faut que ces informations soient définies dans le fichier
http://dev.mysql.com/doc/refman/5.0/fr/option-files.html
Note : pour voir certaines des possibilités offertes par ce fichier, tu peux aussi t'inspirer du contenu de
Puis attribue à ce fichier des droits restreints :
Bonne chance
#!/bin/bash table="ma_table" database="ma_base" mysql="mysql -D $database -e" folder="$HOME/Documents" for filename in $(find $folder -type f) do $mysql "'INSERT INTO $table (ma_colonne) VALUES ($filename)'" done exit 0
Ici je suppose que la colonne qui stocke le nom du fichier s'appelle "ma_colonne" et que la table "ma_table" a une seule colonne ou un index auto incrémenté. Adapte la requête SQL en fonction de la structure de ta table.
Tu notes que ni le login, ni l'host, ni le mot de passe n'apparaissent en clair dans le script. On fait cela pour éviter que des informations sensibles n'apparaissent en clair dans ce script, mais du coup il faut que ces informations soient définies dans le fichier
~/.my.cnf:
http://dev.mysql.com/doc/refman/5.0/fr/option-files.html
[client]
# Le mot de passe suivant sera envoyé par tous les clients standards MySQL
user = root
password = "my_password"
host = localhost
Note : pour voir certaines des possibilités offertes par ce fichier, tu peux aussi t'inspirer du contenu de
/etc/mysql/debian.cnf.
Puis attribue à ce fichier des droits restreints :
sudo chmod 700 ~/.my.cnf
Bonne chance
xunil2003
Messages postés
766
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2024
14
Modifié par xunil2003 le 16/01/2014 à 12:19
Modifié par xunil2003 le 16/01/2014 à 12:19
Bonjour
Oui il y avait bien un problème avec les noms des fichiers qui contiennent un ou des espaces.
J'ai fait un essai dans un fichier texte pour l'instant, ça marche impeccable
Merci.
Oui il y avait bien un problème avec les noms des fichiers qui contiennent un ou des espaces.
J'ai fait un essai dans un fichier texte pour l'instant, ça marche impeccable
startDir="/mnt/mediatheque"
echo "" > $HOME/Documents/mediatheque.txt
find "$startDir" -type f -print0 | while IFS="" read -d '' f; do echo "$f" >> $HOME/Documents/mediatheque.txt; done
Merci.
Utilisateur anonyme
Modifié par qqchquicommenceparQ le 16/01/2014 à 13:05
Modifié par qqchquicommenceparQ le 16/01/2014 à 13:05
ici, la boucle
whilene sert à rien :
find "$startDir" -type f -fprint $HOME/Documents/mediatheque.txtensuite, tu lis le fichier avec une boucle
while.
Modifié par qqchquicommenceparQ le 15/01/2014 à 11:23
la boucle pourrait s'avérer nocive si le nom d'un fichier contient un espace, ou autre caractère non imprimable.
en effet, la boucle va exécuter les commandes sur chaque mot que la substitution de commande va produire.
ou
mais je ne peux pas tester :(
ou
16 janv. 2014 à 01:45