Cómo leer y escribir en particiones NTFS

linux_ntfs_windows.jpg

Si instalaste Ubuntu u otra distro de Linux pensando que inmediatamente podrías escribir sobre tus particiones NTFS (de Windows), te tengo malas noticias: de que se puede, se puede, pero no lo lograrás con sólo un click.

La culpa, en todo caso, no es nuestra.

Resulta que Microsoft nunca liberó las especificaciones de cómo funciona internamente este sistema de archivos, a diferencia de lo que hizo con FAT. Esto significa que para FAT sí hay soporte nativo en Linux, mientras que para NTFS no, al menos no para escritura. Esto, obviamente, ha llevado a varios programadores a lograr el desafío, desarrollando todo en ingeniería inversa, de adelante hacia atrás.

Hoy, después de mucho ensayo y error, se puede hacer sin problemas (un aplauso para los desarrolladores!).

¿Cómo lograrlo? Aquí va el Resumen Resumido™.

Las fórmulas son dos tres, y les recomiendo que las lean hasta el final. Ya verán por qué.

La primera, Captive NTFS

Ésta fue el primer proyecto que permitió leer y escribir en las particiones NTFS, y eso lo hace el proyecto más maduro de todos. Sin embargo, la compatibilidad la logran usando Wine y algunos archivos originales de Windows, lo que dificulta la instalación ya que no es absolutamente “limpia”. De hecho, para poder funcionar Captive te pide que “le consigas” ntfs.sys, ntoskrnl.exe y otros archivos más, ya que por un tema de licencias éstos no pueden venir incluídos en el paquete de Captive.

Por todo esto no recomiendo usar este método, pero si te interesa probarlo, así se usa:

Primero, obviamente bajarlo e instalarlo. Después correr captive-install-acquire para obtener los archivos necesarios (puedes sacarlos de tu instalación de Windows, o bien bajarlos desde el sitio de Microsoft). Ahora, para montar una partición (digamos que la quieres montar en /media/win):

$ sudo mkdir /media/win
$ sudo mount -t captive-ntfs /dev/hda1 /media/win

Y para que quede montada automáticamente cuando bootees, agrega esta línea a /etc/fstab:

/dev/hda1 /media/win captive-ntfs rw,umask=002,nls=utf8

Dependiendo de dónde esté tu partición NTFS tendrás que cambiar hda1 por lo que necesites. Si se trata de la tercera partición del segundo disco, por ejemplo, debería ser hdb3 (la fórmula es hd + orden del disco + número de partición).

Otro dato: éstos últimos comandos son genéricos, es decir también funcionan con los otros drivers, sólo tienes que cambiar ‘captive-ntfs’ por ‘ntfs’ o ‘ntfs-3g’. Pero ya llegaremos a eso.

La segunda, con el driver de linux-ntfs

Este método es el más fácil, aunque no el ideal. El driver viene incluído en la mayoría de las distribuciones y ya es prácticamente un estándar, básicamente porque es bien seguro. La razón de esto es que, si bien permite leer archivos y sobreescribir en los existentes, no permite crear nuevos archivos ni borrar los antiguos. Personalmente uso este método sólo cuando necesito leer algún archivo de la partición donde está Windows instalado (por ejemplo para acceder al escritorio, que está en Documents&Settings).

Demás está decir que no tienes que instalar nada.

Bueno, para montar la partición, usa los mismos comandos de arriba, pero reemplazando captive-ntfs por sólo ntfs. Es decir:

$ sudo mount -t ntfs /dev/hda1 /media/win

Y para que quede montada automáticamente cuando bootees, en /etc/fstab agregar:

/dev/hda1 /media/win ntfs rw,umask=002,nls=utf8

Y la tercera, con el nuevo ntfs-3g

Esta es la última versión del driver linux-ntfs, y en mi opinión es el método ideal. Primero, porque es completamente abierto (a diferencia de Captive que usar partes propietarias de Windows), segundo porque puedes hacer absolutamente todo (copiar, borrar, editar, etcétera), y por último: es rápido. Bien rápido. Al menos así dicen las primeras pruebas que se hiceron con el driver, que incluso lo situaron por sobre ext3, el sistema de archivos estándar de Linux (Reiser ganó por lejos).

