Reinstallation d'une sauvegarde d'une partition dans un espace moindre !
Modérateur : Francois
Reinstallation d'une sauvegarde d'une partition dans un espace moindre !
Salut à tous.
Je me retrouve dans un cas de figure où j'aimerai récupérer la sauvegarde d'une de mes partitions Linux d'une taille de 20Go à placer dans une nouvelle partition que j'ai retaillé à 10Go.
Normalement, j'ai vu un peu trop grand et je considère que ma partition peut entrer en totalité dans les 10Go.
Sauf que c'est une sauvegarde par secteurs (dd) et que je ne connais pas l'astuce pour la réinstaller dans un espace moindre.
J'aimerai connaitre la méthode pour récupérer que les secteurs, pistes, cylindres qui sont utiles, en ligne de commande ?
@+
Je me retrouve dans un cas de figure où j'aimerai récupérer la sauvegarde d'une de mes partitions Linux d'une taille de 20Go à placer dans une nouvelle partition que j'ai retaillé à 10Go.
Normalement, j'ai vu un peu trop grand et je considère que ma partition peut entrer en totalité dans les 10Go.
Sauf que c'est une sauvegarde par secteurs (dd) et que je ne connais pas l'astuce pour la réinstaller dans un espace moindre.
J'aimerai connaitre la méthode pour récupérer que les secteurs, pistes, cylindres qui sont utiles, en ligne de commande ?
@+
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
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
-
- Raspinaute
- Messages : 969
- Enregistré le : dim. 28 déc. 2014 15:28
- Localisation : Le long de la côte, au dessus du pays des bigoudennes, aïe
Re: Reinstallation d'une sauvegarde d'une partition dans un espace moindre !
Bonjour Artemus24,
Il me semble que rpi-clone peut faire ça, voir $6) : https://github.com/billw2/rpi-clone
Il me semble que rpi-clone peut faire ça, voir $6) : https://github.com/billw2/rpi-clone
[Pour bien commencer] Pour les nouveaux acquéreurs de Raspberry Pi (index de liens utiles)
Awesome Raspberry Pi
Awesome Raspberry Pi
Re: Reinstallation d'une sauvegarde d'une partition dans un espace moindre !
Salut Dyox.
L'idée est de remonter tous les secteurs utiles dans la partie haute de la partition.
A proprement parlé, ce n'est pas une défragmentation car celle sous linux est différente de celle adoptée par windows.
Connaissant la taille en secteurs, effectuer la sauvegarde par la commande DD est chose facile.
Poursuivre avec une compression de la sauvegarde pour minimiser sa volumétrie.
--> https://www.framboise314.fr/clonez-la-c ... pberry-pi/
--> https://www.framboise314.fr/dupliquez-l ... rpi-clone/
Ce n'est pas un clonage que je cherche à faire, mais bien une réorganisation de l'espace d'occupation de la partition.
De plus, je désire obtenir une sauvegarde sous forme d'image (".img")
Par exemple :
Sauf que cela récupère aussi les secteurs inutilisés, c'est-à-dire la totalité de la partition.
En ce qui concerne la partition "vfat" celle nommée "/boot", je fais un copiage en utilisant la commande "cp -r partition_source partition_cible".
Sauf que je ne peux pas procéder de la même façon du fait que j'ai des fichiers qui sont interdits en accès.
@+
L'idée est de remonter tous les secteurs utiles dans la partie haute de la partition.
A proprement parlé, ce n'est pas une défragmentation car celle sous linux est différente de celle adoptée par windows.
Connaissant la taille en secteurs, effectuer la sauvegarde par la commande DD est chose facile.
Poursuivre avec une compression de la sauvegarde pour minimiser sa volumétrie.
--> https://www.framboise314.fr/clonez-la-c ... pberry-pi/
--> https://www.framboise314.fr/dupliquez-l ... rpi-clone/
Ce n'est pas un clonage que je cherche à faire, mais bien une réorganisation de l'espace d'occupation de la partition.
De plus, je désire obtenir une sauvegarde sous forme d'image (".img")
Par exemple :
Code : Tout sélectionner
dd if=/dev/sda2 bs=4K | bzip -c > /path/to/sda2.img.bz
En ce qui concerne la partition "vfat" celle nommée "/boot", je fais un copiage en utilisant la commande "cp -r partition_source partition_cible".
Sauf que je ne peux pas procéder de la même façon du fait que j'ai des fichiers qui sont interdits en accès.
@+
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
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
-
- Administrateur
- Messages : 3233
- Enregistré le : mer. 17 sept. 2014 18:12
- Localisation : Seine et Marne
Re: Reinstallation d'une sauvegarde d'une partition dans un espace moindre !
Bonjour,
Si tu fait un CP en tant que root, en ajoutant en plus des options récursive et compagnie, les options -a pour conserver les infos d'attribut, et -p pour conserver les droits, propriétaire et groupe, ça répond à ton besoin ?
Passionné de Raspberry, Arduino, ESP8266, ESP32, et objets connectés :
Spécial débutant, concevez vous-même votre domotique DIY : https://www.youtube.com/c/DomoticDIY
Conception d'une station météo DIY, et envoi des infos à votre Domotique.
Spécial débutant, concevez vous-même votre domotique DIY : https://www.youtube.com/c/DomoticDIY
Conception d'une station météo DIY, et envoi des infos à votre Domotique.
Re: Reinstallation d'une sauvegarde d'une partition dans un espace moindre !
Salut Domi.
De quoi parles-tu ?
Est-ce le copiage des fichiers de la partition vfat "/boot" ?
En ce qui concerne cette partition, je n'ai rencontré aucun problème.
Ou est-ce le copiage de la partition linux "/rootfs" ?
@+
De quoi parles-tu ?
Est-ce le copiage des fichiers de la partition vfat "/boot" ?
En ce qui concerne cette partition, je n'ai rencontré aucun problème.
Ou est-ce le copiage de la partition linux "/rootfs" ?
@+
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
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
-
- Raspinaute
- Messages : 969
- Enregistré le : dim. 28 déc. 2014 15:28
- Localisation : Le long de la côte, au dessus du pays des bigoudennes, aïe
Re: Reinstallation d'une sauvegarde d'une partition dans un espace moindre !
La commande resize2fs -M te correspond mieux ? (-M Shrink the file system to minimize its size as much as possible, given the files stored in the file system.)
C'est la commande que je cherche depuis 6 ans et je viens de la trouver sans la chercher spécialement
Il y a PiShrink qui fait ça aussi si j'ai bien compris
J'avais un autre post dont on parlait de ça, on faisait des calculs d'espaces occupés avec la taille de la partition puis on coupait "à la grosse" la partition pour la rétrécir au maximum avant de créer une image mais je ne le retrouve pas
C'est la commande que je cherche depuis 6 ans et je viens de la trouver sans la chercher spécialement
Il y a PiShrink qui fait ça aussi si j'ai bien compris
J'avais un autre post dont on parlait de ça, on faisait des calculs d'espaces occupés avec la taille de la partition puis on coupait "à la grosse" la partition pour la rétrécir au maximum avant de créer une image mais je ne le retrouve pas
[Pour bien commencer] Pour les nouveaux acquéreurs de Raspberry Pi (index de liens utiles)
Awesome Raspberry Pi
Awesome Raspberry Pi
Re: Reinstallation d'une sauvegarde d'une partition dans un espace moindre !
Salut Dyox.
Merci pour cette astuce que je ne connaissais en fait que dans le sens d'augmenter la taille du système de fichier.
Voici mes tests :
Je comprends que pour diminuer la taille d'une partition, il faut d'abord :
1) diminuer la taille du système de fichier (dans mon cas ext4).
J'ai utilisez la commande "resize2fs /dev/sda3 1G".
Aupréalable, la partition faisait 10G.
2) voici ce que donne mes partitions :
3) je dois retailler ma partition "/dev/sda3" en la passant de 10G à 1G.
Le calcul doit se faire en secteurs de 512 octets.
J'ai besoin de connaitre le début en secteurs de ma partition "/dev/sda3".
Soit : 44 042 240
La taille de la nouvelle partition doit être de 1G :
--> 1 073 741 824
En secteurs de 512, cela donne :
--> 1 073 741 824 / 512
--> 2 097 152
Pour calculer la fin en secteurs, je dois appliquer le calcul suivant :
--> secteurs de fin = secteurs de debut - 1 + nombre de secteurs que l'on ajoute
Ce qui donne le résultat suivant :
--> 44 042 240 - 1 + 2 097 152
--> 46 139 391
De ce calcul, je retiens :
a) le début en secteur de ma partition : 44 042 240.
b) la fin en secteur de ma partition : 46 139 391.
4) j'applique mes modification, sans reformater ma partition :
--> fdisk /dev/sda3
--> d (pour delete a partition)
--> 3 (pour /dev/sda3)
--> n (add a new partition)
--> p (primary)
--> 3 (pour /dev/sda3)
--> 44 042 240 (first sector)
--> 46 139 391 (end sector)
--> N (for remove signature eext4)
--> w (for write)
5) voici le résultat de la modification de ma partition "/dev/sda3" :
6) je fais une sauvegarde avec compression :
7) je refais le même test, avec cette fois-ci une taille de 10G, ce que j'avais avant.
J'obtiens 10 fois plus en volumétrie (je parle de la dernière ligne des deux résultats de la sauvegarde).
8) vérification de mes sauvegardes :
La comparaison des deux sauvegardes donne une volumètre presque le double (1.9 environ).
9) conclusion : le test a fonctionné.
J'ai quand même vérifier que je n'ai rien perdu, cela va de soi.
Il y a un léger problème, j'ai dû bidouiller dans ma partition pour diminuer sa volumétrie, sans perdre les données.
@+
Merci pour cette astuce que je ne connaissais en fait que dans le sens d'augmenter la taille du système de fichier.
Voici mes tests :
Je comprends que pour diminuer la taille d'une partition, il faut d'abord :
1) diminuer la taille du système de fichier (dans mon cas ext4).
J'ai utilisez la commande "resize2fs /dev/sda3 1G".
Aupréalable, la partition faisait 10G.
2) voici ce que donne mes partitions :
Code : Tout sélectionner
~> fdisk /dev/sda
Welcome to fdisk (util-linux 2.33.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p
Disk /dev/sda: 111,8 GiB, 120040980480 bytes, 234455040 sectors
Disk model: 20G2G0A-00JH30
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x3f8c39d1
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 2099199 2097152 1G c W95 FAT32 (LBA)
/dev/sda2 2099200 44042239 41943040 20G 83 Linux
/dev/sda3 44042240 65013759 20971520 10G 83 Linux
Command (m for help): q
~>
Le calcul doit se faire en secteurs de 512 octets.
J'ai besoin de connaitre le début en secteurs de ma partition "/dev/sda3".
Soit : 44 042 240
La taille de la nouvelle partition doit être de 1G :
--> 1 073 741 824
En secteurs de 512, cela donne :
--> 1 073 741 824 / 512
--> 2 097 152
Pour calculer la fin en secteurs, je dois appliquer le calcul suivant :
--> secteurs de fin = secteurs de debut - 1 + nombre de secteurs que l'on ajoute
Ce qui donne le résultat suivant :
--> 44 042 240 - 1 + 2 097 152
--> 46 139 391
De ce calcul, je retiens :
a) le début en secteur de ma partition : 44 042 240.
b) la fin en secteur de ma partition : 46 139 391.
4) j'applique mes modification, sans reformater ma partition :
--> fdisk /dev/sda3
--> d (pour delete a partition)
--> 3 (pour /dev/sda3)
--> n (add a new partition)
--> p (primary)
--> 3 (pour /dev/sda3)
--> 44 042 240 (first sector)
--> 46 139 391 (end sector)
--> N (for remove signature eext4)
--> w (for write)
5) voici le résultat de la modification de ma partition "/dev/sda3" :
Code : Tout sélectionner
~> fdisk /dev/sda
Welcome to fdisk (util-linux 2.33.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p
Disk /dev/sda: 111,8 GiB, 120040980480 bytes, 234455040 sectors
Disk model: 20G2G0A-00JH30
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x3f8c39d1
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 2099199 2097152 1G c W95 FAT32 (LBA)
/dev/sda2 2099200 44042239 41943040 20G 83 Linux
/dev/sda3 44042240 46139391 2097152 1G 83 Linux
Command (m for help): q
~>
Code : Tout sélectionner
~> dd if=/dev/sda3 bs=4k | bzip2 -c > /root/sda3.img.bz2
262144+0 enregistrements lus
262144+0 enregistrements écrits
1073741824 octets (1,1 GB, 1,0 GiB) copiés, 41,8354 s, 25,7 MB/s
~>
Code : Tout sélectionner
dd if=/dev/sda3 bs=4k | bzip2 -c > /root/sda3.img2.bz2
2621440+0 enregistrements lus
2621440+0 enregistrements écrits
10737418240 octets (11 GB, 10 GiB) copiés, 375,423 s, 28,6 MB/s
~>
8) vérification de mes sauvegardes :
Code : Tout sélectionner
~> la sda3.*
-rw-r--r-- 1 root root 14937139 nov. 20 23:50 sda3.img2.bz2
-rw-r--r-- 1 root root 7841062 nov. 20 23:27 sda3.img.bz2
~>
9) conclusion : le test a fonctionné.
J'ai quand même vérifier que je n'ai rien perdu, cela va de soi.
Il y a un léger problème, j'ai dû bidouiller dans ma partition pour diminuer sa volumétrie, sans perdre les données.
@+
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
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
Re: Reinstallation d'une sauvegarde d'une partition dans un espace moindre !
Salut à tous.
Alors comment procéder ?
1) il faut connaitre la taille d'occupation utilisée par les données dans la partition.
Pour cela, il suffit d'utiliser la commande suivante :
Ce qui donne dans l'exemple de ma partition "/dev/sda3" :
2) l'occupation est de 46M.
Oui mais voilà, je ne sais pas comment la commande "resize2fs" calcule ce minimum :
3) et si je calcule l'espace d'occupation par une autre méthode :
Comme on le constate l'occupation n'est pas la même par ces deux méthodes.
A vrai dire, ce n'est pas bien grave de ne pas savoir quelle est la taille minimale.
Pourquoi ? Parce que nous allons l'arrondir à une valeur plus grande.
Dans cet exemple, je vais prendre 256M.
4) je retaille le système de fichier EXT4 :
5) Je fais une vérification :
6) comme le BS (block size) est de 4K, pour calculer la taille exacte de 256M, je dois prendre :
--> 256M / 4K
--> 64K
Ceci sera la valeur du paramètre "count".
7) maintenant, je peux faire ma sauvegarde :
C'est bon, nous avons sauvegardé nos 256M.
8) ce qui donne :
C'est-à-dire une volumétrie de : 7,5M environ.
9) je fais le test de restauration de ma sauvegarde.
Je crée une partition "/dev/sda4" de 1G.
Puis je restaure ma sauvegarde :
Puis ensuite un :
pour agrandir à son maximum le système de fichier de la nouvelle partition.
Je monte la partition :
10) conclusion : il n'est pas nécessaire de faire la sauvegarde de la totalité de la partition.
Il est en effet inutile de sauvegarder des secteurs (ou des blocs) vide.
Nous pouvons remonter les blocs de celle-ci dans sa partie haute, à partir de la commande "resize2fs".
(je remercie Dyox de m'avoir communiqué cette astuce).
Puis enfin, faire la sauvegarde en prenant une taille un peu plus grande que le minimum d'occupation, comme je l'ai fait dans mon exemple.
Pour restaurer la sauvegarde, nous devons d'abord créer une nouvelle partition, dont j'ai volontairement mis à 1G.
Il n'est pas nécessaire de la formater puisque la restauration va tout écraser.
Et pour finir, utiliser "resize2fs" pour agrandir le système de fichier ext4.
@+
A mon interrogation, on peut en effet se passer de bidouiller dans la partition, comme je l'ai fait.Artemus24 a écrit :Il y a un léger problème, j'ai dû bidouiller dans ma partition pour diminuer sa volumétrie, sans perdre les données.
Alors comment procéder ?
1) il faut connaitre la taille d'occupation utilisée par les données dans la partition.
Pour cela, il suffit d'utiliser la commande suivante :
Code : Tout sélectionner
df -h
Code : Tout sélectionner
~> df -h /dev/sda3
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
/dev/sda3 9,8G 46M 9,4G 1% /warehouse
~>
Oui mais voilà, je ne sais pas comment la commande "resize2fs" calcule ce minimum :
Code : Tout sélectionner
~> resize2fs -P /dev/sda3
resize2fs 1.44.5 (15-Dec-2018)
Estimated minimum size of the filesystem: 47437
~>
Code : Tout sélectionner
~> dumpe2fs -h /dev/sda3 | egrep '^Block count:|^Block size:|^Free blocks:'
dumpe2fs 1.44.5 (15-Dec-2018)
Block count: 2621440
Free blocks: 2552239
Block size: 4096
~>
~> echo EXT4: /dev/sda3: $((2621440-2552239))
EXT4: /dev/sda3: 69201
~>
A vrai dire, ce n'est pas bien grave de ne pas savoir quelle est la taille minimale.
Pourquoi ? Parce que nous allons l'arrondir à une valeur plus grande.
Dans cet exemple, je vais prendre 256M.
4) je retaille le système de fichier EXT4 :
Code : Tout sélectionner
~> resize2fs /dev/sda3 256M
resize2fs 1.44.5 (15-Dec-2018)
Resizing the filesystem on /dev/sda3 to 65536 (4k) blocks.
The filesystem on /dev/sda3 is now 65536 (4k) blocks long.
~>
Code : Tout sélectionner
~> e2fsck -f /dev/sda3
e2fsck 1.44.5 (15-Dec-2018)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sda3: 239/16384 files (0.0% non-contiguous), 21927/65536 blocks
~>
--> 256M / 4K
--> 64K
Ceci sera la valeur du paramètre "count".
7) maintenant, je peux faire ma sauvegarde :
Code : Tout sélectionner
~> dd if=/dev/sda3 bs=4k count=64K | bzip2 -c > /root/sda3.img3.bz2
65536+0 enregistrements lus
65536+0 enregistrements écrits
268435456 octets (268 MB, 256 MiB) copiés, 14,0036 s, 19,2 MB/s
~>
8) ce qui donne :
Code : Tout sélectionner
~> la sda3.img3.bz2
-rw-r--r-- 1 root root 7845209 nov. 21 20:52 sda3.img3.bz2
~>
9) je fais le test de restauration de ma sauvegarde.
Je crée une partition "/dev/sda4" de 1G.
Puis je restaure ma sauvegarde :
Code : Tout sélectionner
~> bunzip2 -dc sda3.img3.bz2 | dd of=/dev/sda4 bs=4k
65536+0 enregistrements lus
65536+0 enregistrements écrits
268435456 octets (268 MB, 256 MiB) copiés, 5,24646 s, 51,2 MB/s
~>
Code : Tout sélectionner
~> resize2fs /dev/sda4
resize2fs 1.44.5 (15-Dec-2018)
Resizing the filesystem on /dev/sda4 to 262144 (4k) blocks.
The filesystem on /dev/sda4 is now 262144 (4k) blocks long.
~>
Je monte la partition :
Code : Tout sélectionner
~> mkdir /mnt/test
~> mount /dev/sda4 /mnt/test
~> cd /mnt/test
/mnt/test> la
total 60
drwxr-xr-x 12 root root 4096 nov. 20 23:02 .
drwxr-xr-x 7 root root 4096 nov. 21 21:07 ..
drwxr-xr-x 3 root root 4096 nov. 20 23:02 configuration
drwxr-xr-x 6 root root 4096 nov. 20 23:01 firewall
drwx------ 2 root root 16384 nov. 16 04:49 lost+found
drwxr-xr-x 2 root root 4096 nov. 20 22:59 Musiques
drwxr-xr-x 7 root root 4096 nov. 20 22:59 Prog_Bash
drwxr-xr-x 13 root root 4096 nov. 16 06:42 Prog_C
drwxr-xr-x 3 root root 4096 nov. 20 23:02 Prog_Python
drwxr-xr-x 2 root root 4096 nov. 20 23:02 resolvconf
drwxr-xr-x 2 root root 4096 nov. 20 23:01 udev
drwxr-xr-x 2 root root 4096 nov. 20 23:24 vnc
/mnt/test>
/mnt/test> df -h
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
/dev/root 20G 3,3G 16G 18% /
devtmpfs 3,9G 0 3,9G 0% /dev
tmpfs 3,9G 0 3,9G 0% /dev/shm
tmpfs 3,9G 9,5M 3,9G 1% /run
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs 3,9G 0 3,9G 0% /sys/fs/cgroup
tmpfs 3,9G 0 3,9G 0% /var/tmp
tmpfs 3,9G 16K 3,9G 1% /tmp
tmpfs 3,9G 372K 3,9G 1% /var/log
/dev/sda1 1022M 56M 967M 6% /boot
tmpfs 788M 0 788M 0% /run/user/0
tmpfs 788M 0 788M 0% /run/user/1000
/dev/sda4 944M 30M 878M 4% /mnt/test
/dev/sda3 9,8G 46M 9,6G 1% /warehouse
/mnt/test>
Il est en effet inutile de sauvegarder des secteurs (ou des blocs) vide.
Nous pouvons remonter les blocs de celle-ci dans sa partie haute, à partir de la commande "resize2fs".
(je remercie Dyox de m'avoir communiqué cette astuce).
Puis enfin, faire la sauvegarde en prenant une taille un peu plus grande que le minimum d'occupation, comme je l'ai fait dans mon exemple.
Pour restaurer la sauvegarde, nous devons d'abord créer une nouvelle partition, dont j'ai volontairement mis à 1G.
Il n'est pas nécessaire de la formater puisque la restauration va tout écraser.
Et pour finir, utiliser "resize2fs" pour agrandir le système de fichier ext4.
@+
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
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
-
- Raspinaute
- Messages : 969
- Enregistré le : dim. 28 déc. 2014 15:28
- Localisation : Le long de la côte, au dessus du pays des bigoudennes, aïe
Re: Reinstallation d'une sauvegarde d'une partition dans un espace moindre !
Bonsoir Artemus24,
D'ailleurs, toute ta démonstration part du postulat que tes données sont physiquement les unes à la suite des autres, ce qui est très loin du cas d'un ssd ou d'une clé. J'ai comme un doute sur la viabilité de la restauration.
As-tu testé resize2fs -M ? Je n'ai aucune idées de son fonctionnement. Sa logique voudrait qu'il retaille la partition au dernier block écrit, même si entre c'est vide. C'est comme ça que je comprends "-M Shrink the file system to minimize its size as much as possible, given the files stored in the file system"
Pour ma part j'utiliserai PiShrink, qui à l'air vraiment taillé pour ça, voir l'exemple avec l'image
Où est-ce que tu as lu que resize2fs fait un alignenemnt des données ? Je ne suis pas sûr qu'il le fasse.Nous pouvons remonter les blocs de celle-ci dans sa partie haute, à partir de la commande "resize2fs".
(je remercie Dyox de m'avoir communiqué cette astuce).
D'ailleurs, toute ta démonstration part du postulat que tes données sont physiquement les unes à la suite des autres, ce qui est très loin du cas d'un ssd ou d'une clé. J'ai comme un doute sur la viabilité de la restauration.
As-tu testé resize2fs -M ? Je n'ai aucune idées de son fonctionnement. Sa logique voudrait qu'il retaille la partition au dernier block écrit, même si entre c'est vide. C'est comme ça que je comprends "-M Shrink the file system to minimize its size as much as possible, given the files stored in the file system"
Pour ma part j'utiliserai PiShrink, qui à l'air vraiment taillé pour ça, voir l'exemple avec l'image
Comme maintenant tu as l'air de t'y connaître, tu peux te payer le luxe d'analyser le script[user@localhost PiShrink]$ sudo pishrink.sh pi.img
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/loop1: 88262/1929536 files (0.2% non-contiguous), 842728/7717632 blocks
resize2fs 1.42.9 (28-Dec-2013)
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/loop1 to 773603 (4k) blocks.
Begin pass 2 (max = 100387)
Relocating blocks XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 3 (max = 236)
Scanning inode table XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 4 (max = 7348)
Updating inode references XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/loop1 is now 773603 blocks long.
Shrunk pi.img from 30G to 3.1G
[Pour bien commencer] Pour les nouveaux acquéreurs de Raspberry Pi (index de liens utiles)
Awesome Raspberry Pi
Awesome Raspberry Pi
Re: Reinstallation d'une sauvegarde d'une partition dans un espace moindre !
Salut à tous.
J'indique 64M comme étant la taille d'occupation du système de fichier EXT4 dans ma partition.
En effet, on peut la réduire en utilisant la commande suivante :
Et pour le prouver, je fais le test suivant :
comme tu peux le constater, elle est maintenant de 18M.
Cela me semble évident par l'usage du paramètre "resize2fs -M" que des blocs ont bien été déplacés.
--> http://manpages.ubuntu.com/manpages/tru ... 2fs.8.html
Maintenant la question que tu soulèves concerne la taille minimale du système de fichier.
Pour ma part, je comprends que cette taille commence au début de la partition.
Si la taille minimale est de 64M, je comprends qu'elle se trouve dans le haut de la partition.
Pourquoi en serait-il autrement ?
Ce qui implique que le "resize2fs -M" doit déplacer les blocs en haut de la partition.
Admettons que cela ne soit pas le cas, alors ma sauvegarde n'aurait pas pu me restituer, lors de la restauration de la partition, la totalité de mes données.
Autre point, celle concernant la taille de la sauvegarde.
Au minimum, la taille de la sauvegarde doit être celle de la taille du bloc, à savoir chez moi 4K.
Mais je ne sais pas pourquoi, quand j'ai voulu mettre 64M, voir 128M, cela m'a provoqué une erreur.
Par contre, le test a fonctionné pour 256M.
J'ai pourtant fait le test de la restauration de ma sauvegarde, histoire de me rendre compte si cela fonctionne ou pas.
Or le test a fonctionné correctement !
Dans la documentation anglaise, il est dit que les blocs sont déplacés (Debug block relocations).
--> https://linux.die.net/man/8/resize2fs
Sinon pourquoi parler de la taille minimale du système de fichier EXT4, si aucun déplacement de blocs n'est fait ?
Comment mettre en évidence que le "resize2fs -M" déplace les blocs dans le haut de la partition ?
@+
Dans mon exemple, je n'ai pas modifié le système de fichier EXT4 de la partition "/dev/sda3" pour la rendre minimale.dyox a écrit :Où est-ce que tu as lu que resize2fs fait un alignenemnt des données ?
J'indique 64M comme étant la taille d'occupation du système de fichier EXT4 dans ma partition.
En effet, on peut la réduire en utilisant la commande suivante :
Code : Tout sélectionner
~> resize2fs -M /dev/sda3
resize2fs 1.44.5 (15-Dec-2018)
Resizing the filesystem on /dev/sda3 to 47437 (4k) blocks.
The filesystem on /dev/sda3 is now 47437 (4k) blocks long.
~>
Code : Tout sélectionner
~> df -h /dev/sda3
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
/dev/sda3 118M 18M 93M 17% /warehouse
~>
Cela me semble évident par l'usage du paramètre "resize2fs -M" que des blocs ont bien été déplacés.
--> http://manpages.ubuntu.com/manpages/tru ... 2fs.8.html
Maintenant la question que tu soulèves concerne la taille minimale du système de fichier.
Pour ma part, je comprends que cette taille commence au début de la partition.
Si la taille minimale est de 64M, je comprends qu'elle se trouve dans le haut de la partition.
Pourquoi en serait-il autrement ?
Ce qui implique que le "resize2fs -M" doit déplacer les blocs en haut de la partition.
Admettons que cela ne soit pas le cas, alors ma sauvegarde n'aurait pas pu me restituer, lors de la restauration de la partition, la totalité de mes données.
Autre point, celle concernant la taille de la sauvegarde.
Au minimum, la taille de la sauvegarde doit être celle de la taille du bloc, à savoir chez moi 4K.
Mais je ne sais pas pourquoi, quand j'ai voulu mettre 64M, voir 128M, cela m'a provoqué une erreur.
Par contre, le test a fonctionné pour 256M.
J'ai pourtant fait le test de la restauration de ma sauvegarde, histoire de me rendre compte si cela fonctionne ou pas.
Or le test a fonctionné correctement !
Dans la documentation anglaise, il est dit que les blocs sont déplacés (Debug block relocations).
--> https://linux.die.net/man/8/resize2fs
Sinon pourquoi parler de la taille minimale du système de fichier EXT4, si aucun déplacement de blocs n'est fait ?
Comment mettre en évidence que le "resize2fs -M" déplace les blocs dans le haut de la partition ?
@+
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
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