Автоматизировать создание резервных копий из нескольких мест, структурировать их по дате, поддерживаю локальные и облачные инкрементные резервные копии [закрыто]

У меня есть приложение на VPS (Ubuntu Server 18.04), и хост может делать еженедельные резервные копии всей системы.

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

  1. Мне нужно делать инкрементные резервные копии нескольких мест.
  2. Добавочные резервные копии должны быть в структуре папок / директорий (все несколько мест в одной папке даты, но остаются инкрементными):

    • имя_папки__дата1
    • имя_папки__дата2
    • имя_папки__today
  3. Автоматизировать процесс, чтобы выполняется ежедневно

  4. Сохранять локальную резервную копию структуры папок / файлов
  5. Обновлять в облаке (DropBox, Box), но перед обновлением архивировать резервные копии с паролями

Я читал о rsync и chron, но я не Не знаю:

  • как сделать приращение с помощью папок
  • архив / обновление в облако
  • автоматизировать весь процесс с помощью bash
1
задан 31 August 2018 в 09:09

2 ответа

Я также должен был прочитать некоторый документ, чтобы подготовиться для достижения цели, давайте запустимся! Без знают тип данных и частоты доступа, можно использовать rsync для синхронизации папки, в которой Вы хотите скопировать к временному каталогу для выполнения инкрементного резервного копирования, я предлагаю использовать tar для сжатия 7zip для шифрования и для удаленной копии rclone.

  1. исходный tar: http://www.gnu.org/software/tar/manual/html_node/Incremental-Dumps.html
  2. источник rsync: https://download.samba.org/pub/rsync/rsync.html
  3. Источник 7zip: https://linux.die.net/man/1/7z
  4. источник rclone dbox: https://rclone.org/dropbox/
  5. сценарии удара: https://www.tldp.org/LDP/abs/html/

Таким образом, что я желание сделать сделанный этой задачей, предполагая, что папки копируют, является/home/user и/home/user2, временный каталог является/media/Backup/folder_name __ date1. Я запущу сценарий с двух rsync заданий один, чтобы папка получила следующую структуру:

mkdir -pv /media/Backup/folder_name__`date +%Y%m%d`
Backup/
└── folder_name__20180910
    ├── user
    └── user1

команда rsync, чтобы сделать так:

rsync -a /home/user /media/Backup/folder_name__20180910
rsync -a /home/user1 /media/Backup/folder_name__20180910

ВНИМАНИЕ: если исходный путь будет концом с / то не будет создавать папку назначения, но синхронизировать все данные в корневой папке назначения.

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

tar --create \
           --file=/path/where/you/like/folder_name__20180910.tar \
           -C /media/Backup/ \
           --listed-incremental=/var/log/db.snar \
           folder_name__20180910
  • - создайте Указывают, чтобы создать и заархивировать
  • - файл Указывает на путь, где tar будет сохранен
  • - перечисленный - возрастающий это - путь базы данных, где tar будет надеяться искать дельту данных
  • - C Указывают, чтобы смолить рабочий каталог, это разрешение Вы, чтобы не иметь архив со всей папкой пути, с этим Вы найдете folder_name __ 20180910 в корне tar
  • Последней является папка для добавления в архиве

ВАЖНЫЙ: tar базы данных создает, должно быть то же также в будущем, если это изменится, то у Вас всегда будет полное

Теперь у нас есть наше первое резервное копирование! давайте зашифруем его!

password=`date | md5sum | cut -c1-15` 
echo ${password} > /root/folder_name__20180910.pwd && chmod 400 /root/folder_name__20180910.pwd
/root/folder_name__date1.pwd
7z a -mhe=on -p`echo ${password}` \
-t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on \
/path/where/you/like/folder_name__20180910.7z \
/path/where/you/like/folder_name__20180910.tar

здесь мы генерируем случайный пароль от md5sum даты (можно использовать различный способ сделать это), сохраняют пароль в файле, соответствуют архиву и сохраняют его в к / корневой папке после этого, мы создаем сжатый архив.

последний шаг, копия это удаленно на облачном сервисе, я предполагаю, что Вы читаете документацию, и учетная запись в rclone настроена как remotecopydata и если Вы хотите remotecopypassword

rclone copy /path/where/you/like/folder_name__20180910.7z remotecopydata:Backup
rclone copy /path/where/you/like/folder_name__20180910.7z remotecopypassword:Backup

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

Позволять скрипту, запущенному автоматически каждый день в полночь:

crontab -e 

и добавьте:

MAILTO=amail@boxes.org
0 0 * * * /path/to/your/scrypt.sh

MAILTO = позволяют всем сообщениям из сценария, отправленного в настроенную электронную почту. Добавьте некоторое управление к сценарию, прежде чем выполнено это автоматически

Это - все, я надеюсь, что Вы найдете это сообщение полезным!

1
ответ дан 7 December 2019 в 13:21

Я предлагаю, чтобы Вы установили rsnapshot. В конфигурационном файле можно установить следующее:

backup /etc/ localhost/

установил бы/etc/, который будет сохранен в localhost/папку. Таким образом можно также создать резервную копию других каталогов и поместить их в другом месте (хотя я предлагаю, чтобы Вы создали местоположение резервирных копий для каждого хоста, который Вы планируете скопировать).

rsnapshot делает возрастающие резервные копии и оставляет свободное место при помощи символьных ссылок. Таким образом каждое резервное копирование является полным резервным копированием рассматриваемого каталога, не используя дополнительное пространство.

Для автоматизации этого установите cronjob. Выполненный sudo crontab -e и добавьте правила как это:

0 4 * * *         /usr/bin/rsnapshot alpha
0 3 * * 3         /usr/bin/rsnapshot beta
0 2 1 * *         /usr/bin/rsnapshot gamma

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

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

Я предполагаю, что можно использовать tar и gzip заархивировать и сжаться и затем gpg зашифровать. Но, если у Вас есть другой компьютер или NAS дома или работа, я предлагаю, чтобы Вы просто скопировали свои файлы в него. Или, как конфигурационный файл (/etc/rsnapshot.conf) говорит, можно резервировать другой компьютер удаленно. т.е.:

backup root@example.com:/etc/ example.com/

Существуют опции для Вас смонтировать (т.е. присоединение) внешний диск, создать резервную копию и затем размонтировать его, также.

Так или иначе я знаю, что это не каждая вещь, которую Вы попросили, но я надеюсь, что она помогает.

1
ответ дан 7 December 2019 в 13:21

Другие вопросы по тегам:

Похожие вопросы: