Я хочу создать скрипт для резервного копирования данных для случайных пользователей. Они должны вставить ключ USB и просто щелкнуть сценарий для резервного копирования данных на нем.
К сожалению, в Centos 6.6 автоматическое монтирование меняет точку монтирования каждый раз, в зависимости от имени USB-ключа / media / workkey / media / mykey / media / minikey ....
Как я могу установить статическую точку для автоматического монтирования?
1. Сделайте базовое имя USB-устройства постоянным (например: USB-устройство Iomega)
Чтобы избежать путаницы, является ли базовое имя вашего блочного USB-устройства / dev / sdb1, / dev / sdd1 или / dev / sdXn, мы делаем его постоянно / dev / Iomega в любое время, когда вы его подключаете. Это можно сделать с помощью устройства udev. управляющий делами. У вас должен быть уже установлен udev в вашей системе, в противном случае установите его с помощью:
apt-get install udev
Затем найдите текущее базовое имя вашего внешнего USB-диска с помощью команды fdisk:
fdisk -l
Это вернет что-то вроде этого:
ВЫХОД: Диск / dev / sdc: 2000,3 ГБ, 2000396746752 байта 255 головок, 63 сектора / дорожка, 243201 цилиндр Единицы = 16065 цилиндров * 512 = 8225280 байт Идентификатор диска: 0x001425a0
Идентификатор конечных блоков начала загрузки устройства System / dev / sdc1 1 243201 1953512001 b W95 FAT32
Где базовое имя вашего внешнего USB-устройства - / dev / sdc. Затем используйте команду udevinfo с / dev / sdc в качестве аргумента для получения атрибута модели: $ udevinfo -a -p / sys / block / sdc / | grep model ATTRS {модель} == "Ext HDD 1021"
Теперь, когда у нас есть атрибут модели, мы можем добавить его в /etc/udev/rules.d/custom.rules следующей строкой: SUBSYSTEM == "scsi", ATTRS {model} == "Ext HDD 1021", SYMLINK + = "Iomega% n"
На этом этапе все, что нам нужно сделать, это перезапустить диспетчер устройств udev:
/etc/init.d/udev перезапуск
Остановка диспетчера событий горячего подключения: udevd. Запуск диспетчера событий горячего подключения: udevd.
Подключите внешний USB-накопитель, и ваше новое базовое имя будет: ls -l / dev / Iomega * lrwxrwxrwx 1 root root 3 23.02.2011 12:36 / dev / Iomega -> sdc lrwxrwxrwx 1 root root 12 23.02.2011 12 : 36 / dev / Iomega0 -> bsg / 14: 0: 0: 0 lrwxrwxrwx 1 root root 4 23.02.2011 12:36 / dev / Iomega1 -> sdc1 lrwxrwxrwx 1 root root 3 23-02-23 12:36 / dev / Iomega3 -> sg3
Обратите внимание, что / dev / Iomega1 указывает на / dev / sdc1, который является именно тем разделом, который нас интересует, и мы используем его далее для настройки autofs. 2.Настройка autofs
Для начала нам нужно установить autofs:
apt-get install autofs
Настроить autofs - довольно простая задача. Все, что нам нужно сделать, это отредактировать два простых файла.
Начнем с главного файла, добавив следующую строку: / media / /etc/auto.ext-usb --timeout = 10, defaults, user, exec, uid = 1000
Затем отредактируйте файл /etc/auto.ext-usb, который мы включили в конфигурацию главного файла конфигурации: Iomega -fstype = auto: / dev / Iomega1
Перезапустите autofs:
/etc/init.d/autofs restart 3. Тестирование конфигурации autofs
Мы сделали! Каждый раз, когда вы подключаете внешний USB-накопитель Iomega, aufosf будет добавлять ваше устройство в список активных точек монтирования. Подключите внешний USB-накопитель и выполните: /etc/init.d/autofs status
ВЫВОД:
Настроенные точки монтирования:
/ usr / sbin / automount --timeout = 10 / media file /etc/auto.ext-usb, defaults, user, exec, uid = 1000
Активные точки монтирования:
/ usr / sbin / automount --pid-file = / var / run / autofs / _media.pid --timeout = 10 \ / media file /etc/auto.ext-usb, defaults, user, exec, uid = 1000
и
монтировать
ВЫХОД: automount (pid7124) на / media type autofs (rw, fd = 4, pgrp = 7124, minproto = 2, maxproto = 4)
Обратите внимание, хотя наш диск теперь указан как активная точка монтирования, диск еще не смонтирован! autofs только ждет, пока пользователь получит доступ к указанному каталогу точки монтирования, и как только это произойдет, он смонтирует файловую систему.
Пример: $ cd / media / $ ls $ cd Iomega $ ls lost.dir музыкальное изображение ps3 видео mystuff $ cd .. $ ls Iomega
Из вывода выше видно, что каталог Iomega был создан только тогда, когда я пытался получить к нему доступ. Каждый раз, когда вы подключаете внешний USB-диск, вы можете мгновенно получить к нему доступ через какой-то ярлык на рабочем столе или в закладках. Я надеюсь, что это поможет создать и запустить сценарий, так как имя USB-накопителя будет оставаться неизменным каждый раз, когда вы его подключаете.
Вы можете использовать здесь часть ответа, которая касается добавления правил udev: https://unix.stackexchange.com/questions/74123/what-is-the-service-thats-responsible-for-automounting-a-usb-drive-in-centos-6
# automounting usb flash drives
# umask is used to allow every user to write on the stick
# we use --sync in order to enable physical removing of mounted memory sticks -- this is OK for fat-based sticks
# I don't automount sda since in my system this is the internal hard drive
# depending on your hardware config, usb sticks might be other devices than sdb*
ACTION=="add",KERNEL=="sdb*", RUN+="/usr/bin/pmount --sync --umask 000 %k usbstick"
ACTION=="remove", KERNEL=="sdb*", RUN+="/usr/bin/pumount %k"
ACTION=="add",KERNEL=="sdc*", RUN+="/usr/bin/pmount --sync --umask 000 %k usbstick"
ACTION=="remove", KERNEL=="sdc*", RUN+="/usr/bin/pumount %k"
sudo udevadm control --reload-rules
Это гарантирует, что палка каждый раз устанавливается в одном и том же месте. Вероятно, есть более элегантный способ написать правило udev для обнаружения USB-накопителей.
Обратите внимание, что вы также можете заставить udev автоматически запускать ваш скрипт резервного копирования после монтирования.