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
    4
    ·
    4 hours 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