`eject` will work, but will not really "finish the job" regarding USB *rotating* drives. 

The best way to unplug a USB external hard-drive, *after proper unmounting*, is: 

 udisks --detach /dev/sdb

*This usually causes the drive to spin down gracefully.* 

Precisely, the [current implementation][1]: 

 - sends SCSI sync-cache command, 
 - sends SCSI stop command, 
 - unbinds the usb-storage kernel driver, 
 - suspends the USB device (power), 
 - logically disables/removes it from its USB port. 

This process is close to the manual procedure that is suggested [here][2]. 

Initial answer was [on askubuntu][3]. 


 [1]: http://cgit.freedesktop.org/udisks/tree/src/helpers/job-drive-detach.c?id=1.0.5#n182
 [2]: http://forums.debian.net/viewtopic.php?f=5&t=52627#p311645
 [3]: http://askubuntu.com/questions/56270/how-can-i-spin-down-external-hard-drive/190668#190668