Deplacement d'un ensemble de fichier sur clé usb

Bonjour,

J’ai actuellement un mini-pc utilisé pour la commande d’un robot.
Ce PC commence a dater un petit peu et n’a que 2Go de disque dur, “grace” à une carte Compact Flash.

Je voulais donc rajouter une clé usb qui me servirait de disque dur externe et y deplacer les dossiers non critiques et volumineux à savoir

/lib
/usr
/var
/home

Donc ce projet souleve quelques questions :

Puis je monter plusieurs dossier sur une partition (sachant qu’il me semble que normalement c’est une partition => un dossier). Peut etre en utilisant des liens symbolique ou physique ?

Ma clé usb sera t-elle toujours monté au meme endroit, meme s’il y a plusieurs peripheriques usb branchés ?

Pensez que cela soit judicieux ?

Pensez vous sinon que je pourrais changer ma carte compact flash par une adapatateur compact flash + micro SD ?

bonsoir,
sous réserve:
dd if=/lib of=/dev/sdengénéral c bs=4096; sync
on trasvase
on recommence pour un autre répertoire
A+
JB1

[quote=“draziel”]…Puis je monter plusieurs dossier sur une partition …[/quote]Oui : Tu peux créer autant de dossiers que tu veux dans une partition.

[quote=“draziel”]… Ma clé usb sera t-elle toujours monté au meme endroit, meme s’il y a plusieurs peripheriques usb branchés ? …[/quote]Non, le périphérique correspondant à ta clef dans le dossier “/dev” du système fichier racine dépendra de la règle “udev” que tu pourrais définir,
mais ça n’a pas d’importance, car je pense que tu confonds périphérique et partition.

La partition créee sur ta clef usb peut être montée automatiquement par les renseignements que tu donnera dans le fichier “/etc/fstab”.
La partition y sera référencée par son UUID qu’il suffira de faire correspondre avec le point de mountage (dossier dans ton système de fichier racine) que tu voudra utiliser.
Le système démarre, détecte une clef, mounte le périphérique (dans “/dev”), détecte les partitions du périphérique et donc leur UUID, et utilise “/etc/fstab” pour mounter le système de fichier dans le point de mountage.
Si tu voulais avoir deux clefs (une de rechange ou avec un autre programme, et que tu voulais qu’elles soient interchangeables et mountées dans le même dossier, il faudrait qu’elles aient le même UUID.
voir:
isalo.org/wiki.debian-fr/Fstab
man blkid
man mount
man fstab
man hier

[quote=“draziel”]… Pensez vous sinon que je pourrais changer ma carte compact flash par une adapatateur compact flash + micro SD …[/quote]Tu peux plutôt utiliser directement un adaptateur (2€) USB -> Micro SD card, plus petit, plus léger, avec moins de fils à connecter (4 pour USB), et dont le boîtier et connecteur USB pourrait facilement être démonté pour prendre moins de place.

Si tu pouvais m’en dire plus (références, liens etc) sur ton mini PC, je pourrais aussi t’aider (je suis un électronicien cinglé depuis plus de 30 ans)

Merci.

@JB1
Ok, on a copié les fichiers (premiere etape), mais comment dire a linux que maintenant le dossier /lib devra etre lu sur /mnt/usb/lib par exemple ? Je fais un lien symbolique/physique ?

@MicP
Meme probleme, dans mes souvenirs les partitions sont définis via le fichier fstab qui défini un périphérique ou une partition et qui lui associe un point de montage. Je lui associe un point de montage puis je fais un lien symbolique pareil que pour JB1 ?

Tu déplaces /var, /home, /usr si tu le veux.
Tu NE déplaces PAS /lib sous peine de saboter ton système.

$ man hier

/lib This directory should hold those shared libraries that are nec‐ essary to boot the system and to run the commands in the root filesystem.
Ne pas désolidariser /lib de la racine, il est nécessaire au démarrage.

Pour ce qui va suivre, il te faudra une deuxième clef usb préparée avec une distribution “Live” genre “parted” ou “gparted” => moins de 300 MiB.

Tu créé une partition sur l’autre clef (environ 5 GiB devraient largement suffire) et tu la formate avec le même système de fichiers que celui du système sur lequel est le dossier "/lib"
Tu copie dans cette partition créée tous les les fichiers et sous-dossiers contenus dans le dossier “/lib” de ton système.

Dans le fichier “/etc/fstab”, tu associe l’UUID de la partition de la clef que tu as créée au point de mountage (dossier) “/lib” de ton système de fichiers.
Jusque là, la clef n’est pas mountée tant que tu ne redémarre pas, ou lance un “mount -a”, ou mounte la clef directement sur “/lib”.

Une fois fait, tu boote à partir de la clef que tu avait préparée avec une distribution “Live” .
Une fois le système booté depuis la clef “Live”, tu mounte la partition racine du système à modifier et tu ajoute à la racine un dossier "/tmplib"
Puis tu déplace tous les fichiers et sous-dossiers de “/lib” dans le dossier “/tmplib” que tu viens de créer plus haut.
Maintenant, tu peux effacer tous les fichiers et sous-dossiers du dossier “/lib”, mais garde le dossier “/lib” vidé (pour le point de mountage de l’autre clef).

Maintenant, le dossier “/lib” est vide et pourra être peuplé au prochain démarrage du système par les fichiers et sous-dossiers qui sont dans la partition de la clef USB.
Tu peux éteindre le système et enlever la clef qui a servit à démarrer en “Live”.

Il ne te reste qu’à re-démarrer le système avec la clef préparée pour “/lib” connectée, pour que les fichiers de la clef soient accessibles dans le dossier “/lib” du système.

Bien sûr, à partir de maintenant, il faudra toujours que la clef qui contient le dossier “/lib” soit toujours connectée pour que le système puisse démarrer et fonctionner normalement.

Dès que ton système a redémarré sans problèmes, tu pourra en profiter pour supprimer le dossier “/tmplib” et tout ce qu’il contient : ça te fera autant de place disponible.

Merci pour les réponses,

Je pense que finalement je ne vais pas déplacer lib (en tout cas pour l’instant)

Et pour mettre plusieurs dossier sur la même partition, je fais comment finalement ? Comme je l’avais dis avec des liens symboliques ?
Ou je “monte” plusieurs fois la même partition avec des points d’ancrage différents ?

Je confirme que ça fonctionne très bien, en montant par exemple ta clé sur /media/usb-système et en créant des liens symboliques avec une commande du type :

(pas besoin dans ce cas de modifier ton fstab).

Ça par contre ça me paraît hautement foireux.

C’est bien ce que je pensais pour le coup des partitions mais les réponses n’etaient pas clairs…

Par contre si je mets le point de montage de ma clé usb dans le fstab, pensez vous qu’elle sera reconnue au demarrage (ie le systeme pourra monter ma clé usb lorsque le systeme lira le fichier fstab ?)

Sinon je testerais ça mardi prochain…
Je vous tiens au courant !

:smiley:

J’ai un probleme pour supprimer le repertoir “home” : dossier en cours d’utilisation

Faut-il que je passe pas un “liveOS” pour faire mes modifs (redirection de /home /usr /var ) ?

Si seul root est connecté, tu peux démonter /home avec umount.

Pour /usr par contre, il faudra passer par un LiveCD/USB (à moins que l’option “single” passée à GRUB soit suffisante pour ne monter que la racine, je n’ai jamais pensé à regarder ça).

Tu peux le faire au moyen d’un live-cd ou d’une autre installation linux sur cette machine.
Tu peux aussi opérer sur le système démarré.

Qui utilise /home ? Les utilisateurs aux sessions ouvertes qui ont leurs $HOME en /home/$USER.
Quitte les sessions des utilisateurs et travaille sous le compte root.Il ne sera pas affecté par l’absence (temporaire) de /home.
Il n’empechera pas de renommer /home. Le $HOME de root est /root.

ctrl+f2
login : root
mot de passe de root

Tu renommes l’ancien /home.

mv /home /ancien-home

Tu recrées le point de montage vide /home

mkdir /home

Tu montes la partition qui tiendra lieu de nouveau /home en /home.

mount /dev/sd?? /home

Tu copies les fichiers de /ancien-home vers /home en respectant les permissions.

cp -rp /ancien_home/* /home

Tu édites /etc/fstab pour rendre le montage /home durable.

Pour /usr, idem, tuer session X, tout programme qui mobiliserait /usr.

whereis rm

whereis cp

whereis mv

whereis rmdir

whereis mkdir

Toutes ces commandes sont en /bin , rien de /usr (/usr/bin, /usr/sbin).

Ok tant qu’a faire je vais passer par un liveUSB pour les deux !

Finalement je n’ai eu besoin de passer par un liveUSB pour aucun :confused: (j’avais oublié que le home correspondait a une partition monté :s)
J’ai fait un telinit 1 qui semblait regler le probleme de tout les autres dossiers

Cependant ma clé usb ne se monte pas toute seule :s

Pourtant j’ai mis dans mon fstab un

UUID=“xxx” /mnt/usb1 vfat defaults 0 0

J’ai essayé avec

UUID=“xxx” /mnt/usb1 vfat defaults 0 2

Mais ca ne veut pas se monter au demarrage.
Pensez vous que c’est le vfat qu’il n’aime pas ?

/usr , /var et /home sur vfat ? Oublie ça.

Vfat n’est pas un système de fichiers utilisable pour ces points de montage à cause des attributs, des permissions, des appartenances, des liens symboliques … qui ne sont pas dans les cordes de ce système de fichiers.
On utilise vfat pour du simple stockage plat, pas pour des fichiers système qui demandent ces spécificités.
Il serait malgré tout possible d’y arriver avec des fichiers enchassés stockés en vfat montés en loop. Personne ne te recommandera cette solution alors qu’il est plus simple d’utiliser des systèmes de fichiers compatibles comme ext4, xfs, jfs…

Ok j’essaierai cette solution

[quote=“draziel”]Pourtant j’ai mis dans mon fstab un

UUID=“xxx” /mnt/usb1 vfat defaults 0 0

J’ai essayé avec

UUID=“xxx” /mnt/usb1 vfat defaults 0 2[/quote]
Il faut que tu remplaces “defaults” par “auto” si tu veux que ta clé soit montée au démarrage du système.

D’apres les docs trouvés un peu partout sur le net :

Options par défaut ⇒ rw, suid, dev, exec, auto, nouser, async.

Tu as raison, c’est moi qui me suis embrouillé.

Le formatage en ext2 (systeme utilisé par la racine) n’a rien changé.

Au démarrage j’obtiens en forcant le montage au demarrage (“pass” à “2”)

checking file systems… fsck from util-linux-ng-2.17.2
fsck.ext2 : unable to resolve ‘UUID=xxx’
fsck died with exit 8
(…)

La clé usb n’arrive pas a se monter au demarrage (montage bloquant que suis obligé de “sauter”) mais arrive a se monter par la suite avec un mount -a donc le UUID est bon.

Je seche :017