0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

LinuxでHDD自動マウントSCRIPT

Posted at

#概要
今日は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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?