Автоматическое резервное копирование с помощью cron и RClone

В этой статье мы расскажем вам, как использовать RClone и cron для автоматического резервного копирования файлов в операционной системе Linux.


Сегодня пятница, 6 часов вечера, и мне нужно было сделать резервную копию некоторых рабочих и школьных файлов на Google Drive. Да, я использую git для кодирования проектов, но такую работу лучше хранить в Google Drive. Поэтому мне стало интересно, есть ли более быстрый, простой и автоматизированный способ создания резервных копий на Google Drive, и, что интересно, я нашел RClone.

В этой статье вы узнаете:

  • Что такое RClone.
  • Что такое cron.
  • Основное использование RClone и cron.
  • Как автоматически создавать резервные копии файлов каждую пятницу в 18:30.
  • Ведение журнала Cron.
  • Как удалить RClone.

Что такое RClone?

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

Что такое cron?

Cron — это утилита командной строки, основной целью которой является планирование заданий. Задания команды cron состоят из двух частей, первая — выражение расписания, последняя — сценарий, который должен быть выполнен. Обычно все ОС Linux поставляются с установленным cron, если это не так:

CentOS/RHEL 7/8/5

yum install cronie
Войти в полноэкранный режим Выйти из полноэкранного режима

Ubuntu

apt-get install cron
Войти в полноэкранный режим Выход из полноэкранного режима

С помощью cron вы можете запланировать выполнение команды или сценария оболочки в определенное время, что мы и собираемся сделать. Запланируем команду RClone на выполнение каждую пятницу в 6:30 вечера.

Настройка RClone

Для начала установите программу RClone.

Для Linux, macOS и BSD просто запустите:

curl https://rclone.org/install.sh | sudo bash
Войти в полноэкранный режим Выйти из полноэкранного режима

После установки RClone выполним команду настройки RClone.

rclone config
Войти в полноэкранный режим Выйти из полноэкранного режима

Здесь вы выполните следующие шаги:

  1. Выберите n для New remote.
  2. Введите имя нового конфига RClone, например, mygdrive.
  3. Введите 15, чтобы использовать Google Drive в качестве удаленного хранилища.
  4. Для следующих двух шагов просто введите enter, чтобы продолжить.
  5. Теперь выберите 1 для полного доступа.
  6. Для следующих двух вариантов просто введите enter, чтобы продолжить.
  7. Войдите в свою учетную запись google во всплывающем окне RClone. Теперь вы готовы к работе.

Создание сценария оболочки для резервного копирования файлов на Google Drive

Мы собираемся создать сценарий оболочки, содержащий командные строки RClone для синхронизации папок с моего компьютера в хранилище Google Drive.

Откройте терминал и введите:

mkdir sh ; cd sh
Войти в полноэкранный режим Выйти из полноэкранного режима

Вам не обязательно создавать папку sh в каталоге $HOME, вы можете создать ее в другом месте или даже не создавать, но это хорошая идея — организовать ваши скрипты в одном месте. Если вы создадите папку в другом месте, просто напомните себе изменить путь в следующих шагах.

Теперь, если вы хотите использовать vim:

vim backup.sh
Войдите в полноэкранный режим Выйдите из полноэкранного режима

Но если вы хотите использовать другой текстовый редактор, просто создайте файл с именем backup.sh в папке $HOME/sh или в любом другом месте, но $HOME/sh будет моим местоположением для этой статьи.

Открыв файл backup.sh, давайте напишем строку кода, которая синхронизирует папку с моего компьютера в хранилище Google Drive.

rclone sync -v --create-empty-src-dirs /$HOME/Desktop/Work mygdrive:/Work
Вход в полноэкранный режим Выход из полноэкранного режима

Теперь давайте погрузимся в объяснения команд.

rclone sync
Войти в полноэкранный режим Выйти из полноэкранного режима

Sync скопирует файлы из источника и отправит их в пункт назначения, но не изменит источник, а только пункт назначения.

--create-empty-src-dirs
Войти в полноэкранный режим Выход из полноэкранного режима

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

В последней части команды у вас есть два пути, разделенные пробелом, первый — путь источника, второй — путь назначения. Теперь вы, вероятно, заметили, что второй путь имеет mygdrive:, что совпадает с именем rclone config. То есть, по сути, я синхронизирую данные с моего компьютера на Google Drive, используя конфигурацию mygdrive.

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

rclone sync -v --create-empty-src-dirs mygdrive:/Work anothergdrive:/Work
Войти в полноэкранный режим Выход из полноэкранного режима

Чтобы проверить, работает ли файл backup.sh, просто выполните приведенную ниже команду и проверьте, изменилось ли место назначения.

source backup.sh
Войти в полноэкранный режим Выйти из полноэкранного режима

После того, как backup.sh заработал должным образом, давайте разберемся, как мы можем запланировать запуск backup.sh на каждый день.

Последний сценарий:

rclone sync -v --create-empty-src-dirs /$HOME/Desktop/Work mygdrive:/Work
rclone sync -v --create-empty-src-dirs /$HOME/Desktop/School mygdrive:/School
Вход в полноэкранный режим Выход из полноэкранного режима

Настройка cron для запуска файла Shell

