LINUX.ORG.RU
ФорумAdmin

BackUp. Скрип для монтирования отчуждаемых носителей

 , , ,


0

2

Всем привет. Имеется такая задача.

Дано:

  • сервер под управление ОС Линукс
  • 2 внешних HDD

Нужно написать скрипт который будет в указанное время монтировать один из 2х HDD(второй диск лежит в надежном месте), копировать указанные файлы, после этого диск отмонтировать. Затем диск в сервере физически меняется и процедура повторяется.

Загвоздка у меня произошла в том, что я не могу понять как мне находить нужный диск и соответственно раздел на диске /dev/sdXY? Допустим я знаю объем или UUID. А дальше всё просто. mount найденного раздела, копирование данных, затем umount, замена диска.


#!/bin/bash

DISK=200G # Допустим я знаю объем или UUID

B=«/mnt/backup»

[ «#backup» != «cat /etc/crontab | grep "#backup" | awk -F" " {'print $13'}» ] && echo ‘0 23 * * 1-6 root $(sh backup.sh) >> /dev/null 2>&1 #backup’ >> /etc/crontab

fdisk -l > q && cat q | grep $DISK | awk -F" " {‘print $1’}

result=$?

echo $result

if [ $result -eq 0 ]

then

[ ! -d $B ] && mkdir -p $B

DEV=fdisk -l > q && cat q | grep $DISK | awk -F" " {'print $1'}

mount $DEV $B

result=$?

if [ $result -eq 0 ]

then

echo "$DEV mounted on $B"


 ####  Здесь твой backup скрипт!!!

    echo "Backup выполнен `date`!"

    umount /mnt/backup

    exit 1

else

echo "$DEV umounted on $B"

fi

else

echo «$DEV is not valid»

exit 1

fi

demo13
()
Последнее исправление: demo13 (всего исправлений: 2)
Ответ на: комментарий от anonymous

:-)))

Сделай как кулхацкер!!! … и покажи здесь!

гы-гы…

demo13
()
 Привет!

Нахождение диска по объёму не всегда правильно, так как может быть и другой диск с таким же объёмом. Поэтому лучше находить по UUID.

Скрипт можно посмотреть здесь:

http://togusak.ddnss.de/server/backup.sh

Не пишу сюда, так как не все знаки отoбражаются корректно.

Скрипт проверил, нужно только внести параметры своих дисков из fdisk -l.

demo13
()
Ответ на: комментарий от demo13

Спасибо, диск буду искать по UUID. Опираться на объем считаю не совсем корректно.

bredis
() автор топика

отчуждаемых носителей

Ну все, славянофилы упились настолько, что импортозаместили русское же слово «извлекаемый».

t184256 ★★★★★
()
Ответ на: комментарий от demo13

Может кто подскажет. Написал такую строку

lsblk -o +uuid,name | grep -E "34E030F1E030BB46|7CACFADDACFA913E" | awk {'print $7'}

И задался вопросом, а без grep это можно сделать?

lsblk -o +uuid,name | awk '/34E0/ {print $7}'
bredis
() автор топика
Ответ на: комментарий от bredis

Вот и ответ.

lsblk -o +uuid,name | awk '/35E0|7CAC/ {print $7}'
bredis
() автор топика
Ответ на: комментарий от bredis

и да, awk в этой ситуации вообще может некорректно работать, если раздел не примонтирован, т.к. $7 будет пустым (точнее он будет со смещением на другой столбец).

teod0r ★★★★★
()
Последнее исправление: teod0r (всего исправлений: 1)
Ответ на: комментарий от slowpony

«$line» == *«34E030F1E030BB46»*

а если там точка монтирования с таким именем?

teod0r ★★★★★
()
Ответ на: комментарий от t184256

Это больше похоже на марксистов, чем на славянофилов.

damix9 ★★★
()
Ответ на: комментарий от teod0r

Вот выхлоп

[root@xxx ~]# lsblk -o +uuid,name
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
                                                UUID                                 NAME
sda           8:0    0     7T  0 disk                                                sda
└─sda1        8:1    0     7T  0 part /files    7c83d929-8446-4e81-8be1-ca4fb9127f88 sda1
sdb           8:16   0 893,8G  0 disk                                                sdb
├─sdb1        8:17   0   255M  0 part /boot/efi 8BEA-9E08                            sdb1
├─sdb2        8:18   0  31,4G  0 part [SWAP]    58737899-ab3f-4096-abac-4434f25421c8 sdb2
├─sdb3        8:19   0  23,8G  0 part /         dc86399b-67cf-4698-b273-b308149bcc21 sdb3
└─sdb4        8:20   0 838,2G  0 part /var      a0009db3-075c-4674-a244-61ea9c6d9e76 sdb4
sdc           8:32   0   3,6T  0 disk                                                sdc
└─sdc1        8:33   0   3,6T  0 part           7CACFADDACFA913E                     sdc1
nvme0n1     259:0    0   1,5T  0 disk                                                nvme0n1
└─nvme0n1p1 259:1    0   1,5T  0 part /database 17be7270-32c9-4d53-9f4c-2c5108bfbc3d nvme0n1p1
[root@xxx ~]# lsblk -o +uuid,name | awk '$8 ~ "^(34E030F1E030BB46|7CACFADDACFA913E)$" {print $7}'
[root@xxx ~]# lsblk -o +uuid,name | awk '/34E0|7CAC/ {print $7}'
7CACFADDACFA913E
[root@xxx ~]#
bredis
() автор топика
Последнее исправление: bredis (всего исправлений: 2)
Ответ на: комментарий от bredis

потому что как я и говорил, из-за отсутствующих (пустых) колонок другие колонки смещаются. нету колонки MOUNTPOINTS, и твоя UUID становится не восьмой, а седьмой.

teod0r ★★★★★
()
Ответ на: комментарий от bredis

тем, что нет ^ и $ для точного начала и конца совпадения, и тем, что это совпадение может быть в другой колонке, например в MOUNTPOINTS.

teod0r ★★★★★
()
Ответ на: комментарий от bredis

я бы смотрел в /dev/disk/by-uuid/, потом смотрел бы нужный раздел в /proc/mounts.

teod0r ★★★★★
()

Касаемо uuid. Лично я предпочёл бы partuuid, в силу ряда причин.

utanho ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.