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?

  • tla@lemmy.world
    link
    fedilink
    arrow-up
    1
    ·
    40 minutes 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
    
    
  • elmicha@feddit.org
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    5 hours ago

    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

    • muusemuuse@sh.itjust.worksOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      2 hours ago

      that looks like something I tried earlier that partially worked. It seems like for that method I need the iocharset declared at mount time and then to use rsync with the correct iconv flags

  • just_another_person@lemmy.world
    link
    fedilink
    arrow-up
    2
    ·
    7 hours ago

    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.