Бэкап на Google Drive из консоли

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

Отделение пневмопочты, 1954. Getty Images: gettyimages.com

Отделение пневмопочты, 1954. (Довольно трудно найти картинку по запросу «Google Drive backup» без пластмассовых корпоративных рендеров.) Getty Images: gettyimages.com

Для работы с гугл диском из командной строки потребуется установить Google Drive CLI Client (можно скачать готовый бинарник, а можно и заморочиться со сборкой из исходников): https://github.com/prasmussen/gdrive.
Во время первого запуска утилиты нужно будет авторизовать приложение в гугл аккаунте.

Скрипт на bash

Для скрипта нужно заполнить переменные REMOTE_DIR_ID для директорий на диске. Эти значения можно получить командой gdrive list. Немного больше про команды в предыдущей версии статьи: Бэкап на Google Диск из командной строки.

Функция upload_compressed сжимает указанную директорию (BACKUP_DIR) и заливает на гуглдиск. 
Функция sync_dir синхронизирует локальную директорию с удалённой.

Актуальная версия скрипта лежит в моём репозитории с другими полезными сниппетами  (поставьте звёздочку, расскажите друзьям, друзья).

Добавить автобэкап в ежедневные задачи

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

1. Добавить задачу:

2. Форсировать выполнение задач:

Скрипт упадёт с ошибками в логе, среди которых нужно скопировать запрошенный URL, вставить в браузер и получить код для авторизации.

3. Код сохраняем в файл /tmp/code, который подсунем скрипту:

4. Выполняем anacron -df ещё раз.

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

cron

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

Удобный генератор для крона, для тех, кто как и я, постоянно забывает синтаксис: https://crontab-generator.org/

Скорее всего, придётся проделать те же действия с кодом авторизации, что и для anacron.