#概要
今日はLinuxサーバにて外部HDDをマウントするSCRIPTについて紹介します。
#背景
いつも使っていた外部HDDを違うファイルシステムにFORMATして刺すとmountコマンドのコマンドを変更が必要です。
それを自動で検知してマウントするようなSCRIPTを作成したいなと思ってます。
#作業環境
SBC : tinkerboard
OS : Debian GNU/Linux 9
#事前確認
現在外部HDDがどんな状況であるか確認しましょう。
次のコマンドで確認ができます。
#全体のディスク情報を確認するコマンド
linaro@linaro-alip:~$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 59G 7.3G 49G 13% /
devtmpfs 988M 0 988M 0% /dev
tmpfs 997M 4.0K 997M 1% /dev/shm
tmpfs 997M 17M 980M 2% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 997M 0 997M 0% /sys/fs/cgroup
/dev/mmcblk0p7 4.9M 329K 4.3M 8% /boot
tmpfs 200M 8.0K 200M 1% /run/user/1000
/dev/sdb5 466G 320G 147G 69% /media/linaro/hdd1
tmpfs 200M 0 200M 0% /run/user/0
#外部HDDのみ表示するため、「sd」文字列でGrepしています。
#以下はOSが起動された後自動でマウントされたパスになります。
linaro@linaro-alip:~$ df -h |grep sd
/dev/sdb5 466G 320G 147G 69% /media/linaro/hdd1
linaro@linaro-alip:~$
#外部HDDは今二つを繋げているので、次のコマンドでも確認できます。
#この外部HDDはなぜか自動でマウントされていないです。
linaro@linaro-alip:~$ sudo fdisk -l /dev/sda|grep /dev/sda | cut -c 1-10|tail -1
Partition 1 does not start on physical sector boundary.
/dev/sda2
#これは自動でマウントされているので、次のような表示になります。
linaro@linaro-alip:~$ sudo fdisk -l /dev/sdb|grep /dev/sdb | cut -c 1-10|tail -1
/dev/sdb5
linaro@linaro-alip:~$
#自動SCRIPTソース
次の内容通りにコードを追加して保存します。
linaro@linaro-alip:~$ cat hdd.sh
#!/bin/sh
sudo df -h|grep sd > /home/linaro/df.txt
dfh=`wc -l /home/linaro/df.txt|cut -c 1`
if [ $(( dfh )) -le 1 ]; then
echo "run"
sudo fdisk -l /dev/sda|grep /dev/sda | cut -c 1-10|tail -1 >/home/linaro/sda.txt
sda=`tail -1 /home/linaro/sda.txt`
sudo umount $sda
sudo fdisk -l /dev/sdb|grep /dev/sdb | cut -c 1-10|tail -1 >/home/linaro/sdb.txt
sdb=`tail -1 /home/linaro/sdb.txt`
sudo umount $sdb
sudo mount -t ntfs $sda /home/linaro/mnt/sda1
sudo mount -t ntfs $sdb /home/linaro/mnt/sdb1
else
echo "not run"
fi
#実行
次のコマンドで実行します。
#mountされていないので、次のメッセージは表示されます。
linaro@linaro-alip:~$ sh hdd.sh
Partition 1 does not start on physical sector boundary.
#正しく指定した場所にmountされていることが確認できます。
linaro@linaro-alip:~$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 59G 18G 39G 31% /
devtmpfs 988M 0 988M 0% /dev
tmpfs 997M 4.0K 997M 1% /dev/shm
tmpfs 997M 17M 980M 2% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 997M 0 997M 0% /sys/fs/cgroup
/dev/mmcblk0p7 4.9M 329K 4.3M 8% /boot
tmpfs 200M 8.0K 200M 1% /run/user/1000
tmpfs 200M 0 200M 0% /run/user/0
/dev/sda2 7.3T 4.6T 2.7T 64% /home/linaro/mnt/sda1
/dev/sdb5 466G 320G 147G 69% /home/linaro/mnt/sdb1
linaro@linaro-alip:~$
#crontabに設定
次のコマンドで設定画面を表示して内容通りに追加しましょう。
本当はBootする際に1回実行する方法はありますが、起動中に変更もあるので、
cronに設定しました。
設定した後、起動してみましょう。
linaro@linaro-alip:~$ crontab -l
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
30 * * * * sh /home/linaro/hdd.sh
#OS起動した後、確認
次のコマンドで確認できます。
念のため、手動でも実行してみました。
Linux linaro-alip 4.4.194 #75 SMP Thu Jun 24 14:03:34 UTC 2021 armv7l
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Nov 3 17:16:45 2016
linaro@linaro-alip:~$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 59G 18G 39G 31% /
devtmpfs 988M 0 988M 0% /dev
tmpfs 997M 4.0K 997M 1% /dev/shm
tmpfs 997M 9.0M 988M 1% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 997M 0 997M 0% /sys/fs/cgroup
/dev/mmcblk0p7 4.9M 329K 4.3M 8% /boot
tmpfs 200M 8.0K 200M 1% /run/user/1000
/dev/sda2 7.3T 4.6T 2.7T 64% /home/linaro/mnt/sda1
/dev/sdb5 466G 320G 147G 69% /home/linaro/mnt/sdb1
tmpfs 200M 0 200M 0% /run/user/0
linaro@linaro-alip:~$ sh hdd.sh
not run
#終わりに
今回のSCRIPTはいかがでしょうか。
昨日一杯飲んだからか今朝早く目が覚めたので、書いてみました。
やっぱり朝早く何かやるのがよいですね。W