J'allais faire une image de mon ancien lecteur USB. J'ai eu de bonnes raisons d'attendre qu'il y ait des blocs remplis de zéros sur l'appareil, afin de sauver un espace que j'ai utilisé conv=sparse
Option:
dd if=/dev/sdb of=myusb.img conv=sparse bs=32M
Cependant, cela ne m'a rien sauvé:
$ ls -hls myusb.img
250M -rw-r--r-- 1 root root 250M Oct 18 21:31 myusb.img
Je suis sûr qu'il y a des blocs zéro remplis sur l'appareil. Pourquoi pas dd conv=sparse
Sauvegarder l'espace?
NOTE Je connais déjà la réponse (je pense). Je le pose ci-dessous. La question concerne la référence future.
Si vous êtes absolument sûr, il y avait des blocs remplis de zéro, la raison pour laquelle vous avez sauvegardé n'était un grand tampon que vous avez utilisé. De man dd
:
sparse
Essayez de rechercher plutôt que d'écrire la sortie pour les blocs d'entrée NUL
Vous avez utilisé bs=32M
, vous avez donc besoin d'un bloc de zéros entièrement de 32 mib à un décalage droit pour le conv=sparse
Option de faire son travail si seulement une seule fois.
L'option bs
définit ibs
(taille du bloc d'entrée) et obs
(taille du bloc de sortie). Bien que le manuel mentionne blocs d'entrée, il est en fait le obs
qui compte.
Voici les résultats de certains tests. (Comme je suis l'op, j'ai fait les tests avec le même appareil.) Chaque fichier est nommé selon <obs_used>.img
modèle. Faites attention à la première colonne:
$ ls -hlst *.img
250M -rw-r--r-- 1 root root 250M Oct 18 22:02 4M.img
250M -rw-r--r-- 1 root root 250M Oct 18 22:02 2M.img
249M -rw-r--r-- 1 root root 250M Oct 18 22:02 1M.img
248M -rw-r--r-- 1 root root 250M Oct 18 22:01 512K.img
248M -rw-r--r-- 1 root root 250M Oct 18 22:01 256K.img
247M -rw-r--r-- 1 root root 250M Oct 18 22:00 128K.img
247M -rw-r--r-- 1 root root 250M Oct 18 21:57 64K.img
247M -rw-r--r-- 1 root root 250M Oct 18 21:56 32K.img
246M -rw-r--r-- 1 root root 250M Oct 18 21:55 16K.img
246M -rw-r--r-- 1 root root 250M Oct 18 21:54 8K.img
246M -rw-r--r-- 1 root root 250M Oct 18 21:53 4K.img
246M -rw-r--r-- 1 root root 250M Oct 18 21:52 2K.img
246M -rw-r--r-- 1 root root 250M Oct 18 21:51 1K.img
246M -rw-r--r-- 1 root root 250M Oct 18 21:44 512.img
La conclusion est la suivante: vous ne devriez pas utiliser grand obs
avec conv=sparse
option. La taille du secteur commun est de 512 octets, alors bs=512
semble juste juste. Votre commande aurait dû être:
dd if=/dev/sdb of=myusb.img conv=sparse bs=512