{"id":4303,"date":"2016-11-01T16:18:24","date_gmt":"2016-11-01T16:18:24","guid":{"rendered":"http:\/\/www.deuzebranaweb.com.br\/?p=4303"},"modified":"2016-11-01T16:18:24","modified_gmt":"2016-11-01T16:18:24","slug":"clone-seu-hd-compactando-e-visualizando-a-copia-em-tempo-real-com-o-comando-dd","status":"publish","type":"post","link":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/2016\/11\/01\/clone-seu-hd-compactando-e-visualizando-a-copia-em-tempo-real-com-o-comando-dd\/","title":{"rendered":"Clone seu HD, compactando e visualizando a c\u00f3pia em tempo real com o comando dd"},"content":{"rendered":"<p>Hoje precisei clonar um HD de um servidor (Sun Sparc Ultra10, rodando Debian), ent\u00e3o vasculhei o Google buscando encontrar a melhor forma de fazer isso a partir de um terminal ssh, pois a m\u00e1quina f\u00edsica est\u00e1 em produ\u00e7\u00e3o em um datacenter, e n\u00e3o pode parar.<\/p>\n<p>Encontrei v\u00e1rias mat\u00e9rias sobre como clonar HDs com o dd, inclusive aqui no VOL tem uma \u00f3tima. Por\u00e9m todas que encontrei n\u00e3o falavam como executar o dd, acompanhando a evolu\u00e7\u00e3o do processo de clonagem. Algumas mat\u00e9rias sugeriam outras solu\u00e7\u00f5es al\u00e9m do dd, mas no meu caso era impratic\u00e1vel, pois o servidor n\u00e3o tem acesso \u00e0 internet para poder baixar nada. Ent\u00e3o tinha que ser com o dd mesmo.<\/p>\n<p>Outro problema foi que o HD secund\u00e1rio que armazenaria o clone tem tamanho inferior ao HD master, e desta forma eu teria que clonar compactando os dados simultaneamente.<\/p>\n<p>Ent\u00e3o mesclei v\u00e1rias informa\u00e7\u00f5es de artigos diferentes, resultando numa eficiente dica de:<\/p>\n<p>1. clonagem de hd a quente (com o sistema rodando)<br \/>\n2. compacta\u00e7\u00e3o da imagem clonada simultaneamente<br \/>\n3. visualiza\u00e7\u00e3o da evolu\u00e7\u00e3o da clonagem<\/p>\n<p>Descrevo a solu\u00e7\u00e3o abaixo (parte do princ\u00edpio que a m\u00e1quina tenha 2 HDs instalados):<\/p>\n<p>Cen\u00e1rio:<\/p>\n<ul>\n<li>HD1 (hda) 120GB (s\u00f3 20GB em uso)<\/li>\n<li>HD2 (hdc) 80GB<\/li>\n<\/ul>\n<p>1. Primeiro vamos montar o HD slave no sistema (todos os comandos executados como root).<\/p>\n<p>Criar uma pasta &#8220;imagem&#8221; no hd master para receber o ponto de montagem do hdc slave:<\/p>\n<p><strong># mkdir imagem<\/strong><\/p>\n<p>Montar o hdc slave no sistema, na pasta &#8220;imagem&#8221;:<\/p>\n<p><strong># mount -t ext3 \/dev\/hdc1 imagem<\/strong><\/p>\n<p>Checando se a parti\u00e7\u00e3o montou de acordo como esperado:<\/p>\n<p><strong># df -h<\/strong><br \/>\n\/dev\/hdc1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a074G\u00a0\u00a0270M\u00a0\u00a0 70G\u00a0\u00a0 1% \/root\/imagem<\/p>\n<p>Se aparecer uma informa\u00e7\u00e3o parecida com a linha acima, mostra que o hdc est\u00e1 montado no caminho \/root\/imagem, ent\u00e3o est\u00e1 tudo bem, e nesse caso temos 70GB para uso. No meu caso, utilizei hdc1 pois \u00e9 a parti\u00e7\u00e3o ativa do meu HD slave. Se o seu for diferente, basta alterar o n\u00famero. Vamos continuar como processo.<\/p>\n<p>Comando para gerar a imagem-clone de hda para hdc compactando com o gzip:<\/p>\n<p><strong># dd if=\/dev\/hda | gzip -9f | of=imagem\/backup.iso bs=64k<\/strong><\/p>\n<p>No comando acima, dd if=\/dev\/hda significa a origem dos dados a serem clonados, no meu caso o hda. Entre dois pipes (|), o comando | gzip -9f| significa que ao mesmo tempo que o dd clona o hda ele compacta com o gzip no n\u00edvel mais eficiente de compacta\u00e7\u00e3o (que vai de 1 a 9), no caso o n\u00edvel 9; o &#8220;f&#8221; significa for\u00e7ar a compacta\u00e7\u00e3o para evitar qualquer problema. O restante da linha de comando, of=imagem\/backup.iso, significa a sa\u00edda dos dados, o destino do clone.<\/p>\n<p>No caso &#8220;imagem&#8221; \u00e9 a pasta criada por mim para receber o arquivo-clone, e &#8220;backup.iso&#8221; \u00e9 a imagem-clone propriamente dita, que ficar\u00e1 armazenada na pasta &#8220;imagem&#8221; que est\u00e1 montada com o hdc. O final do comando, bs=64k, \u00e9 um comando extra para o dd, que far\u00e1 a c\u00f3pia-clone em blocos de 64k.<\/p>\n<p>Com isso temos a linha de comando completa para fazer a imagem de hda para hdc.<\/p>\n<p>Por\u00e9m, o dd \u00e9 um comando bem hard, e n\u00e3o tem um mostrador da evolu\u00e7\u00e3o do clone. Dependendo da origem a ser clonada, pode demorar horas. Mas como vamos saber quando terminar\u00e1?<\/p>\n<p>Como eu j\u00e1 disse antes, esta foi uma das minha dificuldades. Ent\u00e3o atrav\u00e9s de outro terminal ssh (ou se voc\u00ea estiver no console a m\u00e1quina, pode abrir outro terminal com os comandos ALT+F2, ALTF3, ALTF4 etc, lembrando que voc\u00ea retorna para o terminal principal com ALT+F1).<\/p>\n<p>J\u00e1 no outro terminal ssh, digite os comandos abaixo.<\/p>\n<p>Comando para descobrir o n\u00famero do processo dd rodando:<\/p>\n<p><strong># top<\/strong><br \/>\n4839 root\u00a0\u00a0\u00a0\u00a0\u00a0\u00a025\u00a0\u00a0 0\u00a0\u00a02080\u00a0\u00a0784\u00a0\u00a0392 R 41.2\u00a0\u00a00.2\u00a0\u00a031:19.38 gzip<\/p>\n<p>Na tabela mostrada pelo top, procure a coluna COMMAND (mais \u00e0 direita) , a linha do dd executando. Identifique nesta linha o n\u00famero do processo (PID &#8211; process ID), que fica mais \u00e0 esquerda. No meu caso, o processo referente ao dd, como mostrado na linha acima, foi de PID 4839.<\/p>\n<p>De posse deste n\u00famero do PID, vamos executar o comando abaixo:<\/p>\n<p><strong># watch kill -USR1 $44853; sleep 1;<\/strong><\/p>\n<p>Na linha de comando acima, o servi\u00e7o &#8220;watch&#8221; mant\u00e9m na tela ao vivo, em tempo real o que vem a seguir na linha de comando. O restante do comando, kill -USR1 \u00e9 um recurso do comando dd que faz aparecer na tela a quantidade j\u00e1 executada da c\u00f3pia-clone. E $44853 onde apenas 4853 \u00e9 o n\u00famero do PID descoberto como top. Altere este n\u00famero para o do PID correspondente ao seu dd em execu\u00e7\u00e3o. Ao final, sleep 1;, faz com que o processo de visualiza\u00e7\u00e3o ser finalizado. O watch faz o comando ser executado em loop, como se voc\u00ea tivesse v\u00e1rias vezes digitando ele no prompt.<\/p>\n<p>Ent\u00e3o voc\u00ea ver\u00e1 aparecer na tela a informa\u00e7\u00e3o da clonagem a cada 2 segundos, conforme abaixo:<\/p>\n<p>36090146+0 records in<br \/>\n336090145+0 records out<br \/>\n172078154240 bytes (172 GB) copied, 4686.54 seconds, 36.7 MB\/s<\/p>\n<p>336234848+0 records in<br \/>\n336234847+0 records out<br \/>\n172152241664 bytes (172 GB) copied, 4688.49 seconds, 36.7 MB\/s<\/p>\n<p>336395536+0 records in<br \/>\n336395536+0 records out<br \/>\n172234514432 bytes (172 GB) copied, 4690.53 seconds, 36.7 MB\/s<\/p>\n<p>336555610+0 records in<br \/>\n336555610+0 records out<br \/>\n172316472320 bytes (172 GB) copied, 4692.56 seconds, 36.7 MB\/s<\/p>\n<p>Pode observar que vai aumentando, linha ap\u00f3s linha.<\/p>\n<p>&nbsp;<\/p>\n<h1>FAZENDO M\u00c1GICAS COM O WATCH<\/h1>\n<div id=\"gad336\" class=\"visible-lg visible-md visible-sm floatright\"><\/div>\n<div>\n<div>\n<p>Se tua mem\u00f3ria est\u00e1 no talo e voc\u00ea acha o <i>top<\/i> meio confuso:<\/p>\n<p><b>$ watch &#8211;interval=0 free -mtl<\/b><br \/>\nou<br \/>\n<b>$ watch &#8211;interval=0 free -ktl<\/b><\/p>\n<p>Quer acompanhar cada bloco de seu HD gravando algo?<\/p>\n<p><b>$ watch &#8211;interval=0 df -akP<\/b><\/p>\n<p>Agora por sistema de arquivo:<\/p>\n<p><b>$ watch &#8211;interval=0 df -akp -t ext3<\/b><\/p>\n<p>Rede:<\/p>\n<p><b>$ netwatch -e<\/b><\/p>\n<p>Tempo do sistema:<\/p>\n<p><b>$ watch &#8211;interval=0 uptime<\/b><\/p>\n<p>Tudo isso pode ser acompanhado de &#8220;xterm -e&#8221; se voc\u00ea estiver no X.<\/p>\n<\/div>\n<\/div>\n<p>&nbsp;<\/p>\n<p>https:\/\/www.vivaolinux.com.br\/dica\/Clone-seu-HD-compactando-e-visualizando-a-copia-em-tempo-real-com-o-comando-dd<\/p>\n<p>https:\/\/www.vivaolinux.com.br\/dica\/Fazendo-magicas-com-o-watch<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hoje precisei clonar um HD de um servidor (Sun Sparc Ultra10, rodando Debian), ent\u00e3o vasculhei o Google buscando encontrar a melhor forma de fazer isso a partir de um terminal ssh, pois a m\u00e1quina f\u00edsica est\u00e1 em produ\u00e7\u00e3o em um datacenter, e n\u00e3o pode parar&#8230;.<\/p>\n","protected":false},"author":2,"featured_media":4305,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_angie_page":false,"page_builder":"","footnotes":""},"categories":[18,20],"tags":[],"class_list":["post-4303","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-comandos-linux","category-linux"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/posts\/4303","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/comments?post=4303"}],"version-history":[{"count":0,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/posts\/4303\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/media\/4305"}],"wp:attachment":[{"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/media?parent=4303"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/categories?post=4303"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/tags?post=4303"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}