How can I access this without formatting it.

  • Illecors@lemmy.cafe
    link
    fedilink
    English
    arrow-up
    31
    ·
    edit-2
    1 year ago
    #!/usr/bin/env bash
    
    exec > /tmp/sda-debug.log 2>&1 # The last "word" of this line is 4 chars - two, greater than, ampersand and one
    
    # strict mode
    set -euxo pipefail
    IFS=$'\n\t'
    
    TARGET="/tmp/myprecious"
    
    umount /dev/sda4 || true
    mkdir -p "$TARGET"
    mount /dev/sda4 "$TARGET"
    ls -la "$TARGET" # attempt read
    touch "$TARGET"/testfile # attempt write
    
    rm "$TARGET"/testfile
    umount "$TARGET"
    rmdir "$TARGET"
    
    • Save this to a file somewhere, let’s call it sda-debug.sh
    • Make the script executable: chmod +x sda-debug.sh
    • Run it as root: sudo ./sda-debug.sh
    • Paste the content of /tmp/sda-debug.log here

    EDIT: changed the script to log everything to a file for easier copy-past-ability.

    • Programmer Belch@lemmy.dbzer0.com
      link
      fedilink
      English
      arrow-up
      20
      ·
      1 year ago

      This script will unmount the problematic drive and try to mount it to another place /tmp/myprecious, a temporary place. Then, as it says, will attempt to read and then write to the drive. Finally, it removes the file it wrote to test writeability, unmounts the drive again and removes the temporary mount place. The scripts needs root access to mount and unmount and possibly to write and read.

      Please don’t run a script you found on the internet with root access without knowing what it does.

    • pjhenry1216@kbin.social
      link
      fedilink
      arrow-up
      3
      ·
      edit-2
      1 year ago

      I would remove the formatting of the script. For me that would never run as a bash script as it’s filled with markup. Not sure if it shows up nicely for you or not so figured I’d let.you know it may not be displaying for others at least.

  • Skull giver@popplesburger.hilciferous.nl
    link
    fedilink
    arrow-up
    21
    arrow-down
    3
    ·
    1 year ago

    Gotta love that Linux verbosity! Windows will tell you "unknown error (0xabcdef)"while Linux will be super clear and tell you “error: error: rusty: unknown error”.

    It sounds to me like that partition is somehow in a bad state, so accessing the files with the standard driver is causing issues. Linux recognised the label, so it has determined the filesystem correctly, but it clearly can’t actually mount it.

    If this drive was used on Windows, it’s possible that this is because Windows didn’t properly close the drive and finish writing to it last time the drive was used. This is commonly a problem with internal disks when Windows goes to sleep/hibernation (which includes the modern fast shutdown) but in theory it’s also possible on external drives.

    If you can, try attaching the drive to Windows, then safe remove it, attach it again, and safe remove it again. That magic sequence is usually enough to get Windows to leave NTFS in a state where the open source drivers can use it again.

    If you’re planning on only using the drive with Linux, you may want to consider reformatting it into a Linux compatible file system. NTFS works on Linux, but even Microsoft’s own Windows driver is reportedly a piece of code programmers don’t like to work on. The reverse engineered Linux version is another step of jank on top of that.

    Both operating systems should be able to use exFAT reliably if you’re looking for an filesystem thst works better in Linux.

    • jayandp@sh.itjust.works
      link
      fedilink
      arrow-up
      3
      ·
      1 year ago

      Also, if you’re dual booting, Disable Fast Start in Windows! That’ll prevent drives from being mounted on Linux since Windows never technically “shutsdown” when Fast Boot is enabled.