Este driver eventualmente llegará a ser parte del kernel (por lo que tendremos soporte nativo después de todo), pero por ahora hay que instalarlo a mano para echarlo a andar.

Todo lo que tienes que hacer es instalar fuse y después ntfs-3g. Por ahora no hay paquetes .DEB para hacerlo vía Synaptic, pero puedes hacerlo compilándolo vía consola. No te asustes, son sólo un par de comandos simples. Yo ya lo hice y he ha funcionado perfecto.

UPDATE: Ya tenemos paquetes para Ubuntu, así que no te costará nada hacerlo funcionar.

Primero, agrega los siguientes repositorios a /etc/apt/sources.list:

deb http://flomertens.keo.in/ubuntu/ dapper main
deb-src http://flomertens.keo.in/ubuntu/ dapper main

Ahora instala el paquete ntfs-3g, después de actualizar el listado con Synaptic. Y para montar la partición:

$ sudo mount -t ntfs-3g /dev/hda1 /media/win

Por último, si quieres que quede montada automáticamente cuando bootees, en /etc/fstab agrega:

/dev/hda1 /media/win ntfs-3g rw,umask=002,nls=utf8

OPCIONAL: Si quieres instalar ntfs-3g compilándolo:

Sólo asegurate que (si tienes Ubuntu) tengas el paquete build-essentials instalado. Ahí viene todo lo necesario para compilar un programa. Puede que también necesites el kernel-headers o quizás el pkgbuild, dependiendo de tu distribución.

¿Listo? Después de bajar y descomprimir ambos paquetes (fuse y ntfs-3g, en ése orden), haz ésto:

$ ./configure
$ make
$ sudo make install

¿Ves que no es nada difícil? El primer comando verifica que todo esté en orden y configura las rutas de acceso para compilar el módulo. El segundo efectivamente lo compila (lo “hace”, por “make”); y el tercero lo instala. Si nunca antes habías compilado un programa, bueno, ahora lo acabas de hacer. :)

Ahora, para montar las particiones, usa el mismo método de arriba pero reemplaza “ntfs” por “ntfs-3g”. Todo listo.

