Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

Artikel ini merupakan lanjutan dari Install dan Konfigurasi Samba di Debian 12 untuk Client Windows. Setelah Samba berjalan dengan baik, langkah selanjutnya yang sering diabaikan adalah membuat backup konfigurasi — mencakup file smb.conf, database user, dan password SMB.
Backup ini berguna dalam tiga skenario: pemulihan saat server bermasalah, migrasi konfigurasi ke server baru, dan cadangan sebelum melakukan perubahan besar pada konfigurasi. Proses dilakukan menggunakan sebuah shell script yang menghasilkan arsip .tar.gz berisi semua file penting beserta metadata restore.
/mnt/nfs-data/sharednamauser sudah dibuatroot| Item | Nilai Contoh |
|---|---|
| Folder backup | /mnt/nfs-data/shared/backup-admin |
| User pemilik backup | namauser |
| Format nama file | samba-config-YYYY-MM-DD_HHMMSS.tar.gz |
| Lokasi log backup | /var/log/samba-backup.log |
Folder backup diletakkan di dalam folder share agar dapat diakses langsung dari Windows:
mkdir -p /mnt/nfs-data/shared/backup-admin
chown namauser:namauser /mnt/nfs-data/shared/backup-admin
chmod 2770 /mnt/nfs-data/shared/backup-admin
Verifikasi:
ls -ld /mnt/nfs-data/shared/backup-admin
Catatan keamanan: File backup berisi database password Samba. Setelah backup selesai, segera pindahkan ke tempat aman dan hapus dari folder share.
nano /usr/local/bin/backup-samba.sh
Paste seluruh isi berikut:
#!/bin/bash
set -euo pipefail
umask 077
BACKUP_DIR="/mnt/nfs-data/shared/backup-admin"
DATE="$(date +%Y-%m-%d_%H%M%S)"
TMP_BACKUP="/tmp/samba-config-${DATE}.tar.gz"
FINAL_BACKUP="${BACKUP_DIR}/samba-config-${DATE}.tar.gz"
LOG_FILE="/var/log/samba-backup.log"
STAGING="$(mktemp -d /tmp/backup-samba.XXXXXX)"
mkdir -p "$BACKUP_DIR"
trap 'rm -rf "$STAGING" "$TMP_BACKUP"' EXIT
echo "=== Samba backup started: $(date) ===" >> "$LOG_FILE"
FILES=(
/etc/samba/smb.conf
/var/lib/samba/private/passdb.tdb
/var/lib/samba/private/secrets.tdb
/var/lib/samba/account_policy.tdb
)
for f in "${FILES[@]}"; do
if [ -e "$f" ]; then
mkdir -p "$STAGING$(dirname "$f")"
cp -a "$f" "$STAGING$f"
echo "Included: $f" >> "$LOG_FILE"
else
echo "Missing : $f" >> "$LOG_FILE"
fi
done
mkdir -p "$STAGING/backup-meta"
date > "$STAGING/backup-meta/backup-created.txt"
hostname > "$STAGING/backup-meta/hostname.txt"
id namauser > "$STAGING/backup-meta/id-namauser.txt" 2>/dev/null || true
getent passwd namauser > "$STAGING/backup-meta/passwd-namauser.txt" 2>/dev/null || true
getent group namauser > "$STAGING/backup-meta/group-namauser.txt" 2>/dev/null || true
testparm -s > "$STAGING/backup-meta/testparm.txt" 2>/dev/null || true
systemctl is-enabled smbd > "$STAGING/backup-meta/systemd-enabled.txt" 2>/dev/null || true
cat > "$STAGING/backup-meta/README-RESTORE-SAMBA.txt" <<'EOT'
RESTORE SAMBA - GARIS BESAR
1. Siapkan Debian 12.
2. Install Samba:
apt update && apt install samba -y
3. Buat user Linux yang dipakai SMB:
useradd -M -s /usr/sbin/nologin namauser
4. Pastikan folder share ada:
mkdir -p /mnt/nfs-data/shared
chown -R namauser:namauser /mnt/nfs-data/shared
chmod 2770 /mnt/nfs-data/shared
5. Copy file backup ini ke server.
6. Extract backup ke root:
tar xzf samba-config-YYYY-MM-DD_HHMMSS.tar.gz -C /
7. Jalankan:
systemctl daemon-reload
systemctl restart smbd
systemctl enable smbd
8. Tes akses dari Windows:
\\IP-SERVER\Shared
CATATAN:
- Backup ini berisi database password Samba.
- User SMB "namauser" akan langsung bisa dipakai tanpa perlu buat ulang password.
- Simpan file backup di tempat aman.
EOT
tar czf "$TMP_BACKUP" -C "$STAGING" .
mv "$TMP_BACKUP" "$FINAL_BACKUP"
chown namauser:namauser "$FINAL_BACKUP"
chmod 0640 "$FINAL_BACKUP"
echo "Backup saved: $FINAL_BACKUP" >> "$LOG_FILE"
echo "=== Samba backup ended: $(date) ===" >> "$LOG_FILE"
echo "" >> "$LOG_FILE"
echo "$FINAL_BACKUP"
Catatan: Jika menggunakan Proxmox web console, paste teks panjang kadang dapat memotong baris. Verifikasi isi script di langkah berikutnya sebelum dijalankan.
chmod +x /usr/local/bin/backup-samba.sh
nl -ba /usr/local/bin/backup-samba.sh | head -n 30
Pastikan baris pertama adalah #!/bin/bash dan terdapat baris yang mengandung cp -a "$f" "$STAGING$f". Jika ada karakter aneh atau baris terpotong, edit ulang dengan nano.
/usr/local/bin/backup-samba.sh
Output akan menampilkan path file backup yang dihasilkan:
/mnt/nfs-data/shared/backup-admin/samba-config-2026-06-09_221824.tar.gz
Cek file backup:
ls -lh /mnt/nfs-data/shared/backup-admin
Cek log:
tail -n 20 /var/log/samba-backup.log
Cek isi arsip:
tar tzf "$(ls -t /mnt/nfs-data/shared/backup-admin/samba-config-*.tar.gz | head -n 1)" | head -n 30
Arsip yang valid akan memuat setidaknya:
etc/samba/smb.conf
var/lib/samba/private/passdb.tdb
var/lib/samba/private/secrets.tdb
var/lib/samba/account_policy.tdb
backup-meta/
File backup berisi data sensitif. Disarankan untuk mengenkripsinya sebelum disimpan atau dipindahkan.
Install zip jika belum tersedia:
apt install zip -y
Masuk ke folder backup:
cd /mnt/nfs-data/shared/backup-admin
Buat arsip zip terenkripsi (ganti NAMA_FILE dengan nama file backup yang baru dibuat):
zip -j -e NAMA_FILE.zip NAMA_FILE.tar.gz
Contoh:
zip -j -e samba-config-2026-06-09_221824.zip samba-config-2026-06-09_221824.tar.gz
Penjelasan flag:
| Flag | Keterangan |
|---|---|
-j | Simpan file tanpa menyertakan path direktori |
-e | Aktifkan enkripsi dengan password |
Verifikasi arsip zip:
unzip -l NAMA_FILE.zip
\\192.168.1.60\Shared\backup-admin.zip ke lokasi aman (external HDD, cloud storage pribadi, atau perangkat lain)cd /mnt/nfs-data/shared/backup-admin
rm -f samba-config-*.tar.gz
rm -f samba-config-*.zip
rootapt update && apt install samba -yuseradd -M -s /usr/sbin/nologin namausermkdir -p /mnt/nfs-data/shared
chown -R namauser:namauser /mnt/nfs-data/shared
chmod 2770 /mnt/nfs-data/sharedunzip samba-config-YYYY-MM-DD_HHMMSS.ziptar xzf samba-config-YYYY-MM-DD_HHMMSS.tar.gz -C /systemctl daemon-reload
systemctl restart smbd
systemctl enable smbd\\IP-SERVER\SharedCatatan: User SMB
namauserbeserta passwordnya akan langsung dapat digunakan tanpa perlu dikonfigurasi ulang, karena database password ikut di-restore dari backup.
Untuk menjalankan backup secara otomatis setiap minggu, buat systemd service dan timer:
nano /etc/systemd/system/backup-samba.service
[Unit]
Description=Manual Backup Samba Configuration
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup-samba.sh
nano /etc/systemd/system/backup-samba.timer
[Unit]
Description=Weekly backup of Samba configuration
[Timer]
OnCalendar=weekly
Persistent=true
[Install]
WantedBy=timers.target
Aktifkan timer:
systemctl daemon-reload
systemctl enable --now backup-samba.timer
Catatan: Backup otomatis tidak disertai enkripsi password secara otomatis. Enkripsi perlu dilakukan secara manual terhadap file yang dihasilkan.
| Gejala | Penyebab | Solusi |
|---|---|---|
cp: 'etc/samba': No such file or directory | Script korup akibat paste via web console | Edit ulang script dengan nano, pastikan loop menggunakan cp -a "$f" "$STAGING$f" |
| File backup ikut tersinkron ke Google Drive | Folder backup-admin berada di dalam folder share yang disinkronkan rclone | Tambahkan --exclude "backup-admin/**" pada script rclone, atau hapus file backup segera setelah dicopy |
Permission denied saat menjalankan script | Script belum executable | Jalankan chmod +x /usr/local/bin/backup-samba.sh |
| File backup tidak terlihat dari Windows | Cache Windows atau permission folder salah | Tekan F5 di File Explorer; cek owner dan mode folder dengan ls -ld /mnt/nfs-data/shared/backup-admin |
| Password zip ditolak di Windows Explorer | Windows Explorer kurang mendukung enkripsi zip | Gunakan 7-Zip untuk mengekstrak file .zip terenkripsi |
Termasuk dalam backup:
/etc/samba/smb.conf)passdb.tdb)secrets.tdb)account_policy.tdb)testparm, status systemdTidak termasuk dalam backup:
| File | Lokasi |
|---|---|
| Script backup | /usr/local/bin/backup-samba.sh |
| Log backup | /var/log/samba-backup.log |
| Folder backup sementara | /mnt/nfs-data/shared/backup-admin |
| Konfigurasi Samba | /etc/samba/smb.conf |
| Database password Samba | /var/lib/samba/private/passdb.tdb |
| Secret Samba | /var/lib/samba/private/secrets.tdb |
| Account policy | /var/lib/samba/account_policy.tdb |
# Setup folder backup
mkdir -p /mnt/nfs-data/shared/backup-admin
chown namauser:namauser /mnt/nfs-data/shared/backup-admin
chmod 2770 /mnt/nfs-data/shared/backup-admin
# Buat dan jadikan script executable
nano /usr/local/bin/backup-samba.sh
chmod +x /usr/local/bin/backup-samba.sh
# Verifikasi script
nl -ba /usr/local/bin/backup-samba.sh | head -n 30
# Jalankan backup
/usr/local/bin/backup-samba.sh
# Verifikasi hasil
ls -lh /mnt/nfs-data/shared/backup-admin
tail -n 20 /var/log/samba-backup.log
tar tzf "$(ls -t /mnt/nfs-data/shared/backup-admin/samba-config-*.tar.gz | head -n 1)" | head -n 30
# Enkripsi file backup
apt install zip -y
zip -j -e NAMA_FILE.zip NAMA_FILE.tar.gz
# Hapus file backup dari server setelah aman tersimpan
rm -f /mnt/nfs-data/shared/backup-admin/samba-config-*.tar.gz
rm -f /mnt/nfs-data/shared/backup-admin/samba-config-*.zip
Artikel ini disusun berdasarkan pengujian langsung pada lingkungan berikut:
Untuk keamanan, pastikan file backup selalu dienkripsi sebelum disimpan di lokasi manapun, termasuk di dalam folder share.