{"id":3258,"date":"2019-12-23T10:40:11","date_gmt":"2019-12-23T09:40:11","guid":{"rendered":"https:\/\/esferas.org\/msqlu\/?p=3258"},"modified":"2019-12-23T10:40:11","modified_gmt":"2019-12-23T09:40:11","slug":"montaje-selectivo-de-discos-externos","status":"publish","type":"post","link":"https:\/\/esferas.org\/msqlu\/2019\/12\/23\/montaje-selectivo-de-discos-externos\/","title":{"rendered":"Montaje selectivo de discos externos"},"content":{"rendered":"\n<div class=\"wp-block-image\"><figure class=\"alignleft size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/cdn2.iconfinder.com\/data\/icons\/disk-drives\/512\/External_Drive_USB.png\" alt=\"\" width=\"144\" height=\"144\"\/><\/figure><\/div>\n\n\n\n<p>O a cu\u00e1les, cu\u00e1ndo y c\u00f3mo dar acceso al sistema a estos dispositivos.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Ya he hablado de ello antes as\u00ed que voy a pensar aqu\u00ed c\u00f3mo har\u00eda que este mecanismo pudiese instalarse con un paquete, sin reinventar la p\u00f3lvora y sin excesos que ralenticen su puesta en marcha. Luego todo son fallos y es mejor tener algo real que arreglar que no un precioso dise\u00f1o en papel.<\/p>\n\n\n\n<p>Aspectos a tener en cuenta:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Qu\u00e9 dispositivos se pueden o deben montar<\/li><li>Montar autom\u00e1ticamente o a petici\u00f3n<\/li><li>D\u00f3nde situarlos en el sistema<\/li><li>C\u00f3mo realizar el montaje: si est\u00e1n cifrados o no, o si requieren credenciales o alg\u00fan elemento externo<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Qu\u00e9 dispositivos montar<\/h3>\n\n\n\n<p>O c\u00f3mo identificarlos de manera un\u00edvoca. Y aqu\u00ed es d\u00f3nde tenemos que elegir entre usar todo el dispositivo o \u00fanicamente una partici\u00f3n. Sea como sea la cuesti\u00f3n est\u00e1 en c\u00f3mo obtener informaci\u00f3n del disco empleando herramientas que ya existen: <a href=\"https:\/\/manpages.debian.org\/buster\/util-linux\/lsblk.8.en.html\">lsblk<\/a> y <a href=\"https:\/\/manpages.debian.org\/buster\/hdparm\/hdparm.8.en.html\">hdparm<\/a>. <\/p>\n\n\n\n<p>Tanto si el disco se usa por completo o tan s\u00f3lo una partici\u00f3n obtendremos el modelo y el n\u00famero de serie empleando lo siguiente:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo lsblk -o +MODEL,UUID,SERIAL -d -J\n{\n   \"blockdevices\": &#91;\n      {\"name\":\"sda\", \"maj:min\":\"8:0\", \"rm\":false, \"size\":\"931,5G\", \"ro\":false, \"type\":\"disk\", \"mountpoint\":null, \"model\":\"WDC_WD10EALX-009BA0\", \"uuid\":null, \"serial\":\"WD-WMATR0247666\"},\n      {\"name\":\"sdb\", \"maj:min\":\"8:16\", \"rm\":false, \"size\":\"232,9G\", \"ro\":false, \"type\":\"disk\", \"mountpoint\":null, \"model\":\"MAXTOR_STM3250820AS\", \"uuid\":null, \"serial\":\"9QE2ELJC\"},\n      {\"name\":\"sr0\", \"maj:min\":\"11:0\", \"rm\":true, \"size\":\"1024M\", \"ro\":false, \"type\":\"rom\", \"mountpoint\":null, \"model\":\"TSSTcorp_CDDVDW_SH-224DB\", \"uuid\":null, \"serial\":\"R93E6YBD902D99\"}\n   ]\n}<\/code><\/pre>\n\n\n\n<p>Al emplear el formato JSON para la salida de resultados es mucho m\u00e1s sencillo que un script seleccione y guarde lo que nos interesa. Tambi\u00e9n es mucho m\u00e1s r\u00e1pido lo inverso, encontrar el archivo de dispositivo al que corresponde el disco. Hay que recordar que cada vez que el dispositivo externo aparece no est\u00e1 garantizado un mismo archivo de bloques. Si se tocan las reglas de <em>udev<\/em> es posible asignarle uno siempre pero pretendo que sea m\u00e1s sencillo que eso. <\/p>\n\n\n\n<p>Otro aspecto a destacar es que los par\u00e1metros empleados en el ejemplo de arriba est\u00e1n seleccionando dispositivos al completo y no particiones. En caso de no usar <em>-d<\/em> aparece m\u00e1s informaci\u00f3n que puede filtrarse con el atributo <em>type<\/em>. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>      {\"name\":\"sdb\", \"maj:min\":\"8:16\", \"rm\":false, \"size\":\"232,9G\", \"ro\":false, \"type\":\"disk\", \"mountpoint\":null, \"model\":\"MAXTOR_STM3250820AS\", \"uuid\":null, \"serial\":\"9QE2ELJC\",\n         \"children\": &#91;\n            {\"name\":\"sdb1\", \"maj:min\":\"8:17\", \"rm\":false, \"size\":\"46,6G\", \"ro\":false, \"type\":\"part\", \"mountpoint\":null, \"model\":null, \"uuid\":\"cff28dfc-ef8b-4bb1-8e75-8646c0050b72\", \"serial\":null},\n            {\"name\":\"sdb2\", \"maj:min\":\"8:18\", \"rm\":false, \"size\":\"1K\", \"ro\":false, \"type\":\"part\", \"mountpoint\":null, \"model\":null, \"uuid\":null, \"serial\":null},\n            {\"name\":\"sdb5\", \"maj:min\":\"8:21\", \"rm\":false, \"size\":\"7,5G\", \"ro\":false, \"type\":\"part\", \"mountpoint\":\"&#91;SWAP]\", \"model\":null, \"uuid\":\"9dc9fa42-0cb9-4774-9b7e-7a9b3db68d8e\", \"serial\":null},\n            {\"name\":\"sdb6\", \"maj:min\":\"8:22\", \"rm\":false, \"size\":\"178,9G\", \"ro\":false, \"type\":\"part\", \"mountpoint\":null, \"model\":null, \"uuid\":\"fcc3ed4a-b9f2-486d-b83f-5fa71fb4adf8\", \"serial\":null}\n         ]\n      },<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Montaje a petici\u00f3n o autom\u00e1tico <\/h3>\n\n\n\n<p>En este caso tengo claro que prefiero que el acceso al dispositivo sea bajo demanda, evitando cualquier automatismo. Tal vez en versiones posteriores vea que es conveniente pero no por ahora. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">D\u00f3nde montarlo <\/h3>\n\n\n\n<p>El punto de montaje debe ser predeterminado y la \u00fanica concesi\u00f3n es crearlo si no existe en el momento previo al montaje. Por el momento no contemplo dar soporte a montajes m\u00faltiples. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">C\u00f3mo montar el disco <\/h3>\n\n\n\n<p>De nuevo busco la simplicidad as\u00ed que lo \u00fanico que voy a a\u00f1adir al programa es el saber si el disco est\u00e1 cifrado y d\u00f3nde (o c\u00f3mo si es un programa externo) encontrar la clave. La preparaci\u00f3n previa del volumen tendr\u00e1 que hacerse a mano. <\/p>\n\n\n\n<p>En las referencias de m\u00e1s abajo se puede encontrar informaci\u00f3n de sobra sobre el proceso, incluyendo tutoriales paso a paso. Yo voy a estudiarlo para ir incorpor\u00e1ndolo al paquete que estoy escribiendo y del que luego har\u00e9 un resumen en forma de publicaci\u00f3n. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Resumiendo<\/h3>\n\n\n\n<p>El paquete en el que estoy trabajando puede verse en <a href=\"https:\/\/git.astillas.net\/msat\/tree\/topics\/sb-disk\">https:\/\/git.astillas.net\/msat\/tree\/topics\/sb-disk<\/a> y va a servir para:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Registrar un disco en la configuraci\u00f3n (sbd-register)<\/li><li>Montar un disco para las copias (sbd-mount)<\/li><li>Desmontarlo una vez acabado (sbd-unmount)<\/li><\/ol>\n\n\n\n<p>Las ampliaciones que surjan seg\u00fan se trabaje con \u00e9l. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Referencias<\/h3>\n\n\n\n<p><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Identificando dispositivos:<ul><li><a href=\"https:\/\/www.cyberciti.biz\/faq\/find-hard-disk-hardware-specs-on-linux\/\">HowTo: Find Out Hard Disk Specs \/ Details on Linux<\/a><\/li><li><a href=\"https:\/\/www.maketecheasier.com\/lsblk-list-storage-information-linux\/\">List Device Names, Disk and Partition Information in Linux with lsblk<\/a><\/li><li><a href=\"https:\/\/wiki.debian.org\/HardDisk\">HardDisk in Debian Wiki<\/a><\/li><\/ul><\/li><li>Cifrado de archivos y vol\u00famenes:<ul><li><a href=\"https:\/\/www.cyberciti.biz\/hardware\/howto-linux-hard-disk-encryption-with-luks-cryptsetup-command\/\">How To: Linux Hard Disk Encryption With LUKS [ cryptsetup Command ]<\/a><\/li><li><a href=\"https:\/\/bash.cyberciti.biz\/security\/linux-opens-luks-partition-mount-dm-crypt-partition\/\">Shell script: Opens LUKS Partition and Sets Up a Mapping [ Mounting Encrypted Partition ]<\/a><\/li><li><a href=\"http:\/\/How to full encrypt your linux system with lvm on luks\">How to full encrypt your linux system with lvm on luks<\/a><\/li><\/ul><\/li><\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>O a cu\u00e1les, cu\u00e1ndo y c\u00f3mo dar acceso al sistema a estos dispositivos.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","webmentions_disabled_pings":false,"webmentions_disabled":false,"footnotes":""},"categories":[5],"tags":[34,348,41,271,931,930],"class_list":["post-3258","post","type-post","status-publish","format-standard","hentry","category-hardware","tag-backups","tag-criptografia","tag-debian","tag-discos","tag-lsblk","tag-luks"],"_links":{"self":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/3258","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/comments?post=3258"}],"version-history":[{"count":9,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/3258\/revisions"}],"predecessor-version":[{"id":3267,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/3258\/revisions\/3267"}],"wp:attachment":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/media?parent=3258"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/categories?post=3258"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/tags?post=3258"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}