56 comentarios

  1. enzoscuro says:

    Como siempre comentarios impecables, para un mundo en desastre, me parece bien!!

  2. Hito says:

    Este metodo es seguro? (por que he oido que pueden pasar desastres)

  3. vladimirprieto says:

    lo 1º es lo 1º, muy buen post y además justo a tiempo, ya que este fin de semana me disponía a hacer una búsqueda para lo mismo :)

    2º no me gusta mucho el instalar con “make install”. un amigo me recomendo checkinstall que genera automágicamente los tan queridos .deb, muy weno…héchenle un ojo.

    http://asic-linux.com.mx/~izto/checkinstall/

    3º me pregunto lo siguiente : ¿porque el autor de ntfs-3g se hecha el pollo al artico, justo cuando saca la “versión estable”? (leer lanzamiento oficial donde dice “recién lanzado”)

    ¿no será que es porque tiene alguna pifia por ahi?

    mmm

  4. Hito: en este momento estoy traspansando por ahí por 20Gb de datos con música y todo tipo de archivos a una partición ntfs con el driver nuevo.

    cero problema. :)

    vladimir: jaja, ¿crees que el tipo se está escapando por si queda alguna cagada? lo dudo, de hecho los ítemes que describe en “known issues” son cosas menores por lo general.

    checkinstall no lo conocía, voy a revisarlo.

  5. vladimir prieto says:

    si pues, checkinstall es bueno, ya que sino…como desintalas un programa instalado con “make install”?

    es fácil de usar y como dije…genera un deb del software.

    pd: este post es mas que nada para probar el tag , ya que no veo por ninguna parte que tags html puedo usar, ni menos tengo un preview que sería harto weno tenerlo.

  6. creabits.com says:

    Cómo leer y escribir en particiones NTFS…

    Una útil guía que describe tres formas para leer y escribir en esa porfiada partición NTFS desde el sistema operativo del pingüino. Ideal para usuarios de Ubuntu….

  7. meneame.net says:

    Tres formas de leer y escribir en particiones NTFS…

    Una útil guía que describe cómo leer y escribir en esa porfiada partición NTFS desde el sistema operativo del pingüino. Ideal para usuarios de Ubuntu….

  8. AnGeL says:

    Estuve intentando con Captive, pero como tengo Service Pack 2 en el XP me decía que no encontraba esos archivos que necesita Captive para funcionar. Googleé un poco y efectivamente ese es un problema común. Lo dejé así y llegaste con éste post justo a tiempo :P

    Ahorita tengo Ubuntu y el problema que me está lanzando el log al preparar la instalación de Fuse con ./configure es que mi compilador de C no genera ejecutables. Instalé el gcc. ¿Que puede ser?

  9. Ignatius says:

    “ya que sino… como desintalas un programa instalado con “make install”?”

    Pues con un “make uninstall”, por ejemplo.

  10. vladimir: quizás a futuro ponga un preview, pero lo de los tags ya es casi un estándar en todos los blogs, por eso decidí no ponerlo. :)

    Angel: instalaste build-essentials?

  11. mcperson says:

    Excelente noticia Tomás, solo por esa razón tenía formateado windows con fat 32.

    Consulta aparte, alguien ha instalado dapper en una MB Pcchips (810) con video integrado sis (y lo ha dejado operativo 100%. Lo que pasa es que lo instale, pero por diferentes problemas solo me queda en 8 bits de color (con diferentes drivers, sis, vesa, etc) y se ve feísimo.

    Salu2.

  12. LukasS says:

    Muchas gracias Tomás! No te imaginas lo util que me ha resultado la guía, porque por no poder leer y escribir (escribir más bien) sobre mis particiones NTFS me veía constantemente obligado a estar haciendo malabares y reinicios para cambiar a Windows. Sabía que se podía, pero que no era lo más seguro del mundo, y como yo no soy el rey del backup ni mucho menos…

    Esta opción me parece confiable, además la guía te quedó super didáctica! Agradecido

  13. Pons says:

    AnGeL:
    si tu gcc dice q no puede generar ejecutables, instala libc6-dev
    Eso soluciona todo ;)
    Saludos
    Pons

  14. AnGeL says:

    Gracias Pons y Tomás, aunque lo único que ya me faltaba era build-essentials.

    Ya está instalado pero nunca he modificado un fstab, y más que tengo 3 particiones NTFS. A ver si no me cargo el sistema xD

  15. soundwave says:

    “Sólo asegurate que (si tienes Ubuntu) tengas el paquete build-essentials instalado. Ahí viene todo lo necesario para compilar un programa. Puede que también necesites el kernel-headers o quizás el pkgbuild, dependiendo de tu distribución.” no me di cuenta de que no tenia el kernel-headers, e hice el proceso y no me funka… ahora, el .configure se hace estando dentro de la carpeta fuse o dentro de ntfs-3g :? ehhh???

  16. vladimir prieto says:

    “Pues con un “make uninstall”, por ejemplo”

    jejeje si, pero mejor con dpkg o mejor aun con synaptic, pero para ello debes instalarlo con un .deb y ahi es donde entra checkinstall

  17. Ignatius: make uninstall sólo funciona cuando el programador incluyó un “uninstall” dentro del .tar.gz… si no no funciona.

    soundwave: primero en fuse, después dentro de ntfs-3g. el primer paquete es una dependencia del segundo.

  18. soundwave says:

    lo acabo de instalar de buena forma …¬_¬ pero ahora no logro accederla …como deberia quedar en fstab ?

  19. Rodrigo says:

    Lo mismo, como hago para que todos puedan acceder a la partición? (pregunta newbie)

  20. soundwave: mira arriba en la guía:

    /dev/hda1 /media/win ntfs rw,umask=002,nls=utf8

    Rodrigo: agrega la línea a /etc/fstab para que se cargue al inicio. si quieres que los otros usuarios también tengan permisos de escritura, asegúrate de que agregar “gid=usuarios”, donde “usuarios” es el nombre de un grupo al que pertenezcan todos ellos.

    también puedes setearlo como “gid=##”, con el número ID del grupo.

  21. caim says:

    hola, una guia variada para montar particiones win…
    pero el ntfs-3g es beta, no seria peligroso confiar q sea la mejor manera de acceder a tu particion win?

  22. Berserker says:

    Hola a todos, me estoy volviendo loco con esto.
    Tengo instalado el kubuntu, y despues de instalar todos los paquetes que encontré (el build-essentials no lo encuentro por apt) el ./configure me da un aviso de que el modulo de fuse no esta cargado en el kernel, no se si esto es importante, y a la hora de hacer el make me dice “orden no encontrada”.
    Esto lo hago dentro de la carpeta fuse y todavia no he probado de hacerlo en la de ntfs-3g.

    Como se ve no tengo mucha exp en linux, a ver si alguien me echa una mano.

    Un saludo.

  23. vladimirprieto says:

    Berserker : make te funcionará si instalas make. búscalo con synatpic (es mas fácil).
    si sabes inglés, te recomiendo ubuntuforums y ubuntuguide (.org)

    sólo escribía para decir que no me funciona bien ntfs-3g, cree los .deb con check install, puedo leer, pero de 20 archivos (mp3), 10 se pueden leer en Hasefroch y los otros 10 apesar de que están, no los puede leer.

    al volver a ubuntu, no monta la partición porque dice que está corrupta. al regresar a Hasefroch, me manda al scandisk y me borra todos los archivos con problemas.

    con mas tiempo probaré las otras alternatvias de escritura en ntfs.

  24. luinux says:

    Hola a todos pues bien yo tengo ubuntu y mi problema es que no puedo leer mis archivos en ntfs ya instale todo lo aqui se menciona pero aun asi no mas no funciona cuando monto la particion me da un mensaje que no tengo los permisos suficientes para poder leer en win2 alguien me puede ayudar por favor me voy a volver loco, gracias.

  25. caim: sí, es beta, pero está bien probado, de hecho ya están pensando en integrarlo oficialmente al Linux-NTFS oficial. eso dice mucho, no?

    Berserker: revisa si tienes los repositoros necesarios activados en /etc/apt/sources.list.

    vladimir: “Hasefrock” == “Windows” ?? jaja

    luinux: no puedes ni siquiera accesar la partición? recuerda que tienes que montarla con sudo.

    si te llega a aparecer un mensaje de que no encuentra fuse (habiéndolo compilado antes), carga el módulo así: “sudo modprobe fuse“.

  26. tomás : si hasefroch = windows

    finalmente me funcionó, pero no tomando tu método.

    sino que uno mostrado en ubuntu forums, bueno al menos la version de ntfs-3g que sale ahi es mas nueva de la que probé a lo mejor por eso fue.

  27. luzbel says:

    Hola, me podrían explicar ¿como leer y escribir en NTFS a través de discos removibles USB con Kubuntu?.
    Estuve leyendo algo de ocupar un Sript pero hablan de nautilus y eso es de Ubuntu :(

  28. anonimo says:

    Dejen sus particiones propietarias ntfs ya olvidense de gates.. usen reiser o ext

  29. luzbel: tienes que instalar ntfs-3g, como explica el post, que es independiente de si usas KDE o GNOME.

  30. echi says:

    Por fin pude despues de muchos dias de intentos…

    a todo esto.. para montar una particion ntfs pude hacerlo con
    sudo ntfs-3g /dev… /mnt/…

  31. ph_azer says:

    ya tenia tiempo buscando esto,
    leer/escribir en ntfs pero no habia hallado nada
    creen que funcione en mandriva linux 2006??
    les agradeceria que me echaran una mano
    tengo winxp sp2
    gracias por adelantado

    Torreón, Coahuila, México

  32. g4b1 says:

    joer, soy incapaz de hacer esto
    he hecho todo lo que pone y aun asi me da todos estos errores:
    error opening partition device: dispositivo ó recurso ocupado

    failed to startup volume: dispositivo ó recurso ocupado

    failed to mount ‘/dev/sda1′: dispositivo ó recurso ocupado

    mount is denied because the ntfs volume is already exclusively opened.

    the volume may be already mounted, or another software may use it which

    could be identified for example by the help of the ‘fuser’ command.
    Es que acabo de instalarlo y no hay manera
    Venga muchas gracias
    Saludos

  33. soundwave says:

    Tomas habra algun problema con Edgy con respecto a esto ?

    Desde hace algun tiempo que debo hacer un sudo umount -a, seguido de un sudo mount -a, para recien poder escribir en NTFS alguna idea ?

    saludos

  34. friki says:

    Hola he echo paso a paso lo que indica en el post y he seguido la explicacion para el ntfs-3g me sale este error, si alguein es amable podria indicarme el porque?? gracias comunidad.

    fusermount: failed to access mountpoint /media/XP: No such file or directory
    Retrying mount …
    fusermount: failed to access mountpoint /media/XP: No such file or directory
    Failed to mount NTFSUnmounting /dev/hda1 (XP)

  35. ph_azer: por supuesto. lo único es que el paquete con todo lo necesario para compilar debe llamarse distinto.

    g4b1: todo parece que la partición ya la tienes montada. escribe “mount” y ve si está montada (y dónde). después desmóntala con “sudo umount /mnt/lugar” y vuelve a hacerlo con ntfs-3g.

    soundwave: hmmmno, no se me ocurre. pero eso es con el driver por defecto o con NTFS-3g?

    friki: parece que escribiste mal el nombre de la carpeta. ¿estás seguro que es /media/XP? recuerda que en Linux, “XP” no es lo mismo que “xp”. :)

  36. el davis says:

    hola a todos, hace unos meses que uso el ntfs-3g y me ha funcionado de maravilla, pero desde hace una semana más o menos no me funciona, actualicé algo entonces y desde ese momento me dice que no puede usar el comando ntfs-3g porque necesita versiones nuevas de fuse-utils y libc6… por qué actualiza cosas que no se pueden usar despues??… ahora no tengo acceso a mis discos duros…
    alguien me puede echar una mano???
    gracias.

  37. sacker says:

    Impresionante tutorial. “Chapó”

  38. [...] un tiempo escribí una guía que explicaba cómo lograr esta antigua proeza. Y si digo antigua es porque ya dejó de serlo. Ahora es tan [...]

  39. maldad says:

    buenas soy novato en esto del mundo linux
    y necesito montar mi particion ntfs de win estoy usando centos 5
    si trato de montar de la forma tradicional osea
    mount /dev/sda1 /mnt/windows
    me manda el siguiente error
    mount: unknown filesystem type ‘ntfs’
    por lo tanto baje un paquete de actualizacion
    fuse-ntfs.3g
    y use el siguiente comando
    ntfs-3g /dev/sda1 /mnt/windows/
    y sale este error
    FATAL: Module fuse not found.
    fusermount: fuse device not found, try ‘modprobe fuse’ first
    FUSE mount point creation failed
    Unmounting /dev/sda1 ()

    no se porque no encuentra la particion ya que si hago este comando

    /sbin/fdisk -l
    me sale esto

    Disk /dev/sda: 40.0 GB, 40020664320 bytes
    240 heads, 63 sectors/track, 5169 cylinders
    Units = cylinders of 15120 * 512 = 7741440 bytes

    Device Boot Start End Blocks Id System
    /dev/sda1 * 1 3793 28675048 7 HPFS/NTFS
    /dev/sda2 3794 5147 10236240 f W95 Ext’d (LBA)
    /dev/sda5 3794 4972 8908042 83 Linux
    /dev/sda6 4972 5111 1052226 82 Linux swap / Solaris

    por lo tanto sda1 seria la particion ntfs

    porfa ayuda
    gracias

  40. Eduaro says:

    son unos genios, muchas gracias

  41. Raspu says:

    Consultación,

    Cuando mencionas la línea “deb http://flomertens.keo.in/ubuntu/ dapper main”, debo suponer que estás hablando de Ubuntu Dapper. Si esto lo quiero hacer en Feisty tendría que finalizar dicha línea en “feisty main” en vez de “dapper main”?

  42. Eleazar says:

    @Raspu: Feisty ya trae de una vez el driver ntfs-3g, recién instalado ya esta en capacidad de leer y escribir particiones ntfs.

  43. F3RCH0 says:

    Hola a todos… tengo una inquietud, monte CentOs en una maquina virtual VmWare bajo windows, esta me creo un disco duro virtual, pero ahora quiero ver la informacion de mis particiones fisicas, que será que puedo hacer en este caso??? Somebody Help me

  44. Raspu says:

    @Eleazar: uuhhh!! de pelos!!!!

  45. EmaX says:

    Hola, yo tenía el siguiente problema al montar una partición NTFS, me daba este error:

    $ sudo mount -t ntfs-3g /dev/sda5 /media/sda5
    fusermount: mount failed: Device or resource busy
    FUSE mount point creation failed
    Unmounting /dev/sda5 ()

    Me decía que la partición estaba siendo usada… Entonces para solucionar esto, desmonte la unidad SDA5: sudo umount /dev/sda5 y la volvi a montar como me decia en el tutorial y listo(sudo mount -t ntfs-3g /dev/sda5 /media/sda5)

  46. Tincho706 says:

    La cuestion es la siguiente, cuando cargo la linea en el fstab (/dev/sda5 /media/disk ntfs-3g rw,umask=002,nls=utf8) al iniciar el SO la particion esta montada, pero no tengo permiso para escribir, por terminal bajo usuario root la desmonto la monto con “ntfs-3g /dev/sda5 /media/disk” y al entrar tengo los permisos, como puedo hacer para que una vez que inicie el SO quede montada y tenga los permisos de R/W sin desmontar y volver a montar??

  47. Eleazar says:

    @Tincho706, cambia rw,umask=002,nls=utf8 por:

    defaults,locale=es_VE.utf8

    Por supuesto el es_VE.utf8 variara dependiendo de donde rayos estas tu, lo averiguas corriendo en consola el comando locale, la primera linea que escupe el comando dice LANG=???, ese ??? es lo que tienes que poner

  48. Josue says:

    Buen post pero…
    Ya se puede hacer mas fácil y con 3 clicks.

    aquí hay un ejemplo

    http://www.empresario.com.mx/linux/escribe-en-unidades-ntfs-desde-linux.htm

    Gracias por el consejo.

  49. jano says:

    se agradece el ultimo post xd

  50. nmap says:

    Tengo el Kernel linux 2.6.20-16-generic en Ubuntu Feisty — segui los pasos descargé “fuse” compilé e instalé. instalé ntfs-3g

    y continua quitandome este error

    Unmounting /dev/disk/by-uuid/F298D72698D6E7DD (DATOS)
    fusermount: mount failed: Device or resource busy
    FUSE mount point creation failed
    Unmounting /dev/disk/by-uuid/EA040D92040D6345 (WINDOS (C:))

  51. nonaino says:

    ¿NTFS?, ¿eso no era un filesystem de un S.O. obsoleto?.
    Bromas aparte, muy bueno el articulo y como le ha pasado a otros lo he leído antes de pifiarla.

  52. Alexomayor says:

    Ola a todos.Tengo Ubuntu feisty yt engo un problema:
    No puedo ni pegar ni borrar nada de mi particion de güindolous, aunque si qe puedo leer los arxivos, apesar de haber hecho todo lo que aveis dicho.Lo único que e conseguio es la Herramienta de Configuración NTFS,pero sólo puedo marcar `Activar soporte de escritura de soportes externos´ y el otro,(el de soportes internos) está en gris y no lo puedo marcar.Tiene algo qe ver?y si no, aver si alguien me puede ayudar y muxas gracias de antemano

  53. Pulso says:

    Pregunta: esto sirve pa poder escribir en una particion ntfs k este en red???

  54. [...] partición adicional para los documentos, compartida entre los dos SO’s, y que puede ser FAT o NTFS (más adelante ext3). Esto porque, según los pasos de Linux.com, estaríamos dejando todos [...]

Deja un comentario