Auto Backup Ke Digitalocean Space

Write by Iman Sugirman
Auto Backup Ke Digitalocean Space

Mencadangkan data penting adalah bagian penting dari pengelolaan infrastruktur komputer apa pun. Meskipun kebutuhan setiap orang berbeda ketika datang untuk melakukan backup, mempertahankan data cadangan di lokasi offsite adalah praktik yang baik.

Proses pengiriman salinan data ke lokasi di luar kantor digunakan untuk menjadi tantangan logistik besar. Namun dengan munculnya layanan penyimpanan berbasis cloud seperti Crashplan dan Dropbox, serta pengembangan solusi penyimpanan objek seperti DigitalOcean Spaces, kini menjadi tugas yang jauh lebih sederhana. Meskipun demikian, mengingat untuk mencadangkan file dan meluangkan waktu untuk mengunggahnya masih bisa menjadi penghalang bagi sebagian orang.

Inilah sebabnya mengapa orang memilih untuk menggunakan berbagai alat untuk melakukan pencadangan otomatis rutin dari data penting mereka. Dalam tutorial ini, kita akan membangun skrip di sekitar alat baris perintah s3cmd yang dapat digunakan untuk mengunggah data dengan cepat ke Ruang DigitalOcean. Kami kemudian akan menggunakan crontab untuk secara rutin memanggil skrip cadangan dan mengunggah file ke Space kami.

Membangun Skrip Backups kami

Ada sejumlah alat yang dapat digunakan untuk mengunggah file cadangan ke layanan penyimpanan objek secara otomatis dan secara berkala. Namun, ini bisa sulit dikonfigurasi dan mungkin tidak menawarkan banyak fleksibilitas. Menggunakan skrip shell sederhana bisa menjadi pendekatan yang jauh lebih elegan dan lugas untuk mengotomatisasi cadangan penyimpanan objek.

Untuk tutorial ini, kita akan menulis skrip bash dasar yang akan membuat cadangan file atau direktori menggunakan tar. Skrip kemudian akan mengunggah pencadangan itu ke Spaces menggunakan utilitas baris perintah s3cmd.

Untuk memulai, masuk ke Droplet Anda dan arahkan ke folder rumah Anda:

cd ~

Setelah berada di folder rumah, kami akan menggunakan nano untuk membuat file kosong tempat kami dapat menulis di skrip kami:

nano bkupscript.sh

Lalu Tulis :

#!/bin/bash
DATETIME=`date +%y%m%d-%H_%M_%S`
SRC=$1
DST=$2
GIVENNAME=$3

Mari bahas apa yang kita tetapkan masing-masing variabel ini ke:

  • DATETIME: Variabel ini menyimpan stempel waktu untuk membubuhkan nama file sehingga setiap file yang dicadangkan ke Space kami memiliki nama yang unik. Stempel waktu ini dibuat dengan menjalankan perintah tanggal dan memformat output untuk menunjukkan dua digit terakhir tahun ini (% y), dua digit bulan (% m), dua digit hari (% d), jam (% H), menit (% M) dan detik (% S).

  • SRC: Ini adalah jalur sumber untuk file atau folder yang ingin kita buat cadangannya. $ 1 menunjukkan bahwa kita mengambil nilai ini dari parameter pertama yang diteruskan ke skrip.

  • DST: Variabel ini mewakili tujuan file. Dalam kasus kami inilah nama Space yang kami unggah cadangannya. Nama ini akan berasal dari parameter kedua yang diteruskan ke skrip sebagaimana ditunjukkan oleh $ 2.

  • GIVENNAME: Variabel ini menghosting nama yang dipilih pengguna untuk file tujuan. Nama file yang dihasilkan akan dimulai dengan GIVENNAME dan akan memiliki DATETIME yang digabungkan ke dalamnya. Nama ini berasal dari parameter ketiga yang diteruskan ke skrip ($ 3).

Selanjutnya

showhelp{
        echo "\n\n############################################"
        echo "# bkupscript.sh                            #"
        echo "############################################"
        echo "\nThis script will backup files/folders into a single compressed file and will store it in the current folder."
        echo "In order to work, this script needs the following three parameters in the listed order: "
        echo "\t- The full path for the folder or file you want to backup."
        echo "\t- The name of the Space where you want to store the backup at."
        echo "\t- The name for the backup file (timestamp will be added to the beginning of the filename)\n"
        echo "Example: sh bckupscript.sh ./testdir testSpace backupdata\n"
}

Selanjutnya :

tarandzip(){
    echo "\n##### Gathering files #####\n"
    tar -czvf $GIVENNAME-$DATETIME.tar.gz $SRC
}

Dan tambahkan :

if tar -czvf $GIVENNAME-$DATETIME.tar.gz $SRC; then
        echo "\n##### Done gathering files #####\n"
        return 0
    else
        echo "\n##### Failed to gather files #####\n"
        return 1
    fi

Selanjutnya

tarandzip(){
    echo "\n##### Gathering files #####\n"
    if tar -czvf $GIVENNAME-$DATETIME.tar.gz $SRC; then
        echo "\n##### Done gathering files #####\n"
        return 0
    else
        echo "\n##### Failed to gather files #####\n"
        return 1
    fi
}

Dan

movetoSpace(){
    echo\n##### MOVING TO SPACE #####\n”
    ~/s3cmd-2.0.1/s3cmd put $GIVENNAME-$DATETIME.tar.gz s3://$DST
}

Iman Sugirman
Iman Sugirman Web Designer & Developer was 4 years experience in Web Development. Have Secret Sauce Recipe for Create Awesome Website
comments powered by Disqus