# Google Drive ocamlfuse

##### <span style="color: rgb(53, 152, 219);">Установка google-drive-ocamlfuse -y</span> 

**[Github Repo](https://github.com/astrada/google-drive-ocamlfuse)**

```ruby
sudo add-apt-repository ppa:alessandro-strada/ppa
sudo apt-get update
sudo apt install google-drive-ocamlfuse -y
```

##### <span style="color: rgb(53, 152, 219);">Активация Google Drive API</span>

- Переходим в [библиотеку API](https://console.developers.google.com/apis/library)
- Вводим в окно поиска `Google Drive API`
- Нажимаем на кнопку <u>Включить</u>
- Переходим на страницу настройки [Google Drive API](https://console.developers.google.com/start/api?id=drive)
- Нажмите <u>Продолжить</u>, затем Перейти к учетным данным
- На странице <u>Создать учетные данные</u> нажмите кнопку <u>Отмена</u>
- Перейдите на вкладку <u>Окно запроса доступа OAuth</u>
- Проверьте адрес электронной почты, введите своё название продукта и нажмите кнопку <u>Сохранить</u>
- Перейдите на вкладку <u>Учетные данные</u>, нажмите <u>Создать учетные данные</u> и выберите <u>идентификатор клиента OAuth</u>
- Выберите тип приложения <u>Другие типы</u>, введите имя `Drive API Quickstart` и нажмите кнопку <u>Создать</u>
- Нажмите кнопку <u>ОК</u>, чтобы закрыть диалоговое окно
- Нажмите кнопку в виде <u>Карандаша</u> справа в строке <u>Drive API Quickstart</u>
- Скопируйте <u>Идентификатор клиента</u> и <u>Секрет клиента</u>
- Доступ к уже созданным учетным данным [Drive API Quickstart](https://console.developers.google.com/apis/api/drive.googleapis.com/credentials?project=quickstart-1575320378355)

##### <span style="color: rgb(53, 152, 219);">Монтирование папки Google Drive</span>

```ruby
# Создание папки
mkdir ~/.sync/google.cloud
# Монтирование папки
google-drive-ocamlfuse ~/.sync/google.cloud
# Размонтирование папки
fusermount -u ~/.sync/google.cloud
```

**Auto-Mount при Logon пользователя** (Desktop OS)

```ruby
sudo tee -a /home/<user>/.profile << 'EOF'
#Google Drive Mount
/usr/bin/google-drive-ocamlfuse "${HOME}/.sync/google.cloud"&
EOF
```

##### <span style="color: rgb(53, 152, 219);">Настройка резервного копирования папки Google.Drive</span>

**Инициализация репозитория / Первая копия**

```ruby
touch /home/xeon/scripts/baсkup/initial_copy.sh
chmod -R ug=rwx,o=rx /home/xeon/scripts/baсkup/initial_copy.sh
```

```ruby
sudo tee /home/xeon/scripts/baсkup/initial_copy.sh << 'EOF'
#!/bin/bash
google-drive-ocamlfuse /home/xeon/.sync/google.cloud -headless
cd /home/xeon/.sync/google.cloud

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/github_rsa
echo 'IdentityFile ~/.ssh/github_rsa' >> ~/.ssh/config
ssh -T git@github.com

git init
git config --global user.email "xeonmp44@gmail.com"
git config --global user.name "Yuriy Polyakov"
git config ssh.postBuffer 524288000

git add .
git commit -m "Gdrive Full Copy"
git branch -M main
git remote add origin git@github.com:shions/gdrive_backup.git
git push -u origin main
EOF
```

**СКРИПТ. Монтирование, Резервная копия, Чистка**

```ruby
sudo apt install p7zip-full -y
```

```ruby
touch /home/xeon/scripts/baсkup/google.cloud.backup.sh
chmod -R ug=rwx,o=rx /home/xeon/scripts/baсkup/google.cloud.backup.sh
```

```ruby
sudo tee /home/xeon/scripts/baсkup/google.cloud.backup.sh << 'EOF'
#!/bin/bash
# Монтирование папки Google Диск
cd
if [[ -f "/home/xeon/.sync/google.cloud" ]]
then
  fusermount -u /home/xeon/.sync/google.cloud
fi
sleep 5
google-drive-ocamlfuse -cc
google-drive-ocamlfuse /home/xeon/.sync/google.cloud -headless
sleep 5
cd
# Добавление изменений/Коммит/Отправка в репозиторий
cd /home/xeon/.sync/google.cloud
sleep 5
git add .
sleep 5
git commit -m "Updated: `date +'%Y-%m-%d %H:%M:%S'`"
sleep 5
git push -u origin main
sleep 5
# Размонтирование папки Google Диск
cd
fusermount -u /home/xeon/.sync/google.cloud
EOF
```

##### <span style="color: rgb(53, 152, 219);">Настройка планировщика CRON</span>

```ruby
crontab -e
```

```ruby
# Механизм работы системы CRON
# ------------------------------------------------------------
# * * * * * {пользователь} выполняемая_команда
# - - - - -
# | | | | |
# | | | | ----- День недели (0-7) (Воскресенье =0 или =7 ','- несколько)
# | | | ------- Месяц (1-12) (можно три буквы из названия месяца,
# | | |                       регистр не имеет значения от jan до dec)
# | | --------- День (1-31)
# | ----------- Час (0-23)
# ------------- Минута (0-59)
# ------------------------------------------------------------

#Запуск каждые Пн,Ср,Пт в 06:00 утра
00 06 * * 1,3,5 /home/xeon/scripts/baсkup/google.cloud.backup.sh > /home/xeon/.sync/log.txt 2>&1
```