, Как я могу клонировать/делать копию/восстанавливать Windows 10 из Linux?

Немного предыстории:

Ваша команда mycommand не отправляет SIGINT повторно, когда получает его, а просто завершает работу. Из-за этого bash, выполняющий цикл, не может определить, что CTRL+C был использован для завершения выполнения, и предполагает, что это было просто сочетание клавиш, которое вы набрали для mycommand. Поскольку было бы нежелательно завершать работу оболочки из-за комбинации клавиш (представьте, например, использование vi), bash просто продолжит выполнение очередной итерации цикла.

Окончательным решением было бы исправить mycommand, чтобы он убивал себя с помощью SIGINT, когда получает его, давая bash знать, что он тоже должен остановиться.

void sigint_handler(int sig)
{
    // Execute your normal handler
    signal(SIGINT, SIG_DFL); // don't catch the signal anymore
    kill(getpid(), SIGINT); // kill itself with the same signal
}

Источник: http://www.cons.org/cracauer/sigint.html

Если вы не можете исправить mycommand, вам придется либо закрыть терминальную сессию, либо убить процесс bash, который выполняет цикл, и текущий экземпляр mycommand, в таком порядке.

2
16.05.2018, 00:46
4 ответа

Sí, la solución más sencilla es

dd if=/dev/sda of="/media/usb/$(date).img"

Eso es lento y ocupa mucho espacio para que pueda

  • simplemente copie la partición [s] + sector de arranque que desee
  • cero y comprimir espacio libre
  • archivo en lugar de copias de seguridad basadas en bloques
  • rdiff -copia de seguridad para diferencias inversas (reducción drástica del tamaño después de la primera)
  • rsync (para una aceleración espectacular en redes lentas)
  • cow FS (btrfs/zfs )para copias de seguridad más rápidas/más pequeñas que rsync/diff son solo una opción si coloca Windows en una VM, y no estoy seguro de qué tan bien se adaptan a ese escenario.

Probablemente te perdiste el sector de arranque, los UUID y deberías leer sobre grub yhttps://en.m.wikipedia.org/wiki/Windows_Vista_startup_process

2
27.01.2020, 22:02

pv método

Podría usarpv(la página de manual)utilidad así:

sudo sh -c 'pv < /dev/sda > /destination'

Por supuesto, podría convertirse en root primero:

sudo -i

Y luego solo haz la copia de seguridad:

pv < /dev/sda > /BackupDestination

Y luego, cuando sea necesario, haga restaurar:

pv < /BackupDestination > /dev/sda

Notas

  • Esto básicamente hace el mismo trabajo que dden la otra respuesta, pero es más rápido y muestra progreso.

  • Este método puede ser más lento que rsync, pero solo copia archivos, lo cual no está previsto.

  • Copia todo 1 :1, una copia perfecta se podría decir.

  • También necesita el sector de arranque para que arranque más tarde. El método más simple es hacer una copia de seguridad de todo el disco.

  • Para mostrar el progreso condd(página del manual ), simplemente puede agregar el comando:

    status=progress
    

Sugerencia

Para que pueda comprimir la imagen de manera efectiva después, no olvide poner a cero el espacio libre.

5
27.01.2020, 22:02

Al igual que otras soluciones publicadas hasta ahora, esta muestra el progreso(como la solución pv, no en relación con el total, solo el número de MB transferidos )y no comprime (una partición de 100 GB daría como resultado un archivo de 100 GB ), pero respalda solo la partición del sistema de archivos (sda1), no todo el disco o la partición:

dcfldd if=/dev/sda1 of=Image.dd bs=2M

La herramienta dcfldd es una simple ddque muestra el progreso.
El tamaño de búferbs=2Mme parece un buen valor para dispositivos USB (una partición de 120 GB copiada en aproximadamente 15 -20 minutos ).

Probado funcionando en Windows 10 versión 1803. No es necesario (o eso parece )hacer una copia de seguridad también de todo el disco duro, felizmente.

Por supuesto, comprimir el archivo resultante más tarde probablemente sea una buena idea.

0
27.01.2020, 22:02

Я только что успешно завершил описанный сценарий резервного копирования Windows 10 из Linux в файл и их восстановления на новом диске.

На старом диске нет свободного места от Windows, выполнив

zdelete -z c:

с помощью SУдалить .

Получите активный USB-накопитель Linux для загрузки и резервного копирования MBR и таблицы разделов на запасной диск

dd if=/dev/sda of=/somewhere/mbr bs=512 count=63

скопировать загрузочный раздел в файл

dd if=/dev/sda1 bs=1M status=progress | lz4 > /somewhere/sda1.lz4

скопировать системный раздел в файл

dd if=/dev/sda2 bs=1M status=progress | lz4 > /somewhere/sda2.lz4

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

dd of=/dev/sda if=/somewhere/file.mbr

Это дает вам тот же основной макет раздела (разделов внутри расширенного раздела хранятся где-то еще и не будут восстановлены при этом ).

Теперь восстановите два раздела Windows

dd of=/dev/sda1 bs=1M status=progress < lz4cat /somewhere/sda1.lz4
dd of=/dev/sda2 bs=1M status=progress < lz4cat /somewhere/sda2.lz4 

Диск не загружается на данном этапе (grub жалуется ). Итак, загрузите аварийный диск Windows или установочный носитель и выберите «восстановить». В разделе «Устранение неполадок» запустите командную строку и беги

bootrec /fixmbr

На этом этапе я загрузил исходную систему Windows с нового диска большего размера. Я получил степень сжатия 50% как с gzip, так и с lz4 (с полным диском 70% ), но gzip был ограничен скоростью процессора (27 МБ / с в моем случае ), а lz4 не был (480 МБ. /s Ограничение ЦП, 180 МБ/с ограничение моего резервного диска ).

Моя первая попытка была с ntfsclone, но она не создавала загрузочную Windows (, она жаловалась на отсутствие некоторых файлов в \Windows\System32 ). Я не уверен, почему это не сработало. В конце решение dd+ lz4создало изображение меньшего размера, чем ntfscloneсамо по себе. Ваш пробег может варьироваться в зависимости от того, насколько заполнен диск. Ошибки по модулю вntfsclone-ddкажутся намного проще исправить:-)

2
27.01.2020, 22:02

Теги

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