Я действительно сделал это, и это работает. Это достаточно надежно, учитывая все обстоятельства. Это хорошая идея? Нет, наверное нет. Вы можете потерять данные или получить поврежденные файлы. При использовании разделов ext3 при загрузке вы получите предупреждение о том, что раздел «не был чисто размонтирован, проверка принудительно». Затем он запустит «fsck». Fsck может потребоваться много времени, чтобы вернуть файловую систему в чистое состояние, но она туда доберется. Файловая система ext4 сделает это быстрее.
Подумайте об этом так: «dd» живой файловой системы эквивалентно отключению питания от сервера во время работы. Если вы отключили питание от сервера, ожидаете ли вы, что файловая система будет разрушена и компьютер не загрузится снова? Конечно, нет. Ну, если вы не обновляли загрузочное ядро или initrd или что-то еще. Я уверен, что есть и другие крайние случаи. Но это все еще не идеальный способ выключения системы. Не надейся на это.
Кроме того, выполнение 'sync', вероятно, бесполезно в этой ситуации (я говорю "вероятно, бесполезно", потому что я не на 100% уверен в своих фактах и не чувствую, что проверяю факты). Запуск 'sync' до шага 'dd' не сделает образ более согласованным, потому что 'dd' не просто обходит ядро и напрямую обращается к оборудованию. 'dd' все еще проходит через ядро Linux. Если 'dd' запрашивает данные из грязных блоков (обновленные данные, которые не были синхронизированы с диском), он не игнорирует этот факт. Другими словами, 'dd' фактически скопирует грязные блоки, даже если они еще не были синхронизированы с диском. Обратите внимание, что я полагаю, что есть варианты, чтобы попросить 'dd' сделать это (обойти буферы ядра и напрямую связаться с оборудованием), но это не стандартное поведение.