Halo, Kawan Belajar!
Dalam era digital saat ini, menjaga keamanan dan integritas data menjadi sangat penting. Salah satu cara efektif untuk melindungi data Anda adalah dengan melakukan backup secara otomatis. Layanan Kilat Storage dari CloudKilat menawarkan solusi penyimpanan berbasis objek yang dapat diakses melalui protokol S3, memungkinkan pengguna untuk menyimpan file backup dengan mudah dan aman. Kilat Storage merupakan storage yang menggunakan protokol AWS S3 dimana storage ini mendukung API dari Amazon S3. Dengan menggunakan layanan Kilat Storage, Anda dapat menyimpan file berkas apapun yang bersifat statis pada bucket yang dimiliki.
Panduan ini akan menjelaskan langkah demi langkah cara melakukan backup data secara otomatis ke Kilat Storage menggunakan Rclone dan Cron. Rclone adalah tools yang sangat bermanfaat untuk mengelola file di berbagai cloud storage, sementara Cron memungkinkan penjadwalan tugas secara otomatis di sistem Linux.
Mari kita mulai dengan langkah-langkah yang diperlukan untuk mengatur backup otomatis ke Kilat Storage Anda. Silakan simak baik-baik ya!
Persiapan:
- Layanan Kilat Storage yang berstatus Aktif
- Komputer/Laptop dengan Sistem Operasi Windows, Linux, atau Mac OS.
Instalasi Rclone #
Rclone dapat diinstallkan di berbagai macam Sistem Operasi. Berikut adalah minimum version Sistem Operasi yang diperlukan untuk menginstall Rclone saat Knowledge Base ini dibuat:
Pada Knowledge Base kali ini, kami menginstal Rclone versi 1.68.2 yang merupakan versi terbaru dari Rclone saat ini. Silakan untuk mengunduh Rclone versi terbaru pada halaman official berikut ( https://rclone.org/downloads/ ) sesuai dengan Sistem Operasi yang Anda gunakan.
Atau, jika Anda menggunakan Sistem Operasi Linux/macOS/BSD, Anda dapat menjalankan perintah di bawah ini untuk penginstalan Rclone:
sudo -v ; curl https://rclone.org/install.sh | sudo bash
Pada OS Windows, pengaksesan Rclone dapat dilakukan melalui Command Prompt (CMD). Setelah Command Prompt dibuka, arahkan direktori di tempat Rclone berada. Karena, Rclone tidak dapat dijalankan jika lokasi direktori CMD tidak berada di tempat Rclone.
Gambar 2: Direktori File Rclone
Konfigurasi Rclone #
Langkah selanjutnya, kita akan menambahkan layanan Kilat Storage (S3) untuk dikelola menggunakan Rclone.
$ rclone config
No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
Pada bagian name ini dapat diisikan nama cloud storage yang nantinya kita kelola di Rclone.
name> kilatstorage
Anda dapat mengetik nomor “4” untuk memilh Amazon S3 Compliant Storage Provide.
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
1 / 1Fichier
\ (fichier)
2 / Akamai NetStorage
\ (netstorage)
3 / Alias for an existing remote
\ (alias)
4 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, ArvanCloud, Ceph, ChinaMobile, Cloudflare, DigitalOcean, Dreamhost, GCS, HuaweiOBS, IBMCOS, IDrive, IONOS, LyveCloud, Leviia, Liara, Linode, Magalu, Minio, Netease, Petabox, RackCorp, Rclone, Scaleway, SeaweedFS, StackPath, Storj, Synology, TencentCOS, Wasabi, Qiniu and others
\ (s3)
5 / Backblaze B2
\ (b2)
6 / Better checksums for other remotes
\ (hasher)
7 / Box
\ (box)
8 / Cache a remote
\ (cache)
9 / Citrix Sharefile
\ (sharefile)
10 / Combine several remotes into one
\ (combine)
11 / Compress a remote
\ (compress)
12 / Dropbox
\ (dropbox)
13 / Encrypt/Decrypt a remote
\ (crypt)
14 / Enterprise File Fabric
\ (filefabric)
15 / FTP
\ (ftp)
16 / Files.com
\ (filescom)
17 / Gofile
\ (gofile)
18 / Google Cloud Storage (this is not Google Drive)
\ (google cloud storage)
19 / Google Drive
\ (drive)
20 / Google Photos
\ (google photos)
21 / HTTP
\ (http)
22 / Hadoop distributed file system
\ (hdfs)
23 / HiDrive
\ (hidrive)
24 / ImageKit.io
\ (imagekit)
25 / In memory object storage system.
\ (memory)
26 / Internet Archive
\ (internetarchive)
27 / Jottacloud
\ (jottacloud)
28 / Koofr, Digi Storage and other Koofr-compatible storage providers
\ (koofr)
29 / Linkbox
\ (linkbox)
30 / Local Disk
\ (local)
31 / Mail.ru Cloud
\ (mailru)
32 / Mega
\ (mega)
33 / Microsoft Azure Blob Storage
\ (azureblob)
34 / Microsoft Azure Files
\ (azurefiles)
35 / Microsoft OneDrive
\ (onedrive)
36 / OpenDrive
\ (opendrive)
37 / OpenStack Swift (Rackspace Cloud Files, Blomp Cloud Storage, Memset Memstore, OVH)
\ (swift)
38 / Oracle Cloud Infrastructure Object Storage
\ (oracleobjectstorage)
39 / Pcloud
\ (pcloud)
40 / PikPak
\ (pikpak)
41 / Pixeldrain Filesystem
\ (pixeldrain)
42 / Proton Drive
\ (protondrive)
43 / Put.io
\ (putio)
44 / QingCloud Object Storage
\ (qingstor)
45 / Quatrix by Maytech
\ (quatrix)
46 / SMB / CIFS
\ (smb)
47 / SSH/SFTP
\ (sftp)
48 / Sia Decentralized Cloud
\ (sia)
49 / Storj Decentralized Cloud Storage
\ (storj)
50 / Sugarsync
\ (sugarsync)
51 / Transparently chunk/split large files
\ (chunker)
52 / Uloz.to
\ (ulozto)
53 / Union merges the contents of several upstream fs
\ (union)
54 / Uptobox
\ (uptobox)
55 / WebDAV
\ (webdav)
56 / Yandex Disk
\ (yandex)
57 / Zoho
\ (zoho)
58 / premiumize.me
\ (premiumizeme)
59 / seafile
\ (seafile)
Storage> 4
Di bagian S3 Provider, silakan ketik nomor “32” untuk memilih Any other S3 compatible provider.
** See help for s3 backend at: https://rclone.org/s3/ **
Option provider.
Choose your S3 provider.
Choose a number from below, or type in your own value.
Press Enter to leave empty.
1 / Amazon Web Services (AWS) S3
\ (AWS)
2 / Alibaba Cloud Object Storage System (OSS) formerly Aliyun
\ (Alibaba)
3 / Arvan Cloud Object Storage (AOS)
\ (ArvanCloud)
4 / Ceph Object Storage
\ (Ceph)
5 / China Mobile Ecloud Elastic Object Storage (EOS)
\ (ChinaMobile)
6 / Cloudflare R2 Storage
\ (Cloudflare)
7 / DigitalOcean Spaces
\ (DigitalOcean)
8 / Dreamhost DreamObjects
\ (Dreamhost)
9 / Google Cloud Storage
\ (GCS)
10 / Huawei Object Storage Service
\ (HuaweiOBS)
11 / IBM COS S3
\ (IBMCOS)
12 / IDrive e2
\ (IDrive)
13 / IONOS Cloud
\ (IONOS)
14 / Seagate Lyve Cloud
\ (LyveCloud)
15 / Leviia Object Storage
\ (Leviia)
16 / Liara Object Storage
\ (Liara)
17 / Linode Object Storage
\ (Linode)
18 / Magalu Object Storage
\ (Magalu)
19 / Minio Object Storage
\ (Minio)
20 / Netease Object Storage (NOS)
\ (Netease)
21 / Petabox Object Storage
\ (Petabox)
22 / RackCorp Object Storage
\ (RackCorp)
23 / Rclone S3 Server
\ (Rclone)
24 / Scaleway Object Storage
\ (Scaleway)
25 / SeaweedFS S3
\ (SeaweedFS)
26 / StackPath Object Storage
\ (StackPath)
27 / Storj (S3 Compatible Gateway)
\ (Storj)
28 / Synology C2 Object Storage
\ (Synology)
29 / Tencent Cloud Object Storage (COS)
\ (TencentCOS)
30 / Wasabi Object Storage
\ (Wasabi)
31 / Qiniu Object Storage (Kodo)
\ (Qiniu)
32 / Any other S3 compatible provider
\ (Other)
provider> 32
Pada bagian ini, kita bisa memilih nomor “1“ agar nantinya pengisian kredensial layanan Kilat Storage (Access Key dan Secret Key) dimasukkan di langkah selanjutnya.
Option env_auth.
Get AWS credentials from runtime (environment variables or EC2/ECS meta data if no env vars).
Only applies if access_key_id and secret_access_key is blank.
Choose a number from below, or type in your own boolean value (true or false).
Press Enter for the default (false).
1 / Enter AWS credentials in the next step.
\ (false)
2 / Get AWS credentials from the environment (env vars or IAM).
\ (true)
env_auth> 1
Masukkan Access Key dan Secret Key dari Layanan Kilat Storage Anda. Informasi ini dapat Anda temukan di halaman Manage Service Layanan Kilat Storage Anda pada Portal Client CloudKilat.
Baca Juga : Cara Menggunakan Layanan Kilat Storage
Option access_key_id.
AWS Access Key ID.
Leave blank for anonymous access or runtime credentials.
Enter a value. Press Enter to leave empty.
access_key_id> [Access Key]
Option secret_access_key.
AWS Secret Access Key (password).
Leave blank for anonymous access or runtime credentials.
Enter a value. Press Enter to leave empty.
secret_access_key> [Secret Key]
Selanjutnya, ketik “1” untuk pemilihan region dan masukkan Endpoints layanan Kilat Storage, yaitu [ https://s3-id-jkt-1.kilatstorage.id ].
Option region.
Region to connect to.
Leave blank if you are using an S3 clone and you don't have a region.
Choose a number from below, or type in your own value.
Press Enter to leave empty.
1 / Use this if unsure. Will use v4 signatures and an empty region.
\ ""
2 / Use this only if v4 signatures don't work, eg pre Jewel/v10 CEPH.
\ "other-v2-signature"
region> 1
Option endpoint.
Endpoint for S3 API.
Required when using an S3 clone.
Enter a value. Press Enter to leave empty.
endpoint> https://s3-id-jkt-1.kilatstorage.id
Silakan klik “Enter” untuk pengaturan default dan melanjutkan ke konfigurasi berikutnya.
Option location_constraint.
Location constraint - must be set to match the Region.
Leave blank if not sure. Used when creating buckets only.
Enter a value. Press Enter to leave empty.
location_constraint>
Pada bagian di bawah ini merupakan pengaturan konfigurasi Access Control List (ACL) terhadap pengelolaan layanan Kilat Storage Anda di Rclone.
Sebagai contoh, kami memilih nomor “1” agar Owner (Pemilik) dapat memiliki kendali penuh dan tidak ada pihak luar yang memiliki hak akses untuk pengaturan konfigurasi Rclone. Kedepannya, hak akses ini bisa dilakukan perubahan sesuai dengan kebutuhan Anda.
Option acl.
Canned ACL used when creating buckets and storing or copying objects.
This ACL is used for creating objects and if bucket_acl isn't set, for creating buckets too.
For more info visit https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl
Note that this ACL is applied when server-side copying objects as S3 doesn't copy the ACL from the source but rather writes a fresh one.
If the acl is an empty string then no X-Amz-Acl: header is added and the default (private) will be used.
Choose a number from below, or type in your own value.
Press Enter to leave empty.
/ Owner gets FULL_CONTROL.
1 | No one else has access rights (default).
\ (private)
/ Owner gets FULL_CONTROL.
2 | The AllUsers group gets READ access.
\ (public-read)
/ Owner gets FULL_CONTROL.
3 | The AllUsers group gets READ and WRITE access.
| Granting this on a bucket is generally not recommended.
\ (public-read-write)
/ Owner gets FULL_CONTROL.
4 | The AuthenticatedUsers group gets READ access.
\ (authenticated-read)
/ Object owner gets FULL_CONTROL.
5 | Bucket owner gets READ access.
| If you specify this canned ACL when creating a bucket, Amazon S3 ignores it.
\ (bucket-owner-read)
/ Both the object owner and the bucket owner get FULL_CONTROL over the object.
6 | If you specify this canned ACL when creating a bucket, Amazon S3 ignores it.
\ (bucket-owner-full-control)
acl> 1
Selanjutnya, silakan tekan tombol “Enter” atau mengetik “n” untuk melanjutkan.
Edit advanced config?
y) Yes
n) No (default)
y/n> n
Silakan untuk di-review terlebih dahulu hasil konfigurasi yang telah dilakukan sebelumnya. Jika informasi yang tertera sudah sesuai, Anda dapat mengetik “y” untuk melanjutkan.
Configuration complete.
Options:
- type: s3
- provider: Other
- access_key_id: [Access Key]
- secret_access_key: [Secret Key]
- endpoint: https://s3-id-jkt-1.kilatstorage.id
- acl: private
Keep this "kilatstorage" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y
Di bawah ini merupakan hasil jika Layanan Kilat Storage sudah berhasil ditambahkan dan siap untuk dikelola menggunakan Rclone.
Current remotes:
Name Type
==== ====
kilatstorage s3
e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q>
Membuat Script Backup #
Silakan untuk membuat file dengan nama “script-backup.sh” yang berisikan script berikut:
#!/bin/bash
# Remote storage Rclone
# remote_name="remote_storage:bucket"
remote_name="kilatstorage:mywebsite"
# Direktori yang ingin di backup
source_dir="/var/www/wordpress/"
# Membuat nama file backup dengan timestamp
now="backup-$(date +'%Y-%m-%d-%H-%M-%S')"
# Membuat file zip dari direktori source
zip -qr $now.zip $source_dir
# Mengupload file zip ke remote storage
rclone copy -v $now.zip $remote_name
# Hapus file backup di lokal
rm $now.zip
# Log jika proses backup selesai
echo "Finish backup: $remote_name - $(date +'%Y-%m-%d %H:%M:%S')" >> /var/log/cron.log
Script backup di atas bertugas untuk mengompres direktori yang ingin Anda backup menjadi file zip, kemudian meng-upload file zip tersebut ke Kilat Storage menggunakan Rclone. Script ini juga akan menghapus file zip lokal setelah proses upload selesai untuk menghemat ruang penyimpanan di server.
Penjelasan Script Backup: #
- remote_name: Variabel ini menentukan nama remote storage yang telah dikonfigurasi di Rclone. Pastikan untuk menyesuaikannya dengan nama remote storage yang Anda buat dalam file konfigurasi Rclone (
rclone.conf
). Untuk formatnya yaitu “remote_name:bucket”. Pastikan nama bucket atau folder yang Anda masukkan telah Anda buat di Kilat Storage. - source_dir: Menentukan direktori yang ingin Anda backup. Anda dapat mengubah value-nya sesuai dengan direktori yang ingin Anda backup.
- timestamp: Digunakan untuk membuat nama file backup dengan menambahkan timestamp. Ini membantu Anda untuk membedakan setiap file backup berdasarkan waktu pembuatan, sehingga Anda tidak akan mengalami kebingungan antara file backup yang berbeda.
- zip: Perintah ini digunakan untuk mengompres direktori yang ditentukan dalam
source_dir
menjadi file zip. Proses pengompresan ini memudahkan pengelolaan dan menghemat ruang penyimpanan di server. - rclone copy: Perintah ini digunakan untuk mengupload file zip yang telah dibuat ke Kilat Storage. Rclone akan menyalin file zip ke lokasi remote yang telah ditentukan dalam
remote_name
. - rm: Perintah ini digunakan untuk menghapus file zip lokal setelah diupload ke Kilat Storage. Hal ini akan membantu menghemat ruang penyimpanan di server Anda dengan memastikan bahwa hanya file backup yang tersimpan di cloud.
- echo: Perintah ini akan mencatat log waktu penghapusan selesai ke dalam file log (
/var/log/cron.log
). Ini berguna untuk pemantauan dan audit, sehingga Anda dapat melacak kapan proses penghapusan dilakukan
Membuat Script Penghapusan File Backup Lama #
Selanjutnya, silakan untuk membuat file dengan nama “delete-old.sh” yang berisikan script berikut:
#!/bin/bash
# Remote storage Rclone
remote_name="kilatstorage:mywebsite"
file_name="backup-*"
# Menghapus file backup jika file tersebut telah disimpan dalam jangka waktu tertentu
# menggunakan --min-age
rclone delete -v --include $file_name --min-age 2d $remote_name
# menggunakan --max-age
# rclone delete -v --include $file_name --max-age 20m $remote_name
# Log jika proses backup selesai
echo "Finish delete: $remote_name - $(date +'%Y-%m-%d %H:%M:%S')" >> /var/log/cron.log
Script ini bertugas untuk menghapus file backup lama yang sudah tidak diperlukan lagi. Dengan menghapus file-file ini, Anda dapat mengelola ruang penyimpanan di Kilat Storage secara lebih efisien. Script di atas akan mencari dan menghapus file backup yang lebih tua dari jangka waktu tertentu.
Penjelasan Script: #
- remote_name: Variabel ini menentukan nama remote storage yang telah dikonfigurasi di Rclone. Pastikan untuk menyesuaikannya dengan nama remote storage yang Anda buat dalam file konfigurasi Rclone (
rclone.conf
). - file_name: Mendefinisikan pola nama file yang akan dicari untuk dihapus. Dalam script tersebut, pola yang digunakan adalah semua file yang diawali dengan nama “backup-“. Hal ini memungkinkan script untuk mengidentifikasi file backup yang relevan untuk dihapus.
- rclone delete: Perintah ini digunakan untuk menghapus file backup yang lebih tua dari jangka waktu tertentu. Dalam contoh script tersebut, file yang lebih tua dari 2 hari akan dihapus. Anda dapat menyesuaikan pengaturan waktu sesuai kebutuhan Anda, misalnya, mengubah
--min-age 2d
menjadi--min-age 7d
jika ingin menghapus file yang lebih tua dari 7 hari. - echo: Mencatat log waktu penghapusan selesai ke dalam file log (
/var/log/cron.log
) yang berguna untuk pemantauan dan audit, sehingga Anda dapat melacak kapan proses penghapusan dilakukan.
Menjadwalkan Tugas dengan Cron #
Cron merupakan utilitas di sistem Unix/Linux yang memungkinkan pengguna untuk menjadwalkan tugas (task) agar dijalankan secara otomatis pada waktu tertentu. Dengan menggunakan Cron, Anda dapat menjadwalkan script backup dan penghapusan sehingga tidak perlu menjalankannya secara manual setiap kali. Berikut langkah-langkahnya:
1. Buka crontab untuk mengedit cron:
crontab -e
2. Tambahkan baris berikut untuk menjadwalkan script:
# Backup setiap hari kerja pada pukul 23:59
59 23 * * 1-5 /var/www/rclone-sh/script-backup.sh
# Hapus file backup lama setiap hari
@daily /var/www/rclone-sh/delete-old.sh
Penjelasan Jadwal Cron: #
- Baris pertama menjadwalkan skrip
script-backup.sh
untuk dijalankan setiap hari kerja (Senin sampai Jumat) pada pukul 23:59. - Baris kedua menjadwalkan skrip
delete-old.sh
untuk dijalankan setiap hari.
Catatan:
- Pastikan untuk menyesuaikan lokasi direktori file Anda dengan lokasi yang sesuai di server Anda.
- Untuk mengatur jadwal backup, Anda dapat memanfaatkan tools seperti crontab.guru yang menyediakan antarmuka pengguna untuk membantu memahami dan menulis sintaks cron dengan lebih mudah.
Kesimpulan #
Dengan mengikuti panduan ini, Anda dapat melakukan backup data secara otomatis ke Kilat Storage menggunakan Rclone dan Cron. Proses ini tidak hanya memastikan bahwa data Anda selalu terjaga, tetapi juga mengoptimalkan penggunaan ruang penyimpanan dengan menghapus backup lama secara otomatis. Pastikan untuk memantau log yang dihasilkan untuk memastikan bahwa semua proses berjalan lancar.
Jika Anda memiliki pertanyaan lebih lanjut atau memerlukan bantuan tambahan, jangan ragu untuk menghubungi Tim Support kami dengan mengirimkan surel ke info@cloudkilat.com . Semoga panduan ini bermanfaat! :).