Скрипт резервного копирования на Bash

В данном репозитории представления моя реализация скрипта резервного копирования на Bash (Bashkortostan alga!)
Readme файлның бу читателарына шаһсеңне, сәламәтлек өмірге кайтарыуны уйлауым! Бөтә хайырлыгы өчен!

Содержание

1. Актуальность резервного копирования.

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

Резервное копирование — это процесс создания дубликатов данных с целью их защиты от потери, повреждения или случайного удаления. Вот несколько причин, почему резервное копирование остается актуальным и важным в наше время:

  • Предотвращение потери данных: Ни одна система или носитель данных не застрахованы от возможных сбоев, отказов оборудования, программных ошибок или кибератак. Резервное копирование позволяет сохранить важные данные и восстановить их в случае их потери.

  • Защита от вредоносных программ и кибератак: В современном мире киберугрозы становятся все более распространенными и сложными. Вирусы, рansomware и другие вредоносные программы могут нанести серьезный ущерб вашим данным. Регулярное резервное копирование позволяет иметь возможность восстановить данные после атаки или заражения.

  • Защита от случайного удаления или человеческих ошибок: Нередко случается, что пользователи случайно удаляют важные файлы или папки, или происходят ошибки при работе с данными. Резервное копирование помогает вернуть данные к их предыдущему состоянию и избежать потери.

  • Бизнес-континуитет: Для организаций резервное копирование становится неотъемлемой частью стратегии бизнес-континуитета. В случае аварийных ситуаций, таких как пожары, наводнения, стихийные бедствия или технические сбои, наличие резервных копий данных позволяет организациям быстро восстановить работу и минимизировать простои и потери.

  • Защита ценных данных и восстановление истории: Для многих людей данные представляют большую ценность. Это могут быть личные фотографии и видеозаписи, важные документы, электронная переписка, контакты и многое другое. Резервное копирование позволяет сохранить эти ценности и предоставляет возможность восстановить утраченные файлы и восстановить историю.

2. Использование скрипта.

  • Чтобы начать работать со скриптом, необходимо перейти в папку где находится скрипт backup.sh через команду перехода между директориями cd
  • Далее необходимо дать права на исполнение, чтобы не писать каждый раз bash backup.sh ... Если выдать такие права, то не будет необходимости в написании слова bash для выполнение скрипта. Используйте chmod +x backup.sh, чтобы выдать права на исполнение.
  • Теперь мы готовы к запуску скрипта. Чтобы проверить запускается ли скрипт, введите ./backup.sh В ответ на этот запрос, у вас должно появиться следующее сообщение:
Use -h or --help to see how to work with script

Ура, скрипт выполнился.

  • Для вывода помощи на экран используйте команду ./backup.sh -h/--help:
Usage for creating backup: ./backup.sh <source directory> <backup directory>  
Usage for getting version of manager: ./backup.sh -v/--version  
Usage for recover backup: ./backup.sh -r/--recover <backup filename> <recover directory>  
  • Чтобы увидеть версию скрипта, выполните: ./backup.sh -v/--version:
Backup manager v1.0.1
  • Для создания резервной копии используйте следующую команду:
    ./backup.sh <source directory> <backup directory>
    Если директория, которую Вы хотите зарезервировать, не существует, то произойдет выход из программы. Если папки куда Вы хотите сохранить бэкап не существует, то она создастся. Так как архив защищается, то он потребует установить пароль на этот архив, чтобы его не смог восстановить левый человек. "source directory" - директория, которую нужно зарезервировать. "backup directory" - директория, куда сохранится копия.

  • Чтобы восстановить бэкап, нужно ввести команду:
    ./backup.sh -r/--recover <backup filename> <recover directory>
    У вас потребуется пароль, поставленный на эту копию, чтобы пошел процесс восстановления. Если пароль неверный, то ничего не восстановится. Здесь "backup filename" - это имя бэкапа, а "recover directory" - директория в которую нужно восстановить бэкап.

3. Особенности реализации скрипта.

Спасибо Фленову Михаилу Евгеньевичу. Я отрыл у себя в шкафу книгу "Linux глазами хакера" в 4-ом издании. Покупал эту книжку еще в далеком 2018 году, и вышло уже 5-е издание, но и 4-е не сильно потеряло свою актуальность. Идею реализации скрипта я взял из 13 главы, которая как раз про резервное копирование. Многие вещи пришлось менять самому все равно - в этом и прелесть процесса обучения.

  • В качестве основы я решил архивировать через команду tar директорию, которую нужно забэкапить, следующей командой:
    tar -cvf - "$source_directory" | gzip -9c > "$backup_directory/$backup_name".gz
    Про флажки читатель может найти информацию в интернете сам.
    Далее, как создался архив, я его сжимаю командой gzip, чтобы он занимал меньше места на диске.
    Следующим шагом я обеспечиваю наш архив паролем, чтобы злые дяденьки не смогли его восстановить или посмотреть:
    /usr/bin/openssl des -in "$backup_directory/$backup_name".gz -out "$backup_directory/$backup_name".sec
    (Спасибо Михаилу Евгеньевичу за прекрасную команду)
    openssl засекречивает наш архив и навешивает на него необходимость ввода пароля.
    Чтобы никто не смог удалить резервную копию случайно или преднамеренно, я установил атрибут i, который запрещает удаление или редактирование файла/директории даже с привилегиями sudo: sudo chattr +i "$backup_directory/$backup_name".sec
    Удаляем незасекреченную архивную копию: rm -rf "$backup_directory/$backup_name".gz

  • Для восстановления просим пароль от архива у пользователя:
    /usr/bin/openssl des -d -in "$backup_file" -out "$backup_file".tar.gz
    Разархивируем в случае верного пароля наш бэкап и восстановим его в указанную директорию (если она существует):
    tar -xzf "$backup_file".tar.gz -C "$recover_directory" --overwrite
    Удалим архив, который получился при разархивации:
    rm -rf "$backup_file".tar.gz

4. Обобщение.

Резервное копирование данных становится все более важным и актуальным в нашем цифровом мире. Существует множество инструментов и подходов к резервному копированию, от локальных носителей до облачных сервисов. Важно разработать стратегию резервного копирования, соответствующую потребностям организации/пользователя, и регулярно проверять и обновлят копии данных при необходимости. Помните, что резервное копирование — это неотъемлемая часть поддержки безопасности и защиты данных, и вложенные в него усилия с лихвой оправдываются в случае возникновения проблем с данными.
Тыймысыға рәхмәт!