Devops

Server upload file ke google drive via command line

Salah satu permasalahan yang dapat terjadi dan bisa berakibat cukup fatal adalah ketika server mengalami kerusakan harddisk misal, kemudian data-data hilang termasuk...

Written by khairun rizki · 2 min read >

Salah satu permasalahan yang dapat terjadi dan bisa berakibat cukup fatal adalah ketika server mengalami kerusakan harddisk misal, kemudian data-data hilang termasuk database project kamu. Bayangkan jika database tersebut berisi informasi sensitif seperti daftar transaksi jual beli dsb..

Maka seorang developer yang baik, harusnya sudah mempertimbangkan kemungkinan ini. Nah, amannya ketika setting cron/scheduler backup database otomatis, selain disimpan di storage server, baiknya server juga diotomatisasi agar upload backup tersebut di cloud/storage lainnya yang reliable, dalam hal ini google drive yang menyediakan free 15Gb.. lumayan lah ya.. untuk 100Gb klo ga salah per tahun 300rb an..

Berikut step by step implementasinya:

Environtment yang digunakan pada tutorial ini:

  • Server centos 7 atau 8, bisa juga digunakan linux pada umum nya
  • Setidaknya paham dasar penggunaan command line / terminal ya

Step 1 : Install GOLANG di server

  • masuk kedalam terminal atau command line server melalui ssh.
  • install wget package,
sudo yum install wget
  • setelah itu.. gunakan wget untuk download golang
wget https://dl.google.com/go/go1.13.5.linux-amd64.tar.gz
  • server akan men-download package go.. dengan nama file: go1.13.5.linux-amd64.tar.gz
  • selanjutnya extract file gzip tersebut dan pindahkan ke direktori /usr/local
sudo tar -C /usr/local -xf go1.13.5.linux-amd64.tar.gz
  • buka /.bash_profile file:
sudo vi ~/.bash_profile
  • tambahkan kode berikut, ( pelajari vi editor jika belum pernah gunakan, atau bisa juga menggunakan nano editor)
export GOPATH=$HOME/golang
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
  • untuk save dan exit dari vi editor, gunakan perintah :wq
  • reload PATH yang tadi sudah ditambahkan dengan menggunakan perintah:
source ~/.bash_profile
  • harusnya saat ini go sudah terinstall di server. Untuk mengecek versi nya bisa gunakan perintah:
go version
#output
go version go1.13.5 linux/amd64

Step 2 : Setup OAuth google dan enable google drive API

  • di sisi kiri atas, pilih “select project”, jika belum ada project yang dibuat, maka create project. Lalu select project tersebut.
  • kemudian pilih menu OAuth consent screen
  • pilih User Type : External
  • kemudian lengkapi isian (khusus logo tidak perlu diisi, skip saja). Untuk isian url, isi dengan domain server
  • Klik save..
  • kemudian lanjut pilih menu “credentials”
  • buat credentials baru untuk OAuth client ID
  • pilih user type: Others
  • lanjut kan proses sampai muncul “OAuth client created”
  • copy dan simpan client ID dan cliend secret nya.. nanti akan kita butuhkan di step selanjutnya..

Step 3 : Download package gdrive dan set credentials OAuth

  • pastikan sebelumnya server anda sudah terinstall golang
  • buka kembali terminal atau command line server..
  • clone github berikut => https://github.com/gdrive-org/gdrive
  • kemudian masuk ke dalam folder yang baru saja di clone..
  • buka “handlers_drive.go” dengan menggunakan vi editor atau nano editor
  • di dalam file tersebut, cari bagian const ClientId dan ClientSecret, lalu isi dengan credentials OAuth yang sebelumnya sudah dibuat.. contohnya seperti ini :
const ClientId = "265381758528-xxxxx.apps.googleusercontent.com"
const ClientSecret = "9PJHRnBtrjxxxxxxxxxxxx"
  • kemudian save perubahan dan keluar dari editor
  • selanjutnya kita perlu import package gdrive golang, jalankan perintah sbb:
go get github.com/prasmussen/gdrive
  • kemudian (masih di dalam root folder gdrive hasil clone), build projectnya menggunakan perintah:
go build
  • setelah menjalankan perintah di atas.. kamu bakal menemukan file “gdrive” di dalam root folder tersebut. Nantinya file ini yang akan digunakan untuk proses upload file ke google drive
  • pindahkan file “gdrive” ke direktori server’s bin (sbin). di centos bisa menggunakan perintah ssb:
sudo mv gdrive /usr/sbin/gdrive
  • set permission agar nantinya file gdrive dapat dijalankan (execute) oleh user lain :
sudo chmod 700 /usr/sbin/gdrive
  • setelah itu, jalankan perintah
gdrive list
  • maka server akan menjalankan proses authentication.. kemudian server akan mengeluarkan sebuah link seperti ini:
https://accounts.google.com/o/oauth2/auth?client_id=123456789123-7n0vf**********************************
  • copy link tersebut dan paste di browser, browser bisa dimana saja ga harus di server itu juga.. nantinya ketika menjalankan link tersebut, google akan meminta authentication dan sign in menggunakan akun email yang kita inginkan. Nantinya server akan upload data ke google drive yang terasosiasi dengan akun gmail tersebut
  • Jika ketika sign in keluar warning unverified, tidak masalah lanjutkan saja.. klik “advanced” dan proceed unsafe / go to your app <name> (unsafe)
  • setelah proses sign in selesai, akan muncul kode verifikasi
  • copy kode tersebut, kemudian buka kembali terminal/command line server yang meminta kode verifikasi.
  • paste kode yang didapat ke terminal server.
Enter verification code: 4/9gKYAFAJ326XIP6J42t35****
  • setelah itu kita harusnya bisa menggunakan perintah menggunakan gdrive

Step 4 : Testing upload file ke google drive

  • berikut contoh perintah untuk upload file:
# upload to google drive root folder
gdrive upload test.zip

# upload to a specefic folder
gdrive upload --parent 1dYSp4NcaRTykSebFt-UoAadszRhMQciX test.zip

Selesai.. semoga bermanfaat..

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *