{"id":678,"date":"2015-09-10T11:28:13","date_gmt":"2015-09-10T14:28:13","guid":{"rendered":"http:\/\/www.nerdadas.com.ar\/blog\/?p=678"},"modified":"2015-09-15T09:51:06","modified_gmt":"2015-09-15T12:51:06","slug":"backup-en-caliente-en-vmware-esxi-5-x-6-x","status":"publish","type":"post","link":"https:\/\/www.nerdadas.com\/blog\/backup-en-caliente-en-vmware-esxi-5-x-6-x\/","title":{"rendered":"Backup en Caliente en VMWare ESXI 5.x 6.x"},"content":{"rendered":"<p>As\u00ed como surgen las cosas en la vida&#8230; tuve la necesidad de hacer un respaldo completo de las m\u00e1quinas virtuales de mi servidor con<strong> VMWare ESXI 5.X<\/strong>. Una tarea que deber\u00e9 repetir cada semana.<\/p>\n<p>Primero pens\u00e9 en <strong><a href=\"http:\/\/www.veeam.com\/es-lat\/vm-backup-recovery-replication-software.html\">Veeam<\/a><\/strong>, la aplicaci\u00f3n de los que todos los <strong>\u00abVMWare guys\u00bb<\/strong> habla. Si si, es gratis&#8230; pero mi ESXI tambi\u00e9n y eso dificult\u00f3 las cosas. <strong>ESXI free no permite que aplicaciones de tercero usen las apis nativas;<\/strong> as\u00ed que me tuve que arremangar y encontrar otra soluci\u00f3n a mi problema.<\/p>\n<p>As\u00ed encontr\u00e9 esta aplicaci\u00f3n que tiene todas las funciones pero no todas me dejaban contento. XSIBackup hace todo por vos, backupea en caliente y lo manda d\u00f3nde quieras pero no siempre funciona, env\u00eda emails configurando los par\u00e1metros de tu smtp en la l\u00ednea de comandos y hasta te cocina unas salchichas mientras esperas los backups(bueno&#8230; eso \u00faltimo no lo hace :-(). Como segu\u00ed infeliz con esta app&#8230; cree mi propio script para automatizar esta tarea.<\/p>\n<ol>\n<li>Primero a instalar la app:\u00a0<a href=\"http:\/\/33hops.com\/xsibackup-vmware-esxi-backup.html\">http:\/\/33hops.com\/xsibackup-vmware-esxi-backup.html<\/a>\u00a0y hacerla funcionar!.<\/li>\n<li>Definiremos como <strong>192.168.1.1 el VMWare ESXI de producci\u00f3n<\/strong> y <strong>192.168.1.2 el ESXI de backup<\/strong> (d\u00f3nde las virtuales deber\u00e1n estar listas para arrancar con un click!)<\/li>\n<li>Resolv\u00ed que usar\u00e9 <strong>xsibackup<\/strong> s\u00f3lo para realizar el<strong> backup en caliente<\/strong> y nada m\u00e1s.<\/li>\n<li>La parte de env\u00edo al equipo remoto la har\u00e9 con<strong> scp a trav\u00e9s de ssh<\/strong> y as\u00ed empec\u00e9 a jugar.<\/li>\n<\/ol>\n<p>XSIbackup, instalaci\u00f3n:<\/p>\n<p>[pastacode lang=\u00bbbash\u00bb message=\u00bbInstalaci\u00f3n de XSIBACKUP\u00bb highlight=\u00bb\u00bb provider=\u00bbmanual\u00bb]<\/p>\n<pre><code>#Creamos un directorio temporal para nuestra app\r\nmkdir \/temp\/\r\ncd \/temp\/\r\n\r\n#Descargamos la app con el comando recomendado en la web\r\nwget http:\/\/33hops.com\/downloads\/xsibackup.zip -O xsibackup.zip && unzip -o xsibackup.zip && chmod 0700 xsibackup*\r\n\r\n#Hacemos el comando accesible desde todos lados.\r\ncp xsibackup* \/usr\/bin\/\r\nchmod +x \/usr\/bin\/xsibackup*\r\n\r\n<\/code><\/pre>\n<p>[\/pastacode]<\/p>\n<p>El backup se har\u00e1 en un equipo remoto en el momento m\u00e1s propicio, es necesario que jam\u00e1s nos pida una password, para eso copiaremos nuestro certificado de seguridad en el equipo remoto para entrar a este sin autenticaci\u00f3n.<\/p>\n<p>[pastacode lang=\u00bbbash\u00bb message=\u00bbGanando acceso al equipo remoto\u00bb highlight=\u00bb\u00bb provider=\u00bbmanual\u00bb]<\/p>\n<pre><code>#Hacemos accesibles los comandos que necesitamos\r\ncd \/usr\/bin\/\r\nln -s \/usr\/lib\/vmware\/openssh\/bin\/ssh-keygen\r\n\r\n#Acceso remoto\r\n\r\n#Generamos Certificado de Seguridad (Archivo de Identidad del equipo)\r\nssh-keygen -t dsa \r\n#Nos pedira una Passphrase que tranquilamente podemos ignorar con [enter][enter]\r\n\r\n#Copiamos el certificado al equipo que almacenar\u00e1 los backups de ESXI\r\nscp \/\/.ssh\/id_dsa.pub root@192.168.1.2:\/etc\/ssh\/keys-root\/authorized_keys<\/code><\/pre>\n<p>[\/pastacode]<\/p>\n<p>Preparando el terreno para nuestro script<\/p>\n<p>[pastacode lang=\u00bbbash\u00bb message=\u00bbGeneramos nuestro script\u00bb highlight=\u00bb\u00bb provider=\u00bbmanual\u00bb]<\/p>\n<pre><code>#Creamos el directorio para nuestro script\r\nmkdir \/backup\/\r\n\r\n#Creamos el script\r\nvi \/backup\/backup.sh<\/code><\/pre>\n<p>[\/pastacode]<\/p>\n<p>Nuestro Script!<\/p>\n<p>[pastacode lang=\u00bbbash\u00bb message=\u00bbbackup.sh\u00bb highlight=\u00bb\u00bb provider=\u00bbmanual\u00bb]<\/p>\n<pre><code>#!\/bin\/bash\r\n#Separemos los logs para que humanos puedan leerlo\r\necho &#34;-----------------------------&#34; &gt;&gt;backup.log\r\n#Cu\u00e1ndo empezo el laburo?.\r\necho &#34;Inicio Backup&#34; &gt;&gt;backup.log\r\ndate &gt;&gt;backup.log\r\n\r\n#Comienzo el backup de las m\u00e1quinas virtuales\r\nxsibackup --backup-point=\/vmfs\/volumes\/datastore1\/backup --backup-type=custom --backup-vms=&#34;oracle,DHCP-Server&#34; \r\n\r\n#Desregistro las m\u00e1quinas virtuales del host remoto... por si las moscas!\r\nssh root@192.168.1.2 &#039;vim-cmd vmsvc\/unregister \/vmfs\/volumes\/datastore1\/oracle\/oracle.vmx&#039;\r\nssh root@192.168.1.2 &#039;vim-cmd vmsvc\/unregister \/vmfs\/volumes\/datastore1\/DHCP-Server\/DHCP_Server.vmx&#039;\r\n\r\n#Envio las copias de mis virtuales al ESXI de backup\r\nscp -r \/vmfs\/volumes\/datastore1\/backup\/* root@192.168.1.2:\/vmfs\/volumes\/datastore1\/\r\n\r\n#Registro las m\u00e1quinas virtuales en el host remoto prepar\u00e1ndome para lo peor\r\nssh root@192.168.1.2 &#039;vim-cmd solo\/register \/vmfs\/volumes\/datastore1\/oracle\/oracle.vmx&#039;\r\nssh root@192.168.1.2 &#039;vim-cmd solo\/register \/vmfs\/volumes\/datastore1\/DHCP-Server\/DHCP-Server.vmx&#039;\r\n\r\n#Elimino mis copias locales, ya est\u00e1n a salvo ;-)\r\nrm -R  \/vmfs\/volumes\/datastore1\/backup\/\r\n#Genero nuevamente el directorio de backups para repetirme ma\u00f1ana\r\nmkdir \/vmfs\/volumes\/datastore1\/backup\/\r\n\r\n#Cu\u00e1ndo termino el backup?\r\necho &#34;Backup Completo&#34; &gt;&gt;backup.log\r\ndate &gt;&gt;backup.log\r\n#Finnish!!<\/code><\/pre>\n<p>[\/pastacode]<\/p>\n<p>Y ahora&#8230;. Tenemos que asegurarnos que todos los domingos\u00a0a las 00hs corra el script.<\/p>\n<p>[pastacode lang=\u00bbbash\u00bb message=\u00bbProgramando el cron en ESXI\u00bb highlight=\u00bb\u00bb provider=\u00bbmanual\u00bb]<\/p>\n<pre><code>#Matamos el cron para programarlo como queramos.\r\ncat \/var\/run\/crond.pid\r\n#Nos dir\u00e1 un id de proceso que yo reemplazo por xxxxxx\r\npid: xxxxxx\r\nKill xxxxxx\r\nvi \/var\/spool\/cron\/crontabs\/root\r\n\r\n#contenido del crontab\r\n1    1    *   *   *   \/sbin\/tmpwatch.py\r\n1    *    *   *   *   \/sbin\/auto-backup.sh\r\n0    *    *   *   *   \/usr\/lib\/vmware\/vmksummary\/log-heartbeat.py\r\n*\/5  *    *   *   *   \/sbin\/hostd-probe ++group=host\/vim\/vmvisor\/hostd-probe\r\n\r\n#Agregamos esta l\u00ednea con el Cron backup a las 00hs todos los domingos.\r\n* 0 * 6 sh \/backup\/backup.sh<\/code><\/pre>\n<p>[\/pastacode]<\/p>\n<p>Ahora ejecutamos el script por primera vez <em><strong>(#sh \/backup\/backup.sh)<\/strong><\/em>, abrimos una sesi\u00f3n de <strong>VSphere<\/strong> en el <strong>servidor de backups de VMWare<\/strong> y miramos como las m\u00e1quinas virtuales van apareciendo registradas en el \u00e1rbol del servidor, listas para funcionar en cuantito todo falle!. \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As\u00ed como surgen las cosas en la vida&#8230; tuve la necesidad de hacer un respaldo completo de las m\u00e1quinas virtuales de mi servidor con VMWare ESXI 5.X. Una tarea que deber\u00e9 repetir cada semana. Primero pens\u00e9 en Veeam, la aplicaci\u00f3n de los que todos los \u00abVMWare guys\u00bb habla. Si si, es gratis&#8230; pero mi ESXI [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":685,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[64,3,161,1,17,804],"tags":[811,922,807,808,813,923,924,925,935,934,292,937,927,938,939,928,517,805,936,929,930,926,869,299,824,932,814,931,933],"class_list":["post-678","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ideas","category-programacion","category-seguridad","category-sin-categoria","category-tecnologia","category-ti","tag-4-1","tag-4-6","tag-5-1","tag-5-5","tag-5-x","tag-6-0","tag-6-1","tag-6-x","tag-auth","tag-authentication","tag-backup","tag-backup-sh","tag-backupear","tag-bash","tag-code","tag-copia","tag-de","tag-esxi","tag-login","tag-respaldo","tag-respaldos","tag-restore","tag-seguridad","tag-sh","tag-ssh","tag-ssh-keygen","tag-vmware","tag-vsphere","tag-without"],"_links":{"self":[{"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/posts\/678","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/comments?post=678"}],"version-history":[{"count":24,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/posts\/678\/revisions"}],"predecessor-version":[{"id":721,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/posts\/678\/revisions\/721"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/media\/685"}],"wp:attachment":[{"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/media?parent=678"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/categories?post=678"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/tags?post=678"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}