Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Резервное копирование на FLASH-накопитель  (Прочитано 2871 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн koluna

  • Автор темы
  • Участник
  • *
  • Сообщений: 137
    • Просмотр профиля
Всем привет!

Пишу на bash небольшой скрипт, осуществляющий резервное копирование. Запуск скрипта осуществляется или по расписанию или вручную.
В скрипте хотелось бы примонтировать FLASH, скопировать туда что надо, затем отмонтировать.
Запускать буду под Debian.

Как это лучше сделать?
Т. к., на монтирование нужны права root, то вижу пока следующие варианты.

  • Автоматическое монтирование при загрузке через fstab. Накопитель должен быть постоянно подключен.
  • Настройка sudo т. о., чтобы при монтировании не запрашивался пароль.
  • Смена владельца на root и установка бита suid.

Оффлайн jtprog

  • Новичок
  • *
  • Сообщений: 36
  • F**k the system!!!
    • Просмотр профиля
    • Сисадминиум
Поясните пожалуйста, а зачем отмонтировать после всех действий?!
У меня все никак не получается немного другая реализация: Запуск скрипта на бэкап при подключении определенного харда по usb.
Сисадминю  и иногда пишу об этом у себя в бложике

Оффлайн Freezeman

  • Активист
  • *
  • Сообщений: 637
  • Xubuntu 14.04.2 LTS :: SSD Kingston HyperX Fury
    • Просмотр профиля
  • Автоматическое монтирование при загрузке через fstab. Накопитель должен быть постоянно подключен.
  • Настройка sudo т. о., чтобы при монтировании не запрашивался пароль.
Взаимоисключающие параграфы? Пускай сразу будет примонтированным.

Пользователь решил продолжить мысль 11 Июня 2015, 11:17:13:
3. Смена владельца на root и установка бита suid.
Зачем root?

Оффлайн koluna

  • Автор темы
  • Участник
  • *
  • Сообщений: 137
    • Просмотр профиля
Взаимоисключающие параграфы? Пускай сразу будет примонтированным.

Мне надо наиболее правильным способом. Или так, или так... может быть, еще как-нибудь. Вот прошу совета :)
Вы предлагаете первый способ? А если накопитель кто-нибудь выдернет при включенном компе (не при запущенном скрипте)?
Отключить кеширование?

Цитировать
Зачем root?

Возможно, ошибся... как примонтировать из скрипта не вводя пароль?

Пользователь решил продолжить мысль 11 Июня 2015, 13:29:04:
Поясните пожалуйста, а зачем отмонтировать после всех действий?!

Отмонтировать для того, чтобы в любое время можно было накопитель вынуть/вставить.
« Последнее редактирование: 11 Июня 2015, 13:29:04 от koluna »

Оффлайн jtprog

  • Новичок
  • *
  • Сообщений: 36
  • F**k the system!!!
    • Просмотр профиля
    • Сисадминиум
Отмонтировать для того, чтобы в любое время можно было накопитель вынуть/вставить.
А как планируете узнавать статус задачи?!
Допустим вы выдернули уже флешу, а бэкап еще не закончился! Как в таком случае быть?!
Сисадминю  и иногда пишу об этом у себя в бложике

Оффлайн koluna

  • Автор темы
  • Участник
  • *
  • Сообщений: 137
    • Просмотр профиля
Отмонтировать для того, чтобы в любое время можно было накопитель вынуть/вставить.
А как планируете узнавать статус задачи?!
Допустим вы выдернули уже флешу, а бэкап еще не закончился! Как в таком случае быть?!

Не знаю... данных не много, бекап должен выполняться относительно быстро.
Если запускать сценарий вручную, то видно, отработал он или нет.
А если запускать по расписанию (cron или что-то в этом роде) - не знаю пока.

Возможно, я использую не совсем правильный подход. Прошу совета форумчан :)

Оффлайн jtprog

  • Новичок
  • *
  • Сообщений: 36
  • F**k the system!!!
    • Просмотр профиля
    • Сисадминиум
koluna, поделитесь информацией плиз. Бэкап каких именно данных планируется делать таким станным способом?!
Сисадминю  и иногда пишу об этом у себя в бложике

Оффлайн koluna

  • Автор темы
  • Участник
  • *
  • Сообщений: 137
    • Просмотр профиля
