Clone sur clé USB plus petite [RESOLU]

Le système préconisé par la Fondation Raspberry Pi

Modérateurs : Francois, maxty01

Répondre
Avatar du membre
tioker
Messages : 42
Enregistré le : jeu. 9 févr. 2017 11:30
Localisation : Anjou...feu

Clone sur clé USB plus petite [RESOLU]

Message par tioker » mer. 24 juil. 2024 11:50

Bonjour
J'ai un PI OS Lite sur clé USB 64 Go qui tourne un serveur Web sur Raspberry PI 4 1Go.
Je veux dupliquer la clé pour en faire une sauvegarde.
Je n'ai que du Linux à la maison. Le PI OS est installé sans bureau (Lite).
La clé d'origine est très peu remplie; ainsi, je sais faire:
- dupliquer la clé sur une de plus grande capacité par la commande

Code : Tout sélectionner

sudo dd if=/dev/sdb of=/dev/sdc bs=4M status=progress
- réduire la taille de la partition rootfs sur la clé de sauvegarde avec l'utilitaire Linux disque (gnome-disk-utility). Une fois la partition réduite, le PI 4 démarre bien dessus même si j'ai réduit rootfs à 10 GO.

Mais quand je veux dupliquer la clé de 128 Go dont 112 sont disponibles sur une 16 ou 32, la même commande dd me dit que l'espace est insuffisant (mais seulement après avoir copié les partitions utiles) et la clé de démarre pas.
D'où ma question:

Comment dupliquer sur Linux une clé USB sur une plus petite même si la taille des partitions est inférieure à la capacité de la clé de destination ?

Merci de vos retours.

PS: j'ai essayé rpi-clone sans plus de succès (mais les résultats me paraissent bizarres, surtout sur la durée...): log:

Code : Tout sélectionner

sudo rpi-clone sdb

Booted disk: sda 61,5GB                    Destination disk: sdb 31,2GB
---------------------------------------------------------------------------
Part               Size  FS  Label           Part     Size  FS    Label                 
1 /boot/firmware   512   0M  fat32           --      1       512  0M     fat32  --      
2 root              56   8G  ext4            rootfs  2        10  0G     ext4   rootfs  
---------------------------------------------------------------------------
== SYNC sda file systems to sdb ==
/boot/firmware        (63,0M used)   : SYNC to sdb1 (512,0M size)
/                     (3,1G used)    : SYNC to sdb2 (10,0G size)
---------------------------------------------------------------------------
Run setup script       : no.
Verbose mode           : no.
-----------------------:

Ok to proceed with the clone?  (yes/no): yes

Syncing file systems (can take a long time)
Syncing mounted partitions:
  Mounting /dev/sdb2 on /mnt/clone
mount: (hint) your fstab has been modified, but systemd still uses
       the old version; use 'systemctl daemon-reload' to reload.
  => rsync // /mnt/clone with-root-excludes ...
  Mounting /dev/sdb1 on /mnt/clone/boot/firmware
mount: (hint) your fstab has been modified, but systemd still uses
       the old version; use 'systemctl daemon-reload' to reload.
  => rsync /boot/firmware/ /mnt/clone/boot/firmware  ...

Editing /mnt/clone/etc/fstab PARTUUID to use 5bd1c06f
===============================
Done with clone to /dev/sdb
   Start - 23:04:25    End - 23:06:38    Elapsed Time - 2:13

Cloned partitions are mounted on /mnt/clone for inspection or customizing. 

Hit Enter when ready to unmount the /dev/sdb partitions ...
  unmounting /mnt/clone/boot/firmware
  unmounting /mnt/clone
===============================
Modifié en dernier par tioker le ven. 26 juil. 2024 17:40, modifié 1 fois.

Avatar du membre
tioker
Messages : 42
Enregistré le : jeu. 9 févr. 2017 11:30
Localisation : Anjou...feu

Re: Clone sur clé USB plus petite

Message par tioker » ven. 26 juil. 2024 16:43

Bonjour,

Je me réponds à moi-même.

Rappels:
- j'ai une clé 64Go qui tourne Raspbian Lite.
- je n'ai pas de bureau (serveur web)

Méthode:
- sur un PC Linux (pour moi), copier la clé USB sur laquelle il y a Raspbian sur une autre clé USB au moins aussi grande ¹

Code : Tout sélectionner

sudo dd if=/dev/sdb of=/dev/sdc bs=4M status=progress
- sur cette nouvelle clé (128Go pour moi), utiliser Gparted pour réduire la partition rootfs; je l'ai mise à 9go
- avec ce même Gparted, sur une nouvelle clé (16go pour moi), formater les partitions à l'identique (format et taille) que la clé 128 (bien respecter l'espace disponible au début s'il y en a un). Sur la partition fat32, mettre le drapeau 'lba'.
- sur le terminal, déterminer le noms des partitions par un ²

