Add Your Heading Text Here
Rclone adalah utilitas CLI lintas-platform untuk sinkronisasi/arsip data ke berbagai penyimpanan object storage, termasuk Amazon S3. Kekuatan rclone ada pada konsistensi perintah (copy, sync, move), dukungan enkripsi sisi klien (crypt), dan opsi teknis yang kaya untuk kinerja serta keamanan. Pada AWS S3, enkripsi server-side (SSE-S3) kini aktif by default; Anda dapat menambah SSE-KMS untuk kontrol kunci yang lebih ketat. [lihat Sumber]
Instalasi rclone
Metode resmi (Linux):
curl -fsSL https://rclone.org/install.sh | sudo bash
rclone version
Opsi lain: gunakan paket distro/Chocolatey/Homebrew sesuai sistem Anda. [lihat Sumber]
IAM Paling Minimum (Least Privilege)
Buat user/role khusus rclone dengan akses hanya ke satu bucket dan satu prefix (folder). Contoh kebijakan JSON:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ListBucketPrefix",
"Effect": "Allow",
"Action": [ "s3:ListBucket" ],
"Resource": "arn:aws:s3:::<BUCKET_NAME>",
"Condition": { "StringLike": { "s3:prefix": ["<PREFIX>/*"] } }
},
{
"Sid": "CRUDObjectsUnderPrefix",
"Effect": "Allow",
"Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:AbortMultipartUpload" ],
"Resource": "arn:aws:s3:::<BUCKET_NAME>/<PREFIX>/*"
}
]
}
Tambahkan izin SSE-KMS jika memakai KMS (lihat bagian Enkripsi). [lihat Sumber]
Konfigurasi Remote S3 (env atau kredensial langsung)
Opsi A — Menggunakan kredensial lingkungan (disarankan)
# Ekspor kredensial (contoh, non-produksi)
export AWS_ACCESS_KEY_ID="<AKIA...>"
export AWS_SECRET_ACCESS_KEY="<SECRET>"
export AWS_DEFAULT_REGION="ap-southeast-1"
# Buat remote S3 bernama "aws-s3" yang mengambil kredensial dari env
rclone config create aws-s3 s3 provider AWS env_auth true region ap-southeast-1
Opsi B — Menyimpan kredensial di rclone.conf
rclone config create aws-s3 s3 \
provider AWS \
env_auth false \
access_key_id "<AWS_ACCESS_KEY_ID>" \
secret_access_key "<AWS_SECRET_ACCESS_KEY>" \
region ap-southeast-1
Catatan: S3 mendukung virtual-hosted style dan path-style. Pada AWS, pendekatan virtual-hosted adalah praktik modern; biarkan rclone memilih default sesuai provider atau atur sesuai kebutuhan kompatibilitas. [lihat Sumber]
Menambahkan Enkripsi Klien (rclone crypt)
Layer crypt mengenkripsi nama berkas dan konten di sisi klien sebelum dikirim ke S3. Ini melengkapi SSE-S3/SSE-KMS. Setup cepat:
# Buat folder khusus di S3 untuk data terenkripsi
rclone mkdir aws-s3:<BUCKET_NAME>/<PREFIX>/enc
# Buat remote "aws-enc" yang membungkus aws-s3:<BUCKET>/<PREFIX>/enc
rclone config create aws-enc crypt \
remote aws-s3:<BUCKET_NAME>/<PREFIX>/enc \
filename_encryption standard \
directory_name_encryption true \
password "<PASSPHRASE_UTAMA>" \
password2 "<OPSIONAL_SALT>"
Jaga passphrase dengan aman (password manager/secret store). [lihat Sumber]
Perintah Dasar: copy vs sync
copy: menyalin berkas baru/berubah ke tujuan; tidak menghapus berkas lama di tujuan.sync: membuat tujuan identik dengan sumber (berkas yang tidak ada di sumber akan dihapus di tujuan). Gunakan hati-hati. [lihat Sumber]
# Uji dulu (tanpa eksekusi) dengan --dry-run
rclone sync /data/backup aws-s3:<BUCKET>/<PREFIX>/backup --dry-run -P
# Jalankan sungguhan dengan verifikasi checksum
rclone sync /data/backup aws-s3:<BUCKET>/<PREFIX>/backup -P --checksum
Optimasi Kinerja: Multipart, Concurrency, Chunk
Unggahan besar memakai multipart upload. Penyesuaian umum:
# Contoh penyesuaian (uji secara bertahap sesuai jaringan/CPU/RAM)
rclone copy /data/arsip aws-s3:<BUCKET>/arsip -P \
--transfers 8 \
--s3-upload-concurrency 8 \
--s3-chunk-size 32M
Perhatikan memori: estimasi penggunaan memori multipart ≈ --transfers × --s3-upload-concurrency × --s3-chunk-size. [lihat Sumber]
Enkripsi Server-Side: SSE-S3 & SSE-KMS
Sejak 2023, semua unggahan ke S3 dienkripsi minimal dengan SSE-S3 secara otomatis. Untuk kontrol kunci granular, gunakan SSE-KMS plus kebijakan KMS yang sesuai.
# Memaksa SSE-S3 eksplisit (opsional)
rclone copy ./file.log aws-s3:<BUCKET>/logs \
--s3-server-side-encryption AES256
# Menggunakan SSE-KMS (ganti alias/ARN kunci Anda)
rclone copy ./db.dump aws-s3:<BUCKET>/db \
--s3-server-side-encryption aws:kms \
--s3-sse-kms-key-id alias/<ALIAS_KMS>
Tip: jika kebijakan KMS mensyaratkan KMS key tertentu, pastikan parameter rclone cocok; ketidaksesuaian bisa ditolak S3/KMS. [lihat Sumber]
Lifecycle, Glacier & Versioning
Gunakan Lifecycle untuk memindah objek lama ke kelas lebih hemat (mis. Intelligent-Tiering, Glacier Instant Retrieval, Glacier Flexible Retrieval/Deep Archive) dan/atau menghapus setelah masa simpan. Perlu diingat transisi bersifat asynchronous (ada jeda). Aktifkan juga Versioning untuk pemulihan dari hapus/overwrite.
{
"Rules": [
{
"ID": "Transisi-Arsip",
"Status": "Enabled",
"Filter": { "Prefix": "<PREFIX>/backup/" },
"Transitions": [
{ "Days": 30, "StorageClass": "INTELLIGENT_TIERING" },
{ "Days": 90, "StorageClass": "GLACIER_IR" }
],
"NoncurrentVersionTransitions": [
{ "NoncurrentDays": 30, "StorageClass": "GLACIER_IR" }
],
"Expiration": { "Days": 365 }
}
]
}
Atur Versioning dan kebijakan penghapusan versi tidak-terbaru sesuai kebutuhan pemulihan. [lihat Sumber]
Otomasi Harian: Skrip & Cron
Contoh skrip umum dengan logging dan notifikasi sederhana (mailx opsional):
#!/usr/bin/env bash
set -euo pipefail
SRC="/data/backup"
DST="aws-s3:<BUCKET>/<PREFIX>/backup"
LOG="/var/log/rclone-backup.log"
# Opsional: SSE-KMS
SSE_ARGS=(--s3-server-side-encryption aws:kms --s3-sse-kms-key-id alias/<ALIAS_KMS>)
# Jika IAM tidak izinkan create/list bucket, hindari pengecekan
NOCHK="--s3-no-check-bucket"
# Jalankan sinkronisasi
rclone sync "$SRC" "$DST" -P --checksum "$NOCHK" \
--transfers 8 --s3-upload-concurrency 8 --s3-chunk-size 32M \
"${SSE_ARGS[@]}" \
--log-file "$LOG" --log-level INFO
echo "[$(date -Is)] Rclone sync OK" | mail -s "Backup OK" admin@example.org || true
# /etc/crontab — jalankan tiap 23:45
45 23 * * * root /usr/local/bin/backup-s3.sh
Contoh untuk Proxmox/PBS & Database
Sinkronisasi arsip Proxmox Backup Server (PBS) ke S3
# Contoh: sinkronkan datastore PBS ke S3 terenkripsi (crypt)
rclone sync /mnt/datastore/backups aws-enc:<BUCKET>/<PREFIX>/enc -P \
--s3-no-check-bucket --log-file /var/log/rclone-pbs.log --log-level INFO
Dump database harian lalu kirim ke S3
# MariaDB (rotasi sederhana per tanggal)
mysqldump -u backup -p'<PASS>' --routines --events --triggers --single-transaction \
--databases sekolah_db | gzip > /data/backup/db/sekolah_$(date +%F).sql.gz
rclone copy /data/backup/db aws-s3:<BUCKET>/<PREFIX>/db -P --checksum
Troubleshooting Singkat
- AccessDenied saat
copypada IAM terbatas: tambahkan--s3-no-check-bucketagar rclone tidak mencoba membuat/cek bucket. Pastikan bucket sudah ada. [lihat Sumber] - Kesalahan dengan SSE-KMS: pastikan
--s3-server-side-encryption aws:kmsdan--s3-sse-kms-key-idsesuai kebijakan KMS. [lihat Sumber] - Performa kurang: tingkatkan bertahap
--transfers,--s3-upload-concurrency,--s3-chunk-size—sambil memantau CPU/RAM/jaringan. [lihat Sumber] - URL gaya lama: utamakan virtual-hosted sesuai praktik modern S3. [lihat Sumber]
Matriks Keputusan
| Aspek | Pilihan | Kelebihan | Keterbatasan | Gunakan Saat |
|---|---|---|---|---|
| Kredensial | ENV (AWS_*) | Rotasi mudah (IAM), tidak menyimpan di berkas | Perlu runtime env terkelola | Server/CI/CD |
| Kredensial | rclone.conf | Setup cepat | Perlu proteksi file (0600) | Mesin tunggal |
| Enkripsi server-side | SSE-S3 | Default & tanpa biaya tambahan | Kontrol kunci terbatas | Umum/standar |
| Enkripsi server-side | SSE-KMS | Kontrol kunci, audit, kebijakan granular | Biaya & manajemen KMS | Data sensitif/ketentuan audit |
| Enkripsi klien | rclone crypt | End-to-end, nama & konten terenkripsi | Perlu manajemen passphrase | Privasi tingkat lanjut |
| Strategi operasi | copy | Aman, tak menghapus tujuan | Menumpuk berkas lama | Arsip |
| Strategi operasi | sync | Tujuan identik dengan sumber | Berisiko hapus jika salah target | Mirror/backup ketat |
Checklist Implementasi & Keamanan
- Gunakan IAM least privilege (bucket/prefix spesifik).
- Aktifkan SSE-S3 (default) atau SSE-KMS + kebijakan kunci.
- Pertimbangkan rclone crypt untuk kerahasiaan menyeluruh.
- Atur Lifecycle ke kelas hemat & hapus setelah masa simpan.
- Aktifkan Versioning untuk lindungi dari hapus/overwrite.
- Automasi cron + log + notifikasi.
- Uji restore berkala; backup yang tidak diuji hanyalah asumsi.
Kesimpulan
Menggabungkan rclone dengan AWS S3 memberi jalur backup offsite yang andal: kredensial aman (ENV/IAM), enkripsi berlapis (SSE-S3/SSE-KMS + crypt), kebijakan retensi yang hemat biaya (Lifecycle/Glacier), serta otomasi yang rapi. Dengan penyesuaian performa dan disiplin uji-restore, RPO/RTO realistis untuk lingkungan kecil hingga menengah dapat dicapai tanpa kompleksitas berlebih.