{"id":1199,"date":"2016-03-01T17:08:51","date_gmt":"2016-03-01T15:08:51","guid":{"rendered":"http:\/\/blog.walii.es\/?p=1199"},"modified":"2020-07-02T12:34:20","modified_gmt":"2020-07-02T10:34:20","slug":"backup-de-todo-tu-raspberry","status":"publish","type":"post","link":"https:\/\/blog.walii.es\/?p=1199","title":{"rendered":"Backup de todo tu Raspberry"},"content":{"rendered":"<p>Hoy les dejo un detalle que siempre es muy util, si estamos haciendo una investigaci\u00f3n forense  inform\u00e1tica o queremos clonar un disco, siempre es necesario conocer todos los comandos.<br \/>\nEn este caso el que utilizo continuamente para clonar proyectos con la RaspberrPi, es el DD, ya que utilizo a diario MAC oSX y LINUX, la mejor forma de realizar esto es mediante la interfaz de comando.<\/p>\n<p>De esta manera evitamos perdidas de rendimiento con el renderizado de las GUI y dem\u00e1s tonter\u00edas que solo embellecen el programa, que por debajo realiza la misma tarea.<\/p>\n<p>Necesitamos acceso ROOT, por tal motivo pondremos el sudo delante del comando.<\/p>\n<p><strong>sudo dd if=\/dev\/rdisk1 of=~\/Desktop\/pi.img bs=1m<\/strong><\/p>\n<p>El atributo \u00abif\u00bb nos indica el Input File.<br \/>\nEl atributo \u00abof\u00bb nos indica el Output File.<\/p>\n<p>En el caso inicial queremos realizar una copia o imagen del disco SD de la rasp. Por esto en el caso del atributo \u00abif\u00bb indicaremos el disco que se le asigno a la tarjeta SD.<br \/>\nCuando conectamos una tarjeta a nuestro MACOSX o LINUX, este le asigna una unidad o device. La cual encontraremos dentro del directorio \u00ab\/dev\u00bb<\/p>\n<p>El comando gen\u00e9rico para ver esto es \u00abdf -k\u00bb, el cual devuelve una lista de las \u00abdevices\u00bb asignadas a los diferentes dispositivos.<\/p>\n<p>En MacOsx veremos disk con un numero. Por ejemplo \/dev\/disk1<br \/>\nEn Linux veremos un sd con una letra. Por ejemplo \/dev\/sdb o sdc<br \/>\nLas \u00abs1 o n\u00fameros\u00bb tras estas, solo indican las particiones. En este caso no nos importan.<\/p>\n<p>Para estar seguros de lo que hacemos podemos ejecutar \u00abdf -k\u00bb antes de poner la tarjeta SD. Obteniendo por ejemplo:<\/p>\n<p>sh-3.2# df -k<br \/>\nFilesystem                        1024-blocks      Used Available Capacity   iused   ifree %iused  Mounted on<br \/>\n\/dev\/disk0s2                        487546976 461145040  26145936    95% 115350258 6536484   95%   \/<br \/>\ndevfs                                     181       181         0   100%       628       0  100%   \/dev<br \/>\nmap -hosts                                  0         0         0   100%         0       0  100%   \/net<br \/>\nmap auto_home                               0         0         0   100%         0       0  100%   \/home<br \/>\nlocalhost:\/DiO2XSaMW-DZkD_gbnPrOS   487546976 487546976         0   100%         0       0  100%   \/Volumes\/MobileBackups<\/p>\n<p>Lo importante son los \u00abdevs\u00bb<\/p>\n<p>Conectamos la tarjeta SD y repetimos el comando.<\/p>\n<p>sh-3.2# df -k<br \/>\nFilesystem                        1024-blocks      Used Available Capacity   iused   ifree %iused  Mounted on<br \/>\n\/dev\/disk0s2                        487546976 461145200  26145776    95% 115350298 6536444   95%   \/<br \/>\ndevfs                                     185       185         0   100%       640       0  100%   \/dev<br \/>\nmap -hosts                                  0         0         0   100%         0       0  100%   \/net<br \/>\nmap auto_home                               0         0         0   100%         0       0  100%   \/home<br \/>\nlocalhost:\/DiO2XSaMW-DZkD_gbnPrOS   487546976 487546976         0   100%         0       0  100%   \/Volumes\/MobileBackups<br \/>\n\/dev\/disk1s1                            57288     20288     37000    36%       512       0  100%   \/Volumes\/boot<\/p>\n<p>M\u00e1gicamente aparece un nuevo \u00abdev\u00bb llamado disk1s1.<br \/>\nEn MacOSX tambi\u00e9n existe otro comando de lectura mas c\u00f3moda. \u00abdiskutil list\u00bb<\/p>\n<p>sh-3.2# diskutil  list<br \/>\n\/dev\/disk0 (internal, physical):<br \/>\n#:                       TYPE NAME                    SIZE       IDENTIFIER<br \/>\n0:      GUID_partition_scheme                        *500.1 GB   disk0<br \/>\n1:                        EFI EFI                     209.7 MB   disk0s1<br \/>\n2:                  Apple_HFS MacOsx                  499.2 GB   disk0s2<br \/>\n3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3<br \/>\n\/dev\/disk1 (external, physical):<br \/>\n#:                       TYPE NAME                    SIZE       IDENTIFIER<br \/>\n0:     FDisk_partition_scheme                        *8.0 GB     disk1<br \/>\n1:             Windows_FAT_32 boot                    58.7 MB    disk1s1<br \/>\n2:                      Linux                         7.9 GB     disk1s2<\/p>\n<p>En ambos comandos vemos que el disco SD es el \u00abdisk1\u00bb.<\/p>\n<p>Con dicha informaci\u00f3n ya podemos incluir el atributo \u00abif\u00bb = \/dev\/disk1 (\u00bfporque disk1 y no disk1s1? porque queremos copiar el disco completo y no solo una partici\u00f3n).<\/p>\n<p>en el atributo \u00abof\u00bb tendremos que indicar el destino de los datos. En este caso podemos poner un archivo de imagen. Por ejemplo \u00abcopiaRasp.img\u00bb<\/p>\n<p>Finalemente el ultimo atributo que no es obligatorio pero ayuda, es el \u00abBS\u00bb, que indica la cantidad de bloques que queremos leer en cada ciclo. En este caso se puede poner lo que desees, pero tras varias pruebas hemos determinado que lo mas compatible con todos los sistemas es poner \u00ab1Mb\u00bb.<\/p>\n<p>Ya tenemos todo, construimos el comando.<\/p>\n<p><strong>$ sudo dd if=&#8217;\/dev\/disk1&#8242; of=&#8217;copiaRasp.img&#8217; bs=1m<\/strong><\/p>\n<p>antes de ejecutar el comando vamos a \u00abtunearlo un poco\u00bb<\/p>\n<p>La experiencia nos ha dicho siempre que si leemos de un dispositivo, es mejor que no este montado, para evitar cambios mientras lo leemos, por tal motivo lo desmontaremos.<\/p>\n<p>En linux<br \/>\n<strong>$sudo unmount \/dev\/disk1<\/strong><br \/>\nEn MacOsx<br \/>\n<strong>$diskutil unmountDisk \/dev\/disk1<\/strong><\/p>\n<p>Tambi\u00e9n la experiencia nos ense\u00f1a que si leemos el disco original en formato RAW, es una lectura mas r\u00e1pida. Por tal motivo reemplazamos el \u00abdisk1\u00bb por \u00abrdisk1\u00bb<\/p>\n<p>Qued\u00e1ndonos este comando:<\/p>\n<p><strong>$sudo dd if=&#8217;\/dev\/rdisk1&#8242; of=&#8217;copiaRasp.img&#8217; bs=1m<\/strong><\/p>\n<p>Una vez que tenemos nuestra imagen copiada, lo cual tarda un tiempo proporcional a la velocidad de lectura de nuestra tarjeta SD y al tama\u00f1o de esta.<\/p>\n<p>Nota: Con este comando la imagen generada tendr\u00e1 el mismo tama\u00f1o que el tama\u00f1o de la SD, porque copia todo el disco.<\/p>\n<p>Procederemos a quitar la tarjeta SD y poner la nueva, y ejecutamos el comando de forma inversa.<\/p>\n<p>Verificamos el \u00abdevice\u00bb asignado a nuestra tarjeta SD, en la mayor\u00eda de los casos como quitamos una y conectamos otra el numero de device ser\u00e1 el mismo. Para otros casos no, y por eso mejor verificamos esto con el comando anteriormente mencionado \u00abdf -k o diskutil list\u00bb<\/p>\n<p>Cuando tenemos seguridad del numero del device ejecutaremos el comando. No antes, ya que este paso y el comando DD ejecutado como ROOT, son una herramienta muy poderosa, y puede eliminarnos un disco en segundos.<br \/>\nVerificamos nuevamente que el device sea el correcto y si es necesario, una vez mas. Nada es suficiente para cuidar nuestro ordenador.<\/p>\n<p><strong>$sudo dd if=&#8217;copiaRasp.img&#8217; of=&#8217;\/dev\/rdisk1&#8242; bs=1m<\/strong><\/p>\n<p>La escritura siempre toma mas tiempo, y necesitamos paciencia.<\/p>\n<p>Ahora mejorando lo anterior, podemos aprovechar el espacio y reducir el archivo de backup podemos comprimir la imagen con \u00abgzip\u00bb, este comando elimina todo el espacio en blanco de la tarjeta y comprime estos espacios.<br \/>\nPor ejemplo si tenemos \u00ab0000000000\u00bb el comando gzip comprime en \u00ab10*0\u00bb, es una forma de explicarlo.<\/p>\n<p>Para comprimirlo podemos hacerlo todo en el mismo comando, por ejemplo utilizando \u00ab|\u00bb<\/p>\n<p><strong>sudo dd if=\/dev\/rdisk1 bs=1m | gzip &gt; copiaRasp.gz<\/strong><\/p>\n<p>Y para copiar la imagen a la nueva tarjeta SD<\/p>\n<p><strong>gzip -dc ~\/Desktop\/pi.gz | sudo dd of=\/dev\/rdisk1 bs=1m<\/strong><\/p>\n<p>Os recomiendo utilizar este ultimo comando, ya que se aprovecha mucho mejor el espacio y la imagen no depende del tama\u00f1o de la SD original sino de los programas que tengamos instalados.<br \/>\nEn mi caso, el primer comando resulto una imagen de 8GB, porque la tarjeta tenia este tama\u00f1o, y el segundo comando resulto una imagen de 4,3GB porque los datos ocupaban eso.<\/p>\n<p>Saludos.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hoy les dejo un detalle que siempre es muy util, si estamos haciendo una investigaci\u00f3n forense inform\u00e1tica o queremos clonar un disco, siempre es necesario conocer todos los comandos. En este caso el que utilizo continuamente para clonar proyectos con la RaspberrPi, es el DD, ya que utilizo a diario MAC oSX y LINUX, la &hellip;<br \/><a href=\"https:\/\/blog.walii.es\/?p=1199\" class=\"more-link pen_button pen_element_default pen_icon_arrow_double\">Seguir leyendo <span class=\"screen-reader-text\">Backup de todo tu Raspberry<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":1262,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[68,6,10,63],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.walii.es\/index.php?rest_route=\/wp\/v2\/posts\/1199"}],"collection":[{"href":"https:\/\/blog.walii.es\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.walii.es\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.walii.es\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.walii.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1199"}],"version-history":[{"count":2,"href":"https:\/\/blog.walii.es\/index.php?rest_route=\/wp\/v2\/posts\/1199\/revisions"}],"predecessor-version":[{"id":1264,"href":"https:\/\/blog.walii.es\/index.php?rest_route=\/wp\/v2\/posts\/1199\/revisions\/1264"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.walii.es\/index.php?rest_route=\/wp\/v2\/media\/1262"}],"wp:attachment":[{"href":"https:\/\/blog.walii.es\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1199"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.walii.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1199"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.walii.es\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1199"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}