Code : Tout sélectionner

ls -lah /dev/sd*
- ensuite, copier partition par partition de la 128 à la 16. Commande pour moi

Code : Tout sélectionner

sudo dd if=/dev/sda1 of=/dev/sdc1 bs=4M status=progress
sudo dd if=/dev/sda2 of=/dev/sdc2 bs=4M status=progress
- une fois copiées, vérifier sous Gparted qu'il n'y a pas de warning; s'il y en a un, faire sous Gparted un partition/vérifier

Et là, normalement, votre petite clé est fonctionnelle.
Ces opérations, en passant par la clé 128, m'évitent d'avoir à réduire la partition rootfs sur la clé d'origine. Et accessoirement ça m'évite d'utiliser une clé de grande capacité pour une sauvegarde qui aujourd'hui reste petite en volume.

Voilà, je mettrai en Résolu le temps de vérifier mais pour moi c'est bon.
Et cette méthode permet de réduire la taille d'une clé USB quand on s'aperçois que Raspbian prend peu de place.

Cordialement.

¹ au moins plus grande car deux clés USB de même capacité n'ont pas forcément la même taille utile
² par sécurité, on peut faire cette commande après avoir introduit les clés les unes après les autres pour bien les distinguer

Artemus24
Raspinaute
Messages : 1089
Enregistré le : ven. 15 sept. 2017 19:15

Re: Clone sur clé USB plus petite [RESOLU]

Message par Artemus24 » lun. 29 juil. 2024 02:20

Salut Tioker.

Pour effectuer mes sauvegardes, j'utilise Acronis aussi bien pour Windows 10 & 11, Debian et Raspberry Pi OS.
Cela permet de compresser le contenu afin de le réduire au minimum.
Pour mon disque Maxtor, j'ai les partitions suivantes :
--> Boot
--> RootFS
--> Warehouse (c'est là que j'entrepose toutes mes applications).
--> share (pour Samba)
--> swap (fichier d'échange)

Si j'ai besoin de récupérer juste une partition et non la totalité de la sauvegarde, je peux le faire en écrasant la partition existante.
A priori, j'utilise toujours la même capacité :
--> mon disque Maxtor à 500Go (BookWorm 32 Bits).
--> mon disque Western digital green à 120Go (BookWorm 64 bits).
--> la plupart de mes cartes micro SD sont en 8Go.
--> Sauf celle contenant Boot Server / PXE qui est à 64Go.

Il met arrivé de compresser une partition afin de la réduire en taille car j'avais vu trop grand.
Installation de l'utilitaire :

Code : Tout sélectionner

sudo apt-get -y --reinstall install e2fsprogs
Vérifications des blocs :

Code : Tout sélectionner

e2fsck -c /dev/sda2
Compression de la partition à son minimum :

Code : Tout sélectionner

e2fsck -f /dev/sda2
puis :

Code : Tout sélectionner

resize2fs -M /dev/sda2
On peut indiquer une taille un peu plus grande que le minimum, par exemple 256Mo :

Code : Tout sélectionner

resize2fs /dev/sda2 256m
Tu peux après réduire la taille de la partition stockée sur le disque en utilisant "fdisk" :
--> fdisk /dev/sda
tu te positionnes sur la partition qui dans mon exemple est /dev/sda2
--> d (pour delete).
--> 2
Cela ne détruit pas le contenu mais juste les caractéristiques de la partition
--> n (add a new partition)
--> p
--> 2 (pour /dev/sta2)
C'est là où c'est un peu compliqué, il faut indiquer les :
--> first sector
et
--> end sector
correspondant à la nouvelle taille de ta partition.
Je l'ai déjà fait et cela ne détruit rien du contenu de la partition, à la condition comme dans mon exemple, que tu respectes les 256Mo minimum.
Normalement, en faisant "p" (pour print), tu dois obtenir la nouvelle taille de ta partition.
Après, tu n'as plus qu'à utiliser la commande "dd" pour la recopier, et tu peux même compresser la sauvegarde :

Code : Tout sélectionner

dd if/dev/sda2 bs=512 | bzip2 -c > /root/sda2.img.bz2
et pour la restauration :

Code : Tout sélectionner

bunzip2 -dc sda2.img.bz2 | dd of=/dev/sda2 bs=512
Et enfin :

Code : Tout sélectionner

resize2fs /dev/sda2
sync
afin d'étendre son contenu à la taille de la partition.
Pour terminer, refaire une vérification :

Code : Tout sélectionner

e2fsck -f /dev/sda2
@+
RPI4B/8GB + Argon FanHAt
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32

Répondre

Retourner vers « Raspbian »