This script is intended to be placed in device notifier, i.e. when you click on a FS (aka 'drive'), this script should be present with the name format.
You can do this via custom actions in the device notifier settings.
As the title suggests, this's a simple format script made using kdialog which offers formatting options in a verity of FS and also checks the contents of the disk before formatting.
The first argument supplied to the disk should be a partition name (like /dev/sdb1 or /dev/sdd1 etc...).
#!/bin/bash
DEVICE="$1"
if [[ $(echo $DEVICE | grep --ignore-case sda) != "" ]]
then
kdialog --msgbox "I will not format an internal partition. This must be a mistake."
exit
fi
ch=$(kdialog --menu "Choose a filesystem" "fat" "Compatible with Windows/Linux/Mac/BSD and other devices (fat32)" "ext3" "Compatible with all Linux (faster) (ext3)" "reiser" "Highest performance on small files (Linux only) (reiserfs)" "xfs" "Highest performance on large files (Linux only) (xfs))") || exit
mount_dir="$(mount | grep $DEVICE | cut -d ' ' -f3)"
if [[ $mount_dir != "" ]]
then
cd "$mount_dir"
contents="$(ls -a -1)"
contents="${contents:5}"
kdialog --yesno "Storage device is mounted in $mount_dir and has the following contents -
$contents
Unmount and continue formatting?"
if [[ $? == 0 ]]
then
cd /
kdesudo -c "umount $DEVICE"
if [[ $? > 0 ]]
then
kdialog --yesno "Storage device is in use, force umount and continue formatting?"
if [[ $? == 0 ]]
then
kdesudo -c "umount -l $DEVICE"
else
exit
fi
fi
else
exit
fi
fi
kdialog --yesno "This'll erase all data. Continue?"
if [[ $? != 0 ]]
then
exit
fi
kdialog --msgbox "Formating in background... wait till \"Done!\" message occurs.
This may take a few minutes." &
case $ch in
"fat")
kdesudo -c "mkfs.vfat $DEVICE || kdialog --error 'The device failed to format for some reason.
Re-insert the storage device and retry. If it still does not work, contact commercial support.'"
;;
"ext3")
kdesudo -c "mkfs.ext3 $DEVICE || kdialog --error 'The device failed to format for some reason.
Re-insert the storage device and retry. If it still does not work, contact commercial support.'"
;;
"reiser")
kdesudo -c "mkfs.reiserfs -q $DEVICE || kdialog --error 'The device failed to format for some reason.
Re-insert the storage device and retry. If it still does not work, contact commercial support.'"
;;
"xfs")
kdesudo -c "mkfs.xfs -f $DEVICE || kdialog --error 'The device failed to format for some reason.
Re-insert the storage device and retry. If it still does not work, contact commercial support.'"
;;
esac
kdialog --msgbox "Done!"
No comments:
Post a Comment