compression de la sauvegarde dd à la volée

23

Peut-être que cela ressemblera à une question stupide, mais la façon dont j'essaie de le faire ne fonctionne pas.

Je suis sur livecd, le lecteur n'est pas monté, etc.

Quand je sauvegarde de cette façon

sudo dd if=/dev/sda2 of=/media/disk/sda2-backup-10august09.ext3 bs=64k

... normalement, cela fonctionnerait, mais je n'ai pas assez d'espace sur le disque dur externe sur lequel je copie (il correspond presque à lui). Je voulais donc compresser de cette façon

 sudo dd if=/dev/sda2 | gzip > /media/disk/sda2-backup-10august09.gz

... mais j'ai obtenu des autorisations refusées. Je ne comprends pas.

Phil
la source
2
Non. Ce n'est pas une sauvegarde. Vérifiez les commandes «dump» et «restore».
Juliano
Ou goudron ou cpio ....
chris
1
Juliano, que voulez-vous dire par «ce n'est pas une sauvegarde»?
Phil
5
Ce n'est pas une sauvegarde car les sauvegardes sont sérieuses, bien structurées et utilisent des outils appropriés destinés à créer des sauvegardes. Vous faites juste une copie des données brutes d'une partition. Pour restaurer ces données, vous aurez besoin d'une autre partition avec la même géométrie, ce qui n'est pas garanti. De plus, si vous endommagez un seul bloc de votre archive (superbloc, tables d'inode, répertoire racine, etc.), vous risquez de perdre toutes vos données. Avec une sauvegarde appropriée, cela ne se produirait pas.
Juliano
7
"Pour restaurer ces données, vous aurez besoin d'une autre partition avec la même géométrie, ce qui n'est pas garanti" Pourquoi aurait-il besoin de cela, ne peut-il pas monter l'image de partition sur un périphérique de bouclage?
Kyle Brandt

Réponses:

41

Avez-vous accès au fichier sda2-backup ... gz? Sudo ne fonctionne qu'avec la commande qui suit, et ne s'applique pas à la redirection. Si vous souhaitez qu'il s'applique à la redirection, exécutez le shell en tant que root afin que tous les processus enfants soient également root:

sudo bash -c "dd if=/dev/sda2 | gzip > /media/disk/sda2-backup-10august09.gz"

Alternativement, vous pouvez monter le disque avec les options de montage uid / gid (en supposant ext3) afin que vous ayez les autorisations d'écriture en tant qu'utilisateur que vous êtes. Ou, utilisez root pour créer un dossier dans / media / disk pour lequel vous avez des autorisations.

Autres informations qui pourraient vous aider:

  • La taille des blocs n'a vraiment d'importance que pour la vitesse. La valeur par défaut est 512 octets que vous souhaitez conserver pour le MBR et les disquettes. Des tailles plus grandes jusqu'à un point devraient accélérer les opérations, pensez-y comme analogue à un tampon. Voici un lien vers quelqu'un qui a fait des tests de vitesse avec différentes tailles de blocs. Mais vous devez faire vos propres tests, car les performances sont influencées par de nombreux facteurs. Jetez également un œil à l'autre réponse d'andreas
  • Si vous souhaitez accomplir cela sur le réseau avec ssh et netcat afin que l'espace ne soit pas aussi important, consultez cette question de défaillance du serveur .
  • Avez-vous vraiment besoin d'une image de la partition, il pourrait y avoir de meilleures stratégies de sauvegarde?
  • dd est une commande très dangereuse, utilisez ofplutôt ifet vous finissez par écraser ce que vous essayez de sauvegarder !! Remarquez comment les touches oet isont côte à côte? Soyez donc très très très prudent.
Kyle Brandt
la source
je vais essayer ça. comment puis-je également le faire bs = 64k? (et dois-je le faire?)
Phil
Le bs = 64k ne fait que rendre le transfert plus rapide car dd lira des blocs de 64k chacun au lieu de la taille de bloc par défaut de (je ne me souviens pas).
chris
Ce que chris a dit, et si vous voulez l'inclure, mettez-le après dd et avant le symbole du tuyau (|) car c'est un argument pour dd.
Kyle Brandt
1
J'utiliserai également occasionnellement "sudo tee $ file> / dev / null" dans un pipeline pour permettre l'écriture dans un fichier auquel mon compte utilisateur n'a pas accès également.
Rik Schneider
6

Dans le premier cas, le dd s'exécute en tant que root.

Dans le second cas, le dd s'exécute en tant que root mais le gzip s'exécute en tant que vous.

Modifiez les autorisations sur / media / disk, offrez-vous un shell root ou exécutez le gzip en tant que root également.

chris
la source
3

De plus, vous pouvez remplacer gzip par bzip2 --bestpour une bien meilleure compression:

sudo dd if=/dev/sda2 | bzip2 --best > /media/disk/$(date +%Y%m%d_%H%M%S)_sda2-backup.bz2
dmityugov
la source
3
À un coût de beaucoup de temps. Voir changelog.complete.org/archives/… "Comment penser la compression" pour plus de détails.
Bill Weiss
@BillWeiss: Merci pour votre commentaire, lecture très intéressante!
andreas
compression: lzma> bzip2> gzip .. vitesse: gzip> bzip2> lzma. Sauf si vous publiez l'image disque sur Internet, il n'y a pas beaucoup d'avantages pour le temps, la puissance du processeur et la mémoire que vous dépensez pour une meilleure compression.