Как возобновить безопасный и надежный процесс копирования файла $A
в папку резервной копии, $B
выполненную с помощью pv "$A" > "$B"
или cat "$A" > "$B"
?
(допустим, файл $A
очень большой, например файл снимка LVM2)
Это достижимо с dd
?
Предпочтительные решения: bash или python (предпочтительно python3).
Пример сценария: pv "$A" > "$B"
прерывается после копирования на 90%. Как возобновить его, чтобы завершить процесс копирования, но не повторять всю работу снова?
Ответы:
Да, вы можете использовать dd, чтобы пропустить блоки.
Важными параметрами здесь являются
skip
такжеseek
:skip
: пропустить блоки BLOBKS ibs-size в начале вводаseek
: пропустить блоки BLOBKS obs-size в начале выводаисточник
Вы хотите
rsync
:источник
--append
.--append
изменилось с версии 3.0.0. Не могли бы вы убедиться, что в данный момент--append
игнорирует уже скопированную часть, а--append-verify
читает всю А для проверки контрольной суммы? (до версии 3.0.0.--append
вел себя как--append-verify
-> Вот причина недопонимания)--append
слепо добавляет к файлу.--append-verify
делает то же самое, но запускает контрольные суммы в конце, если контрольные суммы не совпадаютrsync
, создается новая копия.Вы пробовали
dd skip
со смещением от реального размера файла B (независимо от размера блока раздела)?Это даст вам недостающую часть. В этот момент вы можете соединить
cat
их вместе в новый файлcat "$B" "$A2" >> "$C"; #mv "$C" "$B"
(где,$C
конечно, недостающая часть на пути с достаточным пространством).cat
отлично работает и для конкатенации двоичных файлов, и в этом случае у вас нет нескольких заголовков файлов, которые бы препятствовали простому слиянию по сценарию. Есть вероятность, что конец$B
поврежден, но в этом случае вы можете сократить его и перечитать больше$A
на начальном шаге dd.источник