miomi-backup
v1.1.1
Published
CLI tool untuk auto backup Database & Assets dari berbagai project web (Laravel, Next.js, Go, Python, dll)
Maintainers
Readme
🛡️ miomi-backup
miomi-backup adalah CLI tool modern yang dirancang untuk membantu developer melakukan backup database dan assets project web secara otomatis, aman, dan sinkron.
Dibuat dengan Node.js, tool ini bersifat language-agnostic, artinya bisa digunakan untuk project Laravel (PHP), Next.js (Node), Django (Python), Go, dan lain-lain.
✨ Fitur Utama
- Multi-Database Support: MySQL, PostgreSQL, SQLite, dan MongoDB.
- Asset Archiving: Membungkus folder (seperti
uploadsataupublic/storage) ke dalam satu file. - Sync Aware: Menyimpan database dump dan assets dalam satu paket arsip (.zip atau .tar.gz).
- Environment Integration: Secara otomatis membaca kredensial dari file
.env. - Built-in Scheduler: Dilengkapi dengan daemon mode menggunakan cron syntax.
- Auto Pruning: Menghapus backup lama secara otomatis agar penyimpanan tidak penuh.
- Restore Support: Kemudahan untuk mengembalikan database dari file backup.
🚀 Instalasi
Prerequisites
Pastikan Anda memiliki database client terinstal di sistem Anda:
mysql-clientuntuk MySQL/MariaDB.postgresql-clientuntuk PostgreSQL.mongodb-database-toolsuntuk MongoDB.
Cara Install
# Clone repository ini
git clone https://github.com/username/miomi-backup.git
cd miomi-backup
# Install dependencies dan link ke sistem
npm install
npm link📖 Cara Penggunaan
1. Inisialisasi Project
Jalankan perintah ini di folder project Anda untuk membuat file backup-config.json:
miomi-backup init2. Jalankan Backup Manual
miomi-backup runOpsi tambahan:
--db-only: Hanya backup database.--assets-only: Hanya backup assets.--format tar.gz: Gunakan format tar.gz (default: zip).--dry-run: Cek apa saja yang akan dibackup tanpa membuat file.
3. Jalankan Scheduler (Daemon)
Biarkan tool ini berjalan di background (disarankan menggunakan PM2):
miomi-backup schedule --cron "0 2 * * *"4. Lihat Daftar Backup
miomi-backup list5. Restore Database
miomi-backup restore --file ./backups/nama_file.zip🛠️ Konfigurasi (backup-config.json)
Contoh isi file konfigurasi:
{
"projectName": "my-awesome-app",
"envFile": ".env",
"database": {
"type": "mysql",
"host": "${DB_HOST}",
"name": "${DB_DATABASE}",
"user": "${DB_USERNAME}",
"password": "${DB_PASSWORD}"
},
"assets": {
"paths": ["./storage/app/public", "./public/uploads"],
"exclude": ["*.log", "tmp/**"]
},
"output": {
"directory": "./backups",
"maxBackups": 10
}
}📄 Lisensi
MIT License. Dibuat dengan ❤️ oleh Omi.
