Sync Google Drive with Github Action

Sync Google Drive with Github Action

Oke guys, di artikel sebelumnya kita bahas tentang mendownload torrent ke google drive via Github Action, kali ini kita akan menggunakannya untuk synchronize data dari satu akun drive ke akun lainnya.

Synchronization data ini berguna bagi anda untuk membackup data ke akun google drive yang lain, untuk mengantisipasi data kita hilang atau akun google kita di suspend oleh administrator, seperti pengalaman saya beberapa bulan yang lalu akun google drive kampus saya tiba-tiba tidak dapat diakses lagi karena disuspend oleh adminnya, padahal didalamnya masih terdapat data-data yang lumayan penting.

Oke ya langsung saja ke caranya:

Siapkan 2 Akun Google Drive

pertama kita perlu siapkan 2 akun google drive ya, akun pertama sebagai source (berisi data yang akan di duplicate/backup) dan akun kedua sebagai target (tempat untuk menyimpan hasil duplication/backup).

Google Drive Project

Selanjutnya buat project di google console seperti pada artikel ini ya (atau gunakan kembali juga sudah buat), jangan lupa tambahkan 2 email dari akun google drive temen2.

setelah itu kita simpan client_id dan client_secret nya.

Generate Token

Oke setelah kita buat project, langkah selanjutnya adalah generate token. silahkan buka https://developers.google.com/oauthplayground

Klik icon setting > centang Use your own OAuth credentials > masukkan Client ID & Client Secret kalian > klik close.

di bagian API, scroll dan pilih Drive API v3 > centang https://googleapis.com/auth/drive > klik tombol Authorize API.

Pilih email yang dimasukkan ke test users tadi ya

pilih email project kalian > klik Allow

Silahkan copy token seperti yang saya tandai ini ya:

buka https://jsonformatter.org, paste kan json tokennya, lalu klik minify

nah, hasil minify inilah yang akan kita gunakan, jadi kita copy dan simpan ya. Lakukan generate token ini ke kedua akun temen2 ya.

Buat Github Actions

Buat new project, pastikan visibility nya public ya. lalu buat file dengan path .github/workflows/sync-drivc.yml. lalu isikan code berikut:

name: Drive Sync
on:
  workflow_dispatch:
env:
  SCRIPT_URL: https://gist.githubusercontent.com/subekti404dev/3297651428c31b813c06857f88f19365/raw/7c9b1d0bf75536c2acf9ec852ec67a38d7d021ef/drive_init_config
  SOURCE_DIR: "design-code"
  TARGET_DIR: ""
jobs:
  download:
    runs-on: ubuntu-latest
    steps:
       
        - name: Write .env File
          run: echo '${{ secrets.DOTENV_DRIVE_SYNC }}' >> .env && cat .env
          
        - name: Download Script && Install
          run: curl "$SCRIPT_URL" | bash
          
        - name: Mount Drive
          run:  bash mount.sh
          
        - run: cd drive1 && ls -lah
        - run: cd drive2 && ls -lah
        
        - run: rsync -auvr --progress drive1/"$SOURCE_DIR" drive2/"$TARGET_DIR"

ganti SOURCE_DIR nama folder yang akan di sync (dari drive 1) dan TARGET_DIR isi dengan nama folder tempat untuk menyimpan data (dari drive 2), isi dengan empty string ("") jika mau menaruhnya di root directory.

Setelah itu pergi ke tab Setting > pilih menu Secrets > Pilih sub menu Actions > klik tombol New Repository secret.

di field Name isikan DOTENV_DRIVE_SYNC , lalu di field Value isikan variable berikut:

CLIENT_ID=
CLIENT_SECRET=
TOKEN_1=
TOKEN_2=

isi Client ID dan Client Secretdengan punya kalian ya (yang didapat dari langkah sebelumnya). Untuk TOKEN_1 isi dengan token yang sudah di minify dari akun google drive 1 (source), TOKEN_2 isi dengan minify token dari akun google 2 (target).

Running Workflow

Untuk menjalankan workflow, masuk ke tab Actions > Pilih Drive Sync > Klik Dropdown Run Workflow  lalu terakhir klik tombol Run workflow.

Tinggal pantau lognya ya guys