Eu realmente fiz isso e funciona. É bastante confiável, também, todas as coisas consideradas. É uma boa ideia? Não, provavelmente não. Você pode perder dados ou acabar com arquivos corrompidos. Com uma partição ext3, na inicialização, você receberá um aviso de que a partição "não foi desmontada corretamente, verifique forçada". Em seguida, executará o 'fsck'. Pode levar muito tempo para o fsck retornar o sistema de arquivos para um estado limpo, mas ele chegará lá. Um sistema de arquivos ext4 fará isso mais rápido.
Pense desta forma, um 'dd' de um sistema de arquivos ao vivo é equivalente a extrair o plugue de energia de um servidor enquanto ele está rodando. Se você extraiu o plugue de energia de um servidor, você esperaria que o sistema de arquivos fosse arruinado e que a máquina não inicializasse novamente? Claro que não. Bem, a menos que você estivesse atualizando seu kernel de inicialização ou initrd ou algo assim. Tenho certeza de que existem outros casos extremos. Mas esta ainda não é a maneira ideal de desligar um sistema. Não confie nisso.
Além disso, a execução de "sincronização" provavelmente é inútil nessa situação (digo "provavelmente inútil" porque não tenho 100% de certeza dos meus fatos aqui e não me sinto como verificação de fatos). Executar 'sync' antes da etapa 'dd' não tornará a imagem mais consistente porque 'dd' não simplesmente ignora o kernel e fala diretamente com o hardware. 'dd' ainda passa pelo kernel do Linux. Se o 'dd' solicitar dados de blocos sujos (dados atualizados que não tenham sido sincronizados para a unidade), ele não ignorará esse fato. Em outras palavras, o 'dd' irá copiar os blocos sujos mesmo que eles ainda não tenham sido sincronizados com o disco. Note que eu acredito que existem opções para pedir 'dd' para fazer isso (ignorar os buffers do kernel e conversar diretamente com o hardware), mas este não é o comportamento padrão.