Как я могу заархивировать вывод dd непосредственно возможно, не используя сжатия?

Это уже было определено в этом вопросе это tar не может считать вход из stdin.

Как еще может a dd вывод быть заархивированным непосредственно возможно, не используя сжатия? Цель сделать все в единственной задаче состоит в том, чтобы не писать dd вывод к целевому диску дважды (однажды как необработанный файл и однажды как архив), и постараться не выполнять две различных задачи, который является пустой тратой времени (так как входной файл должен быть считан и записан и выходное чтение, обработанное и записанное снова), и может быть невозможным, если целевой диск почти полон.

Я планирую сделать несколько резервных копий дисков, разделов и папок, и я хотел бы извлечь выгоду и из простоты хранения всего в единственный файл и от скорости каждого резервного копирования / потенциал восстанавливает задачу.

3
задан 13 April 2017 в 15:24

1 ответ

Если Вы хотите вывести целое блочное устройство в файл, tar не будет иметь применения, потому что оно не работает с блочными устройствами. Вместо этого необходимо будет использовать dd или подобный:

dd if=/dev/sdX of=/path/to/backup bs=16m

Даже как это было бы лучше использовать, по крайней мере, немного сжатия, пока это не замедляет передачу слишком много. Короче говоря, Вам нужен алгоритм сжатия с пропускной способностью не намного ниже, чем тот из Вашего самого медленного носителя. Существуют несколько таких алгоритмов сжатия. Самым известным является Lempel–Ziv–Oberhumer, его производная L4Z, и Мгновенный. Существует сравнение различных алгоритмов сжатия включая те три на странице проекта L4Z:

Name            Ratio  C.speed D.speed
                        MB/s    MB/s
LZ4 (r101)      2.084    422    1820
LZO 2.06        2.106    414     600
QuickLZ 1.5.1b6 2.237    373     420
Snappy 1.1.0    2.091    323    1070
LZF             2.077    270     570
zlib 1.2.8 -1   2.730     65     280
LZ4 HC (r101)   2.720     25    2080
zlib 1.2.8 -6   3.099     21     300

Ради этого ответа я выберу пример с LZO, потому что это легко доступно в репозиториях Canonical в форме lzop, но в конечном счете все те потоковые компрессоры имеют фронтенды, которые читают из стандартного входа и пишут в стандартный вывод.

dd if=/dev/sdX bs=16m | lzop > /path/to/backup.lzo

Если Вы хотите работать над той же машиной во время резервного копирования, можно хотеть использовать ionice и/или nice/schedtool:

ionice -c 3 dd if=/dev/sdX bs=16m | ionice -c 3 schedtool -B -n 10 -e lzop > /path/to/backup.lzo
4
ответ дан 1 December 2019 в 15:58

Другие вопросы по тегам:

Похожие вопросы: