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


Автор Тема: Подскажите оптимальный вариант организации полуавтоматического создания бэкапов  (Прочитано 519 раз)

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

Оффлайн hwmaster2

  • Автор темы
  • Новичок
  • *
  • Сообщений: 35
    • Просмотр профиля
Добрый день.

Недавно перешел с Windows на Linux Ubuntu 16.04 LTS + Cinnamon. Очень доволен.
Сейчас настраиваю полуавтоматическое резервирование определенных файлов и папок на сменные носители и облако.
Задача стоит такая: Подав команду (вручную) нужно, чтобы определенная папка скопировалась на все доступные в данный момент времени ранее определенные носители: флешку, облако, сетевой ресурс (локальный), при этом на каждом таком носителе создается папка (имя = дата+время) куда копируется то, что нужно сохранить. Если ресурс не доступен, то на него не нужно сохранять.
При этом в облаке (Яндекс.диск) перед сохранением нужно зашифровать то, что будет сохраняться.
Таким образом на каждом носители образуется архив с нужными данными.
Подскажите, как такое делается? Скрипт или программа есть какая? Как оптимально решить такую задачу?

ТС не появлялся на Форуме более полугода по состоянию на 14/07/2019 (последняя явка: 02/05/2018). Модератором раздела принято решение закрыть тему.
--zg_nico
« Последнее редактирование: 14 Июль 2019, 04:53:08 от zg_nico »

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 6015
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
rsync + для шифрования что нравится
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн hwmaster2

  • Автор темы
  • Новичок
  • *
  • Сообщений: 35
    • Просмотр профиля
rsync + для шифрования что нравится
Мне бы примеры надо :)

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 6015
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
hwmaster2, «примеры» чего? Как создать директорию и скопировать в нее содержимое папки?mkdir <full_path_to>/dir_name
rsync <full_path_to>/source_dir/ <full_path_to>/dir_name
Вместо dir_name используйте $(date +'имя_%F_%T')
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн hwmaster2

  • Автор темы
  • Новичок
  • *
  • Сообщений: 35
    • Просмотр профиля
Спасибо за ответы, но это не то, что мне нужно.
Скопировать что-то куда-то я могу и так, без всяких rsync-ов.

Мне нужно чтобы при нажатии кнопки (подав команду). Скрипт или программа (заранее настроенная) сохранила нужные данные на флешку (если она вставлена), в облако (предварительно зашифровав) и на локальные диски и на сетевые диски. Ну и нужен отчет в каком-то виде, что и куда удалось сохранить.

Я думал, все таким или подобным образом бэкапятся. Может я не прав, тогда пните в нужном направлении.
Я так понял, что придется писать скрипт.
Может у кого-то есть такой, для примера.

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 6015
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
придется писать скрипт
Вы так обреченно говорите… В чем сложность записать текстовый файл повторив приведенные команды для каждого назначения добавив проверку доступности? А потом добавляйте или кнопку (.desktop) или просто ссылку/альяс в виде команды
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн hwmaster2

  • Автор темы
  • Новичок
  • *
  • Сообщений: 35
    • Просмотр профиля
Вы так обреченно говорите… В чем сложность записать текстовый файл повторив приведенные команды для каждого назначения добавив проверку доступности? А потом добавляйте или кнопку (.desktop) или просто ссылку/альяс в виде команды
Спасибо.
Я подумал, что есть готовое решение. Но меня вполне устроит самописный скрипт.Но...
Я не знаю какие команды для проверки использовать.
Мне нужно, чтобы на определенную флешку записывалось, если она вставлена, а на другие флешки нет.
Как зашифровать и разместить на Яндекс.диске проверив доступен ли он?

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 6015
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
на определенную флешку записывалось, если она вставлена, а на другие флешки нет.
Тогдп определитесь каким образом идентифицировать: по UUID, по идентификатору производителя, по имеющемуся на флэшке файле ключа, … (еще сотня способов)
Как зашифровать
Выбрать шифровальщик(нaпример стандартный gpg)
разместить на Яндекс.диске проверив доступен ли он
Обычно монтируют по davfs также как обычный сетевой диск.
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн hwmaster2

  • Автор темы
  • Новичок
  • *
  • Сообщений: 35
    • Просмотр профиля
Спасибо Azure теперь понятно, куда копать дальше.

Оффлайн hwmaster2

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

mkdir $(date +'имя_%F_%T')



Пользователь добавил сообщение 12 Апрель 2017, 16:56:07:
разобрался! :D

Пользователь добавил сообщение 12 Апрель 2017, 20:20:55:
Подскажите, почему не выводит результат команды ls ?:

#!/bin/sh

dir1="$HOME/sites/backup";
d=$(date +"%m.%d.%Y_%H:%M:%S");
to=$dir1/$d;
mkdir -v $to;
ls $to;


скрипт почему-то выдает только то, что создана директория, а ее содержимое, команды ls как будто нет вовсе.

Пользователь добавил сообщение 12 Апрель 2017, 20:51:04:
Хммм, директория же пустая, вот и не выводит ничего.
Заменяем на ls -al и все нормально.
« Последнее редактирование: 12 Апрель 2017, 20:51:04 от hwmaster2 »

Оффлайн eNdiD

  • Участник
  • *
  • Сообщений: 188
    • Просмотр профиля
Borgbackup не пробовали? Поддерживает сжатие, шифрование и дедупликацию бекапов. Может управлять количеством бэкапов (к примеру: одновременно хранит 7 ежедневных, 4 недельных, 3 месячных; остальные удаляет)
Установка:
https://borgbackup.readthedocs.io/en/stable/installation.html

Быстрый старт:
https://borgbackup.readthedocs.io/en/stable/quickstart.html

Там есть пример скрипта. Хоть вручную, хоть по крону. Одновременного бэкапа в несколько источников нет. Но никто не мешает сделать это вручную. В конце скрипта перед выходом сделать rsync репозитория в нужные места. С проверкой наличия носителя, если необходимо.

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 6015
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн hwmaster2

  • Автор темы
  • Новичок
  • *
  • Сообщений: 35
    • Просмотр профиля
Borgbackup не пробовали?
Спасибо за помощь. Но я нашел то, что искал, остались нюансы (смотри ниже):
Сделал через udev правило /etc/udev/rules.d/64-usb-backup.rules :
ACTION=="add", SUBSYSTEM=="block", KERNEL=="sdd1" ATTRS{idVendor}=="058f", ATTRS{idProduct}=="6387", RUN+="/bin/bash /usr/local/bin/usb-backup2.sh"

теперь, при вставлении конкретной флешки с idVendor="058f" и idProduct="6387" запускается нужный скрипт /usr/local/bin/usb-backup2.sh:

#!/bin/bash
mount /dev/sdd1 /media/hwmaster/BACKUP
sleep 5;
d=$(date +"%d.%m.%Y_%H:%M:%S");
dir="/media/hwmaster/BACKUP";
mkdir -p $dir/"test"/$d;

Скрипт для теста просто создает на этой флешке директорию типа: "test/23.05.2017_12:42:33" в которую потом легко скопировать нужные данные.
Этот скрипт не сразу и заработал, пришлось долго повозиться. Думаю, что в нем есть ошибки, т.к. не совсем понимаю следующие моменты:

1.Почему правило имеет номер 64? Это правильно?
2.Почему-то флешка сама не хочет примонтирываться и приходится ее вручную примонтировать, хотя везде в интернете она сама монтируется. Даже sleep 5 как раз для этого в скрипте стоит.
3.Скрипт имеет права юзера, а папка создается с правами root, почему?
4.Как в скрипте определить смонтировалась ли флешка? Создалась ли директория? И самое главное:
5.Как вывести в терминал ошибки или просто сообщения в процессе работы скрипта?

Спасибо

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 6015
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
1. Какой назначите номер, такой и будет, влияет только на очередность их обработки демоном udev
2. В правилах есть автоматичекое монтирование и если Вы уберете свой скрипт, то она и будет монтироваться. Просто если на устройстве сработало правило, то другие правила уже не обрабатываются.
3. Дело не в скрипте, а в том, «кто» его выполняет: в данном случае демон udev. Если надо — меняйте права, chown'ом например.
4. Если устройство примонтировалось, то оно есть в списке /etc/mtab и к нему есть доступ. Для папки test -d
5. Чтобы выводить ошибки в Терминал надо все запускать в Терминале и выводить с помощью echo. Позволю себе предложить, поскольку изначально скрипт планировался к работе в фоне, выводить сообщения в графику используя стандартную систему сообщений notify-send. Ну или zenity|dialog.
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

 

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