koluna, поделитесь информацией плиз. Бэкап каких именно данных планируется делать таким станным способом?!

Пока только дампов репозиториев svn. Это текст.
Говорю, возможно, я пытаюсь решить задачу не совсем правильным способом. Буду рад советам :)

Цель-то простая. Написать скрипт, который выгружает дампы указанных репозиториев, архивирует их и куда-нибудь убирает в надежное место. Сейчас все копируется на раздел жесткого диска. Но хотелось бы складывать и на FLASH (выкладывать по FTP или еще куда-нибудь). Как наиболее оптимальным способом копировать данные на FLASH?

Оффлайн Freezeman

  • Активист
  • *
  • Сообщений: 637
  • Xubuntu 14.04.2 LTS :: SSD Kingston HyperX Fury
    • Просмотр профиля
Взаимоисключающие параграфы? Пускай сразу будет примонтированным.
Вы предлагаете первый способ? А если накопитель кто-нибудь выдернет при включенном компе (не при запущенном скрипте)?
Ну, так скрипт должен проверять, что примонтировано и куда. А вообще-то нельзя записать в отмонтированное устройство.

Отмонтировать для того, чтобы в любое время можно было накопитель вынуть/вставить.
Ну, отмонтирование не спасёт вас от неожиданного вынимания из гнезда.  :coolsmiley:

Пользователь решил продолжить мысль 11 Июня 2015, 15:37:27:
Полезными опциями при монтировании Flash-дисков являются sync и flush. Первая приводит к постоянному сбросу на диск буфера записи, так что данные не теряются при отсоединении flash-диска без размонтирования. Побочный эффект такого монтирования — значительное уменьшение в скорости записи. Вторая опция (доступна только в новых ядрах Linux) ведёт к сбросу буфера на диск после записи последнего файла. Это также способствует сохранению данных в случае удаления диска без размонтирования, но не приводит к падению скорости записи.

Пользователь решил продолжить мысль 11 Июня 2015, 15:53:33:
Цитировать
Зачем root?
Возможно, ошибся... как примонтировать из скрипта не вводя пароль?
есть параметры nouser, group и owner под ключём -o
« Последнее редактирование: 11 Июня 2015, 15:53:33 от Freezeman »

Оффлайн koluna

  • Автор темы
  • Участник
  • *
  • Сообщений: 137
    • Просмотр профиля
У меня все никак не получается немного другая реализация: Запуск скрипта на бэкап при подключении определенного харда по usb.

Скрипт в рилтайм с каким-то периодом получает список подключенных устройств с UUID. И, если в списке есть требуемый UUID, то делает то, что нужно.

Пользователь решил продолжить мысль [time]12 Июнь 2015, 22:13:48[/time]:

есть параметры nouser, group и owner под ключём -o

Эта команда запрашивает пароль:
Цитировать
sudo mount /dev/sdb1 /media/flash -t vfat -o user,sync,iocharset=utf8,codepage=866,umask=000
Что я не так делаю?
« Последнее редактирование: 12 Июня 2015, 21:15:20 от koluna »

Оффлайн Viveda

  • Активист
  • *
  • Сообщений: 376
    • Просмотр профиля
Re: Резервное копирование на FLASH-накопитель
« Ответ #10 : 12 Июня 2015, 23:32:06 »

Эта команда запрашивает пароль:
Цитировать
sudo mount /dev/sdb1 /media/flash -t vfat -o user,sync,iocharset=utf8,codepage=866,umask=000
Что я не так делаю?


Чтобы sudo не просил пароль на mount в скрипте, можно в /etc/sudoers добавить:
username systemname = NOPASSWD: /bin/mount,/bin/umount
Это на вскидку.
WBRGDS, Viveda

Оффлайн koluna

  • Автор темы
  • Участник
  • *
  • Сообщений: 137
    • Просмотр профиля
Re: Резервное копирование на FLASH-накопитель
« Ответ #11 : 12 Июня 2015, 23:46:40 »

Эта команда запрашивает пароль:
Цитировать
sudo mount /dev/sdb1 /media/flash -t vfat -o user,sync,iocharset=utf8,codepage=866,umask=000
Что я не так делаю?


