If you're using *nix then you can do cool things.
I have a monster script that takes care of updating rockbox, hex editing the rockbox.ipod and transcoding all of my flac via ffmpeg and parallel and using rsync for the rest of the music.
Eventually I might share it if anyone is interested, but it has a way to go to be generalised for other peoples use.
Simple way to create a playlist of your music, and make the path relative for the iPod:
find "$mount_point/Music/" -type f \( -iname "*.mp3" -o -iname "*.flac" -o -iname "*.m4a" -o -iname "*.ape" -o -iname "*.wav" -o -iname "*.wma" \) -print | sed "s%$mount_point/Music/%%g" | sort > "$playlist_file"
You can also use diff to create an additional playlist only of the newly transferred files. I've been doing this for a long time and its a nice way to see how my collection has changed over time.
diff --unchanged-group-format='' "$playlist_file" "$playlist_tmp" > "$playlist_of_sync"
Managed to get to a playlist of 55,000+ tracks, with 32G still free on a 512G msata drive
