submitted 6 months ago* (last edited 6 months ago) by to c/linux@lemmy.ml
 

I have some old HFS formatted burned CDs burning in toast on a classic mac. A friend needs his stuff moved off these backups onto his NAS but his modern mac cannot read these CDs. I can mount them in linux manually but the filenames have illegal characters so I cannot copy them over to anything without losing like half of them.

How to I copy these files off the CDs?

all 23 comments

sorted by: hot top controversial new old
[–] 10 points 6 months ago (2 children)

You probably need to pass the iocharset mount option.

  • source
  • hideshow 2 child comments
  • [–] 7 points 6 months ago
    #!/bin/bash
    
    #
    ***
    Configuration
    ***
    SOURCE_DEV="/dev/sr0"
    MOUNT_POINT="/mnt/mac_legacy_cd"
    DEST_DIR="$HOME/Desktop/mac_recovered_files"
    
    # 1. Ensure the system is ready
    echo "Checking for HFS support..."
    sudo modprobe hfs 2>/dev/null
    sudo modprobe hfsplus 2>/dev/null
    
    # Create directories
    sudo mkdir -p "$MOUNT_POINT"
    mkdir -p "$DEST_DIR"
    
    # 2. Attempt to mount
    # We try HFS first with MacRoman to UTF-8 translation
    echo "Attempting to mount $SOURCE_DEV..."
    sudo mount -t hfs -o ro,iocharset=utf8 "$SOURCE_DEV" "$MOUNT_POINT" 2>/dev/null
    
    if [ $? -ne 0 ]; then
        echo "HFS mount failed, trying HFS+ (Mac OS Extended)..."
        sudo mount -t hfsplus -o ro "$SOURCE_DEV" "$MOUNT_POINT"
    fi
    
    # 3. Verify mount and Copy
    if mountpoint -q "$MOUNT_POINT"; then
        echo "Mount successful. Copying files to $DEST_DIR..."
        # -a: archive mode (preserves symlinks, permissions, times)
        # -v: verbose
        # -z: compress (not really needed for local, but good practice)
        # -P: show progress
        rsync -avzP "$MOUNT_POINT/" "$DEST_DIR/"
        
        echo "---"
        echo "Copy complete. Unmounting..."
        sudo umount "$MOUNT_POINT"
        echo "Done. You can find your files in $DEST_DIR"
    else
        echo "Error: Could not mount the disc. Ensure the CD is inserted and $SOURCE_DEV is the correct path."
        exit 1
    fi
    
    
  • source
  • [–] 5 points 6 months ago (7 children)

    Not sure what the actual question is here, but if the files are there, the filesystem is mounted properly using hfsplus, and you can read the files, then any incompatible characters will be properly substituted, and the files can be copied.

    Your friend will just have to put some work into properly renaming then afterward.

  • source
  • hideshow 7 child comments
  • [–] [S] 4 points 6 months ago* (6 children)

    HFS, not HFS+. The characters are not being substituted. KDE throws errors and dies. rsync and cp fail to move all files, giving a list of things they skipped.

  • source
  • parent
  • hideshow 6 child comments
  • [–] 4 points 6 months ago (5 children)
  • [–] [S] 1 point 6 months ago (4 children)

    nope, that didnt help. theres HFS stuff this system doesnt like so it can see things but not interact with them

  • source
  • parent
  • hideshow 4 child comments
  • [–] 1 point 6 months ago (3 children)

    I'm pretty sure you just have an old and degraded disc.

  • source
  • parent
  • hideshow 3 child comments
  • [–] [S] 1 point 6 months ago (2 children)

    I spun up an old Mac running tiger and all but one cd was read fine.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 3 points 6 months ago (1 child)

    I haven't needed to do this myself but have a few ideas if you haven't already tried these yet

    • Are you trying to mount as HFS, or as iso9660? Those CD media you are looking are are probably hybrid ISO/HFS discs so they technically can be read in either format.. I suspect mounting as iso9660 with/without its mount options could help you copy the data afterwards. Check the man page for mount to review the options, thinking iocharset and/or utf8 could be helpful if the defaults aren't working.

    • If the standard mount / cp isn't working you could also give other tools a look. Have not tested this myself but I saw the Debian repo has hfsplus - which includes hpmount and hpcopy which should in theory be able to copy off HFS+ media. No idea if the tool also works with HFS but could be worth a go.

  • source
  • hideshow 1 child comment
  • [–] [S] 1 point 6 months ago

    I have been plying with hcopy but its giving me backtalk over syntax. It's whining about what it find s being directories. Yea, that why I passed -r to copy recursively. it just responds by saying thats a directory and not copying anything.

    I cant figure out what iocharset is wants for normal mount options so it can copy some things that way but not others.

    Also, again, this is HFS, not HFS+.

  • source
  • parent
  • [–] 2 points 6 months ago* (2 children)

    If nobody has a better idea, you could create a loop device with a HFS filesystem, copy the CD to that filesystem, replace all bad filenames, then copy everything to a normal filesystem.

    Edit: apparently there's a --iconv option in rsync: https://askubuntu.com/a/540960

  • source
  • hideshow 2 child comments
  • [–] 1 point 6 months ago

    Spin up a hackintosh to read it.

  • source
  • [–] 1 point 6 months ago (3 children)

    Have you tried creating a period-accurate Mac VM, allowing passthrough of the drive peripheral to the VM, then copying the data from the VM to something like a Mac format flashdrive?

  • source
  • hideshow 3 child comments
  • [–] [S] 1 point 6 months ago (2 children)

    Then what would read that flash drive? That doesn’t solve the problem.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 2 points 6 months ago* (1 child)

    I was under the impression that the barrier for the friend's modern mac being unable to read the drive was due to the lack of hardware interface. Is there a greater barrier than that for the data?

    If the data itself needs to be converted, consider looking for tools that can function from inside the VM (so none of the original data is lost before translation).

  • source
  • parent
  • hideshow 1 child comment
  • [+] 1 point 6 months ago