Add and format a non-boot disk
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
MOUNT_DIR=/mnt/data | |
DEVICE_NAME=/dev/$(lsblk | grep disk | tail -n1 | awk '{print $1}') | |
VERSION="0.1.0" | |
USAGE="\ | |
Usage: add-disk.sh [--help | --version] | |
[--mount DIR] [--dev DEVICE] | |
Options: | |
-h, --help show this message and exit | |
--version show version and exit | |
--mount DIR set mount dir [default: $MOUNT_DIR] | |
--dev DEVICE set device name [default: $DEVICE_NAME] | |
Example: | |
sudo ./add-disk.sh --mount /mnt/disks/data1 --dev /dev/sda | |
" | |
main() { | |
while [[ "$#" > 0 ]]; do | |
case ${1:-""} in | |
-h|--help) echo "$USAGE"; exit; break;; | |
--version) echo "$VERSION"; exit 0; break;; | |
--mount) MOUNT_DIR=${2:-""}; shift 2;; | |
--dev) DEVICE_NAME=${2:-""}; shift 2;; | |
*) printf "Unknown argument: $1\n$USAGE"; exit 1; break;; | |
esac | |
done | |
mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard $DEVICE_NAME | |
mkdir -p $MOUNT_DIR | |
mount -o discard,defaults $DEVICE_NAME $MOUNT_DIR | |
chmod a+w $MOUNT_DIR | |
local DEVICE_UUID=$(blkid $DEVICE_NAME | awk -F'"' '{print $2}') | |
local dest=/etc/fstab | |
local line="UUID=$DEVICE_UUID $MOUNT_DIR ext4 discard,defaults,nofail 0 2" | |
grep -qsPe "^$line$" "$dest" | |
if [[ $? ]]; then | |
echo "already added to $dest" | |
else | |
tee --append $dest <<< "$line" | |
fi | |
cat $dest | |
} | |
main $@ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment