J'ai un disque, disons / dev / sda.
Voici fdisk -l:
Disk /dev/sda: 64.0 GB, 64023257088 bytes
255 heads, 63 sectors/track, 7783 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0000e4b5
Device Boot Start End Blocks Id System
/dev/sda1 * 1 27 209920 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 27 525 4000768 5 Extended
Partition 2 does not end on cylinder boundary.
/dev/sda5 27 353 2621440 83 Linux
/dev/sda6 353 405 416768 83 Linux
/dev/sda7 405 490 675840 83 Linux
/dev/sda8 490 525 282624 83 Linux
Je dois faire une image à stocker sur notre serveur de fichiers pour l'utiliser dans les autres appareils que nous fabriquons, donc je ne veux que l'espace utilisé (seulement environ 4 Go). Je veux garder le mbr etc ... car cet appareil doit être prêt à démarrer dès que la copie est terminée.
Des idées? J'avais précédemment utilisé dd if=/dev/sda of=[//fileserver/file]
, mais à ce moment-là, ma copie principale était sur une idée flash de 4 Go.
linux
hard-drive
dd
Jonathan Henson
la source
la source
dd conv=sparse
.Réponses:
À l'époque, je rencontrais un problème similaire avec les distributions Linux intégrées - débarrassez-vous de tous les fichiers indésirables avant de compresser l'image.
dd if=/dev/zero of=asdf.txt
. Attendez qu'il meure. Supprimez asdf.txt.Vous venez d'écrire des zéros sur tout l'espace libre de l'appareil.
Maintenant, prenez une image disque et exécutez-la via gzip. Voila, image clairsemée.
N'évolue probablement pas très bien et pourrait causer des problèmes si vous avez réellement besoin d'écrire sur le disque, mais bon.
Vous pouvez prendre un instantané rsync du disque vers un autre volume, le mettre à zéro, puis prendre cette image disque.
Remarque: pourrait être dangereux pour le SSD, l'utilisateur doit considérer cette opération avant de s'engager.
la source
dd if=sda2.gz | gunzip > /dev/sda2
etdd if=/dev/sda2 | gzip > sda2.gz
of
chemin pour chaque partition.En supposant que vous souhaitez enregistrer
/dev/sdXN
à/tgtfs/image.raw
et vous êtes root:mkdir /srcfs && mount /dev/sdXN /srcfs
Utilisez zerofill ou simplement:
dd if=/dev/zero of=/srcfs/tmpzero.txt
pour remplir les blocs inutilisés avec zéro (attendez qu'il remplisse complètement le système de fichiers alorsrm /srcfs/tmpzero.txt
)Prenez l'image avec dd et utilisez conv = sparse pour pointer des zéros à la volée:
dd conv=sparse if=/dev/sdxn of=/tgtfs/image.raw
Si vous souhaitez utiliser la compression, vous n'avez pas besoin de perforer les zéros avec dd car les blocs zéro sont hautement compressibles:
PS: Vous devez noter que ce n'est pas une bonne idée sur un support de stockage à mémoire flash (c'est-à-dire que votre système de fichiers source est SSD)
la source
dd conv=sparse
.btrfs snapshot
et desbtrfs send
outils) est une meilleure solution à mon humble avis .gz
sur votrePATH
(comme je ne l' ai pas, sur GParted Live), vous pouvez utiliser à lagzip -c
place.Utilisez dd, avec l'option count.
Dans votre cas, vous utilisiez fdisk, je vais donc adopter cette approche. Votre "sudo fdisk -l" a produit:
Les deux choses à noter sont 1) la taille de l'unité et 2) la colonne "Fin". Dans votre cas, vous disposez de cylindres équivalents à 8225280 octets. Dans la colonne "Fin", sda8 se termine à 525 (soit 525 [unités] * 16065 * 512 = ~ 4,3 Go)
dd peut faire beaucoup de choses, comme démarrer après un décalage ou s'arrêter après un nombre spécifique de blocs. Nous ferons ce dernier en utilisant l'option count dans dd. La commande apparaîtrait comme suit:
Où -bs est la taille du bloc (il est plus facile d'utiliser l'unité utilisée par fdisk, mais n'importe quelle unité le fera tant que l'option count est déclarée dans ces unités), et count est le nombre d'unités que nous voulons copier (note que nous incrémentons le compte de 1 pour capturer le dernier bloc).
la source
fdisk -l -u=cylinders /dev/sda
Bien
/dev/zero
que l'utilisation de l'espace disque libre et l'utilisation dedd conv=sparse
/gz -c
soient possibles, sur des disques énormes avec un espace vide fonctionnant dans des centaines de Go,/dev/zero
ing est douloureusement lent - sans parler de ce que, comme d'autres réponses l'ont noté,/dev/zero
ing un SDD jusqu'à EOF.Voici ce que j'ai fait lorsque j'ai rencontré cette situation:
Sur un CD live lubuntu, utilisé
gparted
pour «réduire» le disque à la taille minimale possible, en laissant le reste de l'espace non allouéUtilisé
dd bs=1M count=<size_in_MBs> if=/dev/sdX | gzip -c --fast| dd of=/path/to/image.gz
pour créer l'image compressée rapidement (il va sans dire que vous souhaiterez peut-être ignorer la compression si vous avez suffisamment d'espace pour stocker les données brutes (ou si vous êtes autrement enclin à réduire la charge du processeur)dd if=/path/to/image.gz | gunzip -c | dd bs=1M of=/dev/sdY
pour copier les données sur un autre disquegparted
nouveau pour «étendre» la partitionJe ne l'ai pas essayé pour plusieurs partitions, mais je pense que le processus ci-dessus peut être adapté pour copier des `` partitions '' si la table de partition sur le disque de destination est créée en premier et que seules les données contenues dans la partition sont copiées via
dd
- lecture / écriture des décalages (skip
/seek
option dedd
, respectivement) serait requis, le cas échéant.la source
count
paramètreTu ne peux pas.
dd
est un outil de très bas niveau et il n'a aucun moyen de faire la distinction entre les fichiers et l'espace vide.D'un autre côté, l'espace vide se compressera très, très bien, donc si vous ne vous souciez que de l'espace de stockage, pas par exemple du temps d'écriture, alors dirigez-le simplement via gzip.
la source
En supposant que le reste du lecteur est vide (tous les zéros), vous pouvez diriger votre DD via gzip, ce qui devrait compresser assez bien l'espace vide. Vous pouvez utiliser un outil comme zerofree pour vous assurer que votre espace vide est réellement vide afin qu'il se comprime bien.
Si vous utilisez un outil comme partimage , clonezilla ou certains des autres outils de clonage linux, ils géreraient la plupart de cela automatiquement pour vous.
la source
La réponse acceptée n'est pas correcte. Je suis d'accord avec le commentaire ci-dessus. J'utilise dd avec le paramètre count pour sauvegarder mon disque sur une base régulière. Remplacez simplement le BACKUP_FOLDER et la lettre de votre appareil par "X":
Définissez le dernier bloc utilisé du disque:
Puis clonage du disque (à l'exclusion de son espace vide):
la source