Чтобы запланировать любое задание в cron, нам нужно отредактировать файл crontab, а чтобы отредактировать этот файл, откройте терминал и введите:

crontab -e
Войти в полноэкранный режим Выйти из полноэкранного режима

Если вы никогда не использовали crontab, то вам придется выбрать текстовый редактор по умолчанию, в моем случае это vim.

Он откроет файл crontab в текстовом редакторе по умолчанию. Когда файл будет открыт, вы увидите только комментарии.

Для составления расписания в cron вам понадобится выражение определенного типа. Ниже вы увидите структуру выражения:

.---------------- minute (0 - 59)
 |  .------------- hour (0 - 23)
 |  |  .---------- day of month (1 - 31)
 |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
 |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed
 |  |  |  |  |
 *  *  *  *  *  command to be executed
Войти в полноэкранный режим Выйти из полноэкранного режима

Примеры — Выражение для планирования задания (my_shell.sh) на выполнение каждый понедельник в 8:49 утра:

49 8 * * 1 my_shell.sh
Ввести полноэкранный режим Выйти из полноэкранного режима

Если вы хотите запускать задание (my_shell.sh) с понедельника по пятницу в 11:26 утра, вы можете написать:

26 11 * * 1-5 my_shell.sh
Войти в полноэкранный режим Выйти из полноэкранного режима

Другие примеры выражений:

0 * * * *     => Every hour
*/2 * * * *   => Every two minutes
0 9-17 * * *  => At minute 0 past every hour from 9 through 17
Ввести полноэкранный режим Выйти из полноэкранного режима

Для получения дополнительных примеров или для проверки того, вернет ли ваше выражение ту логику, которую вы ожидаете, перейдите к разделу crontab для получения дополнительной информации.

Открыв файл crontab, введите строку ниже:

30 18 * * 5 /$HOME/sh/backup.sh
Войти в полноэкранный режим Выйти из полноэкранного режима

Эта команда делает следующее: каждую пятницу в 6:30 вечера будет вызываться backup.sh, и он будет создавать резервные копии моих файлов на Google Drive.

Советы — Где находится файл журнала cron?

По умолчанию файл журнала cron находится по адресу:

/var/log/syslog
Вход в полноэкранный режим Выход из полноэкранного режима

Чтобы увидеть журнал cron в этом файле, выполните приведенный ниже код:

grep CRON /var/log/syslog
Войти в полноэкранный режим Выйти из полноэкранного режима

или для непрерывного просмотра файла:

tail -f /var/log/syslog | grep CRON
Войти в полноэкранный режим Выйти из полноэкранного режима

Эта команда выдаст примерно следующее:

Dec 15 07:35:01 rainbowone CRON[242416]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Dec 15 07:45:01 rainbowone CRON[245607]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Dec 15 07:55:01 rainbowone CRON[248793]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Dec 15 08:00:01 rainbowone CRON[249386]: (rainbow) CMD (/$HOME/Desktop/sh/daily.sh)
Войти в полноэкранный режим Выйти из полноэкранного режима

Эти сообщения только показывают, какую команду выполнил cron, если вы хотите увидеть журнал backup.sh, вам нужно будет персонализировать backup.sh, чтобы создать свой собственный файл журнала и записать его содержимое.

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

Прежде всего, откройте этот файл:

/etc/rsyslog.d/50-default.conf
Войти в полноэкранный режим Выйти из полноэкранного режима

Откомментируйте строку, которая начинается с #cron.*, а затем перезапустите syslog:

sudo service rsyslog restart

Войти в полноэкранный режим Выйти из полноэкранного режима

После этого вы увидите журналы cron в /var/log/cron.log и /var/log/syslog.

Как удалить RClone?

Удалить RClone из операционной системы Linux очень просто, прежде всего, необходимо найти конфигурационный файл rclone, чтобы найти его, выполните следующую команду.

rclone config file
Войти в полноэкранный режим Выйти из полноэкранного режима

Появится список одного или нескольких путей к конфигурации RClone.

Configuration file is stored at:
/home/$USER/.config/rclone/rclone.conf
Войти в полноэкранный режим Выйти из полноэкранного режима

Чтобы удалить файл конфигурации:

sudo rm -rf /home/$USER/.config/rclone/rclone.conf
Войти в полноэкранный режим Выйти из полноэкранного режима

И чтобы окончательно удалить RClone из системы:

sudo rm /usr/bin/rclone
sudo rm /usr/local/share/man/man1/rclone.1
Войдите в полноэкранный режим Выйти из полноэкранного режима

На этом этапе вы, вероятно, можете автоматизировать резервное копирование файлов с помощью cron и RClone в операционной системе Linux.

Если вам понравилась эта статья, вы можете поставить ❤️, и 🔖 на потом в кнопке сохранить.

И если вам нравится контент о Git, Linux, советы по продуктивности, Typescript и Python, пожалуйста, следуйте за мной Marco Antonio Bet


itsbetma / CronAndRCloneTutorial

Репозиторий для статьи Как использовать RClone и cron для автоматизации резервного копирования в Linux.

CronAndRCloneTutorial

Посмотреть на GitHub

Оцените статью
devanswers.ru
Добавить комментарий