Страница 1 из 1

Скрипты sh: подставить диск в строку

Добавлено: 2015-06-25 13:56:21
Fast_Deer
Всем здравствуйте!
Занялся писательством для собственных серваков скрипта бекапа. Захотелось некой универсальности - чтоб один скрипт на несколько серваках работал без допиливания руками каждый раз. Собственно сам скрипт есть и работает, но проблема состоит в том, что хотелось бы опросить жесткий диск на предмет имени партиции по условию (к примеру, нужен диск с корневой директорией, или диск подмонтированный в /home) и на выходе получить строку вида /dev/ada0p1.
Может кто-нибудь подсказать (с примерами, для лучшего понимания) как это можно реализовать?
Для справки: Стоит FreeBSD 10.1, shell: sh

Скрипты sh: подставить диск в строку

Добавлено: 2015-06-29 11:29:07
Fast_Deer
Решил я данную проблему, хотя по моему и не совсем красиво. Для тех кому интересно:

Код: Выделить всё

mount | grep '/opt' | fold -s -w 12 | sed q
где
mount - просмотр смонтированных разделов (причем раздел / всегда идет первым);
grep '/opt' - вывод только нужного раздела (к примеру '/opt');
fold -s -w 12 - разрыв строки по пробелу и перенос через 12 символов. Здесь как раз получаем нужный раздел в первой строке
sed q - оставляем только первую строку

Скрипты sh: подставить диск в строку

Добавлено: 2015-06-29 20:30:22
FiL
не стану утверждать за фрю, но на линуксах / не всегда будет первым.
А в сложных случаях вообще не факт, что раздел смонтирован на что-то видa /dev/ada0p1

Скрипты sh: подставить диск в строку

Добавлено: 2015-06-30 10:39:28
Fast_Deer
Меня больше интересовало строка для получения данного вида, чтобы "скормить" это dump. А зная имя каталога куда монтируется нужный диск с помощью данного примера можно получить имя девайса. И не важно какой будет у него вид (это лишь для примера было написано) - лишь бы dump его читал.
Нужно это для того чтоб при одинаковой разбивке дисков на разных серваках (да и просто после переустановки) воткнуть готовый скрипт и (образно) "забыть про него", а не затачивать каждый раз под конкретный сервак

Не скажу за все линуксы, так как под рукой лишь урезанные версии (роутер, медиаплеер, NAS), но на NAS`е rootfs идет первым:

Код: Выделить всё

-bash-3.2$ mount
rootfs on / type rootfs (rw)
ubi0:rootfs on / type ubifs (rw)
/proc on /proc type proc (rw)
/sys on /sys type sysfs (rw)
/proc/bus/usb on /proc/bus/usb type usbfs (rw)
......
-bash-3.2$ cat /proc/version
Linux version 2.6.22.18-Netgear ......
на роутере тоже самое: rootfs идет первым

Скрипты sh: подставить диск в строку

Добавлено: 2015-06-30 14:06:03
FiL
Обрати внимание на то,что там замаунчено на /. Сомнительно, что дампу можно будет скормить rootfs

Скрипты sh: подставить диск в строку

Добавлено: 2015-06-30 17:03:37
Fast_Deer
ничего не поделаешь - согласен.

Скрипты sh: подставить диск в строку

Добавлено: 2015-06-30 17:47:20
FiL

Код: Выделить всё

root@proxmox:~# mount |head
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=3081495,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=2467536k,mode=755)
rpool/ROOT/pve-1 on / type zfs (rw,relatime,xattr,noacl)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=9758500k)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
root@proxmox:~# uname -a
Linux proxmox 2.6.32-37-pve #1 SMP Wed Feb 11 10:00:27 CET 2015 x86_64 GNU/Linux

Код: Выделить всё

[root@gb1 ~]# mount |head
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,size=8206524k,nr_inodes=2051631,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (rw,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
[root@gb1 ~]# uname -a
Linux gb1.tchlab.org 3.10.0-229.4.2.el7.x86_64 #1 SMP Wed May 13 10:06:09 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
NНу и так далее... это по поводу того, что / всегда первым.