сжатие резервной копии на лету

23

Возможно, это будет звучать как глупый вопрос, но способ, которым я пытаюсь это сделать, не работает.

Я на livecd, диск размонтирован и т.д.

Когда я делаю резервную копию таким образом

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

... обычно это будет работать, но у меня недостаточно места на внешнем диске, на который я копирую (он ПОЧТИ вписывается в него). Поэтому я хотел сжать таким образом

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

... но я получил отказано в разрешении. Я не понимаю

Фил
источник
2
Не. Это не резервная копия. Проверьте команды «dump» и «restore».
Джулиано
Или деготь или cpio ....
Крис
1
Джулиано, что вы подразумеваете под «это не резервная копия»?
Фил
5
Это не резервная копия, потому что резервные копии являются серьезными, хорошо структурированными и используют надлежащие инструменты, предназначенные для создания резервных копий. Вы просто делаете копию необработанных данных раздела. Чтобы восстановить эти данные, вам понадобится другой раздел с такой же геометрией, что не гарантируется. Кроме того, если вы повредите один блок вашего архива (суперблок, таблицы inode, корневой каталог и т. Д.), Вы рискуете потерять все свои данные. При правильном резервном копировании этого не произойдет.
Джулиано
7
«Чтобы восстановить эти данные, вам понадобится другой раздел с той же геометрией, что не гарантируется». Зачем ему это нужно, не может ли он смонтировать образ раздела на устройстве с обратной связью?
Кайл Брандт

Ответы:

41

У вас есть доступ к файлу sda2-backup ... gz? Судо работает только с командой после нее и не применяется к перенаправлению. Если вы хотите, чтобы оно применялось к перенаправлению, запустите оболочку от имени пользователя root, чтобы все дочерние процессы также были root:

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

В качестве альтернативы, вы можете смонтировать диск с параметрами монтирования uid / gid (при условии ext3), чтобы у вас были права на запись от имени любого пользователя. Или используйте root для создания папки в / media / disk, для которой у вас есть разрешения.

Другая информация, которая может вам помочь:

  • Размер блока имеет значение только для скорости по большей части. По умолчанию это 512 байт, которые вы хотите сохранить для MBR и дискет. Больший размер к точке должен ускорить операции, думать об этом как о буфере. Вот ссылка на кого-то, кто сделал несколько тестов скорости с различными размерами блоков. Но вам следует провести собственное тестирование, так как на производительность влияет множество факторов. Взгляните также на другой ответ Андреаса
  • Если вы хотите выполнить это по сети с помощью ssh и netcat, чтобы пространство не было такой большой проблемой, см. Этот вопрос о сбое сервера .
  • Вам действительно нужен образ раздела, возможно, есть лучшие стратегии резервного копирования?
  • dd - очень опасная команда, используйте ofвместо, ifи в итоге вы перезаписываете то, что пытаетесь сделать резервную копию !! Заметьте, как клавиши oи iрядом друг с другом? Так что будьте очень, очень, очень осторожны.
Кайл Брандт
источник
Я попробую это. как я могу сделать это bs = 64k? (и должен ли я?)
Фил
Bs = 64k только ускоряет передачу, потому что dd будет читать блоки по 64k каждый вместо размера блока по умолчанию (я не помню).
Крис
Что сказал Крис, и если вы хотите включить его, поставьте его после dd и перед символом канала (|), так как это аргумент dd.
Кайл Брандт
1
Я также иногда буду использовать «sudo tee $ file> / dev / null» в конвейере, чтобы разрешить запись в файл, к которому моя учетная запись пользователя также не имеет доступа.
Рик Шнайдер,
6

В первом случае dd работает как root.

Во втором случае dd работает как root, но gzip работает как вы.

Измените права доступа к / media / disk, создайте себе оболочку root или тоже запустите gzip от имени root.

Крис
источник
3

Кроме того, вы можете заменить gzip bzip2 --bestна гораздо лучшее сжатие:

sudo dd if=/dev/sda2 | bzip2 --best > /media/disk/$(date +%Y%m%d_%H%M%S)_sda2-backup.bz2
dmityugov
источник
3
По стоимости много времени. См. Changelog.complete.org/archives/… "Как думать о сжатии" для более подробной информации.
Билл Вайс
@BillWeiss: Спасибо за ваш комментарий, очень интересно читать!
Андреас
сжатие: lzma> bzip2> gzip .. speed: gzip> bzip2> lzma. Если вы не публикуете образ диска в Интернете, вы не тратите много времени, мощности процессора и памяти на лучшее сжатие.