Чтобы sudo не просил пароль на mount в скрипте, можно в /etc/sudoers добавить:
username systemname = NOPASSWD: /bin/mount,/bin/umount
Это на вскидку.


Что-то я запутался... всетаки надо настраивать sudo?
А разве "-o user" не отменяет пароль?

Оффлайн MooSE

  • Старожил
  • *
  • Сообщений: 1195
    • Просмотр профиля
Re: Резервное копирование на FLASH-накопитель
« Ответ #12 : 13 Июня 2015, 04:39:49 »
Мой велосипед:

#!/bin/sh


# Кто я?
WHOAMI=`whoami`
# Если я не root
if [ ${WHOAMI} != "root" ]; then
        # Повторим запуск из под рута
        sudo $0
        # Завершм работу
        exit
fi


# UUID-раздела,на который будем делать бэкап
UUID="2ad1c56c-d040-4f49-a3e9-701fe46a4a2e"
# Точка монтирования
POINT="/mnt/backup"

# Вдруг не существует? Создадим
mkdir -p ${POINT}

# Проверяем что диск вставлен
EXISTS=`blkid|grep "UUID=\"${UUID}\""|wc -l`
# Если вставлен
if [ "${EXISTS}" = "1" ]; then
        echo "Trying to mount..."
        # На всякий случай отмонтируем (вдруг примонтировано что-то другое)
        umount ${POINT} > /dev/null 2>&1
        # Пытаемся примонтировать
        mount -U ${UUID} ${POINT}
        RESULT=$?
        # Если по какой-то причине монтирование не завершилось успешно
        if [ "${RESULT}" != "0" ]; then
                echo "Can't mount device!"
                exit 1;
        fi
else
        echo "Device not inserted!"
        exit 1;
fi

# Бэкапим данные
echo "Starting backup..."

rsync /home/moose --delete-after \
        -avz \
        --ignore-errors \
        --exclude='Музыка' \
        --exclude='Видео' \
        --exclude='VirtualBox VMs' \
        --exclude='crypt' \
        --exclude='.cache' \
        ${POINT}/

# Отключаем диск
echo "Umount device..."
umount ${POINT}


Оффлайн Viveda

  • Активист
  • *
  • Сообщений: 376
    • Просмотр профиля
Re: Резервное копирование на FLASH-накопитель
« Ответ #13 : 13 Июня 2015, 07:23:12 »

Что-то я запутался... всетаки надо настраивать sudo?
А разве "-o user" не отменяет пароль?

Если в fstab прописать user для конкретного устройства, тогда любой пользователь сможет монтировать это устройство без sudo.
А так, sudo в любом случае пароль запросит.

Кстати, лучше в sudoers добавить свой скрипт, вместо mount/umount.
ALL ALL=(ALL) NOPASSWD:/usr/local/mybackupscript.sh
WBRGDS, Viveda

Оффлайн koluna

  • Автор темы
  • Участник
  • *
  • Сообщений: 137
    • Просмотр профиля
Re: Резервное копирование на FLASH-накопитель
« Ответ #14 : 13 Июня 2015, 11:02:06 »
Так... видимо, я чего-то недопонимал/недопонимаю :)
Уточню одно из требований. Я хотел, чтобы скрипт был полностью автономен, т. е., чтобы не приходилось что-либо настраивать еще. Как я вижу, это не выполнимо?

Т. е., возможные варианты.
1. Настраиваем sudo, чтобы для команды mount (или для нашего скрипта, в котором используется эта команда) не запрашивался пароль. Соответственно, "sudo mount" в скрипте работает без запроса пароля.
2. Вписываем строку в fstab с опцией auto и в скрипте ничего не монтируем - раздел будет примонтирован автоматически.
3. Вписываем строку в fstab с опциями noauto, user. Раздел автоматически не монтируется, монтируем в скрипте без sudo под любым пользователем.

Так?
Я пока не совсем понимаю, какое преимущество, кроме возможности автоматического монтирования, дает внесение строк в fstab?
Что-то я не пойму, какой вариант оптимальнее будет?
Первый, вроде, с точки зрения безопасности не очень... Третий... нет смысла монтировать/размонтировать в скрипте...
Второй?

 

Страница сгенерирована за 0.154 секунд. Запросов: 19.