#!/bin/bash # # mass-ripper: sequentially copy CDs and DVDs. # # Parameters BASENAME="`basename $0`" DRIVE="$1" ITERATION="$2" INFO="0" MOUNT="/media/cdrom" # Disk drive if [ -z "$DRIVE" ]; then DRIVE="/dev/sr0" fi # Iteration if [ -z "$ITERATION" ]; then ITERATION="1" fi # Set sudo config if [ "`whoami`" != 'root' ]; then sudo="sudo" fi # Greeter echo "Mass CD/DVD copier, press Ctrl-C to abort..." # Thanks http://askubuntu.com/questions/197662/how-do-i-auto-copy-cd-contents-on-insertion while true; do # Print just once per disk if [ "$INFO" == "0" ]; then echo "Waiting for disk #$ITERATION..." fi # Check if media is available #HAS_MEDIA=$(grep $DRIVE /proc/self/mounts) HAS_MEDIA=$(udisks --show-info $DRIVE | grep "has media" | cut -d : -f 2 | sed -e 's/ //g') # If it doesn't exist, loop until it does with 1 second pause if [ "$HAS_MEDIA" == "0" ]; then #echo -ne "." INFO="1" sleep 1 else echo "Got it! Mounting..." mkdir -p $MOUNT || exit 1 $sudo mount -r $DRIVE $MOUNT || exit 1 #mkdir -p $ITERATION || exit 1 echo "Copying data..." cp -vr $MOUNT $ITERATION || exit 1 echo "Fixing permissions..." find $ITERATION/ -type d -exec chmod 755 {} \; find $ITERATION/ -type f -exec chmod 644 {} \; echo "Umounting..." $sudo umount $MOUNT # Eject the CD with suitable pauses to avoid any buffer problems echo "Ejecting media..." sleep 10 eject $DRIVE sleep 10 # Increase counter let ITERATION++ INFO="0" fi # Still looping! Go back and wait for another CD! done