Daftar Isi
- SSHFS Cocok untuk Apa dan Di Mana File Tersimpan?
- Studi Kasus: Mengamankan Folder Proyek di Banyak Tempat Secara Otomatis
- Skrip Otomasi Deployment & Multi-Backup
- Optimasi Auto-Mount di /etc/fstab
- Catatan Akhir
Halo Sobat, Kembali lagi di catatan eksperimen dan perjalanan belajar saya. Kali ini, saya mau berbagi alur kerja (workflow) yang lumayan seru sekaligus krusial buat Sobat yang sering mengelola server Linux dan berkode ria, yaitu bagaimana cara mengamankan folder proyek dengan menyimpannya secara otomatis di banyak tempat sekaligus.
Meskipun dalam praktik ini kita melibatkan SSHFS, artikel ini bukan sekadar membahas mounting filesystem biasa. Kita bakal membedah bagaimana folder proyek dibuat di server VM (KVM), terhubung langsung ke PC lokal via SSHFS, otomatis masuk ke Git, dikirim ke server produksi, disinkronkan ke Host, hingga nantinya dibackup otomatis ke Google Drive seperti di tulisan saya sebelumnya tentang Rclone dan Google Drive.
SSHFS Cocok untuk Apa dan Di Mana File Tersimpan?
Saat menggunakan SSHFS, lokasi penyimpanannya sederhana: File fisik proyek tetap berada dan disimpan di server KVM (VM). Komputer/desktop lokal kita hanya menumpang akses (mount) ke direktori tersebut.
Penggunaan SSHFS Sangat Cocok Untuk:
- Pengembangan Kode / Koding Lintas Server: Membuka code editor favorit (seperti VS Code, Sublime Text, atau VSCodium) di komputer lokal dengan nyaman, sementara seluruh file proyek dan proses eksekusinya berjalan di dalam VM KVM.
- Integrasi dengan File Manager (Nautilus): Direktori remote bisa dibuka, ditarik, diubah, atau dikelola secara bebas lewat Nautilus layaknya berkas lokal di desktop.
- Akses File Statis Berukuran Sedang: Mengelola file konfigurasi, skrip bash, atau aset statis yang tidak butuh penulisan berkas real-time berfrekuensi tinggi.
- Manajemen Terpusat: Tidak perlu menyalin file bolak-balik menggunakan
scpsetiap kali ada perubahan kode.
Kapan SSHFS Kurang Cocok?
Seperti yang pernah kita bahas, SSHFS kurang cocok untuk file dengan I/O tinggi yang ditulis secara terus-menerus, seperti folder cache WordPress (wp-content/cache) atau database.
Studi Kasus: Mengamankan Folder Proyek di Banyak Tempat Secara Otomatis
Biar makin kebayang, mari kita ambil contoh nyata dari skrip otomasi yang biasa saya gunakan saat mengembangkan aplikasi (misalnya aplikasi web berbasis Rust).
Di skenario ini, kita memiliki alur backup & deployment otomatis 5 tingkat:
[ Desktop Lokal ] --(SSHFS)--> [ Server KVM ]
(Nautilus/Editor) │
┌────────────────────────────┼────────────────────────────┐
▼ ▼ ▼
[ GitHub / Git ] [ Server Produksi ] [ Server Host Lokal ]
(Private Backup) (Live Environment) │
▼
[ Google Drive ]
(Rclone Cloud Backup) - Komputer Lokal (Desktop): Mengakses folder proyek di KVM via SSHFS untuk koding sehari-hari dengan kemudahan akses langsung lewat Nautilus serta editor kesukaan secara bebas layaknya berkas desktop lokal.
- Server KVM: Tempat file utama disimpan, tempat kompilasi biner (
cargo build), dan eksekusi skrip pendorong. - GitHub Private: Untuk version control dan cadangan source code.
- Server Produksi: Tempat aplikasi live dijalankan ke pengunjung.
- Server Host Lokal & Google Drive: Source code disalin ke server host lokal (IP
192.168.122.1), lalu langsung disinkronkan otomatis ke Google Drive via Rclone.
Skrip Otomasi Deployment & Multi-Backup
Berikut contoh skrip bash (deploy-and-backup.sh) yang dijalankan di dalam server KVM untuk mengeksekusi alur di atas secara otomatis, termasuk integrasi Rclone ke Google Drive:
#!/bin/bash
set -e
echo "=== 1. Memulai Kompilasi Rust ==="
cd /home/riyanto/myprojects/rust-website
CARGO_TARGET_DIR=/home/riyanto/rust-website-tmp/target cargo build --release
echo "=== 2. Backup Source Code ke GitHub Private ==="
git add .
git commit -m "Auto-deploy: $(date +'%Y-%m-%d %H:%M:%S')" || true
git push origin main
echo "=== 3. Membuat File ZIP Berdasarkan Versi Commit Git ==="
COMMIT_HASH=$(git rev-parse --short HEAD)
ZIP_PATH="/home/riyanto/myprojects/rust-website-${COMMIT_HASH}.zip"
git archive --format=zip -o "$ZIP_PATH" HEAD
echo "File backup ZIP tersimpan di: $ZIP_PATH"
echo "=== 4. Mengirim Biner & File Statis ke Server Produksi ==="
rsync -av -e ssh /home/riyanto/rust-website-tmp/target/release/rust-website root@104.251.29.187:/home/riyanto/
rsync -av -e ssh /home/riyanto/myprojects/rust-website/static/ root@104.251.29.187:/home/riyanto/myweb/s5.linuxfun.com/static/
echo "=== 5. Mengeksekusi Biner di Server Produksi ==="
ssh root@104.251.29.187 << 'REMOTE_EOF'
chmod +x /home/riyanto/myprojects/rust-website
chown -R www-data:www-data /home/riyanto/myweb/rahmatriyanto.com
rm -rf /home/riyanto/myweb/rahmatriyanto.com/cache/*
pkill -f rust-website || true
nohup /home/riyanto/myprojects/rust-website > /home/riyanto/myprojects/rust-website.log 2>&1 &
echo "Biner rust-website berhasil dijalankan di background!"
REMOTE_EOF
echo "=== 6. Sinkronisasi Source Code ke Server Host via rsync ==="
HOST_IP="192.168.122.1"
HOST_USER="root"
SRC_DIR="/home/riyanto/myprojects/"
HOST_DEST="/home/riyanto/myprojects/"
rsync -avz --progress --delete \
--exclude="target" \
--exclude=".git" \
"$SRC_DIR" "${HOST_USER}@${HOST_IP}:${HOST_DEST}"
echo "=== 7. Backup Otomatis ke Google Drive via Rclone ==="
# Menggunakan Rclone untuk menyinkronkan file ZIP backup ke Google Drive
# Referensi konfigurasi: https://rahmatriyanto.com/rclone-cara-otomatis-backup-file-linux-ubuntu-desktop-server-ke-google-drive.htm
REMOTE_NAME="gdrive-backup"
DRIVE_DEST="gdrive-backup:Backup/projects/"
rclone copy "$ZIP_PATH" "$DRIVE_DEST" --progress
echo "=========================================================="
echo " Selesai! File tersimpan di Host (${HOST_IP}) & Google Drive"
echo "==========================================================" Optimasi Auto-Mount di /etc/fstab
Saat menghubungkan folder /home/riyanto/myprojects dari KVM ini ke desktop lokal menggunakan SSHFS, tantangan umumnya adalah menjaga agar sistem lokal tidak membeku (hang) jika VM KVM sedang mati saat reboot.
Konfigurasi fstab dengan integrasi systemd di PC lokal membuat koneksi terhubung secara on-demand:
root@192.168.122.2:/home/riyanto/myprojects /home/linuxfun/data/myprojects fuse.sshfs noauto,x-systemd.automount,_netdev,reconnect,ServerAliveInterval=60,ServerAliveCountMax=2,IdentityFile=/home/linuxfun/.ssh/id_rsa 0 0 Mengapa Konfigurasi Ini Efektif?
noauto,x-systemd.automount: Mencegah proses booting berhenti menunggu jaringan. SSHFS baru dihubungkan otomatis saat kita membuka folder tersebut (misalnya saat membuka direktori via Nautilus).ServerAliveInterval=60&ServerAliveCountMax=2: Khusus lingkungan KVM lokal (192.168.122.x), interval ini efisien karena jika VM mati, lokal langsung mendeteksinya dalam 2 menit tanpa membekukan sistem.
Catatan Akhir
Dengan menggabungkan SSHFS, Git, Rsync, dan Rclone Google Drive, kita tidak hanya mendapatkan kemudahan koding dari komputer lokal lewat Nautilus dan text editor kesayangan, tetapi juga memiliki redundansi data yang sangat kuat. Selain berada di VM dan server produksi, berkas proyek juga otomatis tersimpan aman di server host lokal (192.168.122.1) serta tersinkron otomatis ke Google Drive dengan panduan Rclone yang pernah kita bahas sebelumnya.
Semoga alur otomasi ini bisa jadi referensi berguna buat Sobat dalam mengamankan folder proyek masing-masing. Kalau Sobat punya skema backup yang lebih ringkas, bagikan di kolom komentar ya.