Tujuan Pembelajaran
Setelah menyelesaikan praktikum ini, mahasiswa mampu:
- Memahami konsep dan strategi backup data yang efektif
- Menggunakan tools backup seperti tar, rsync, dan dd
- Melakukan backup dan restore data dengan berbagai metode
- Mengimplementasikan jadwal backup otomatis menggunakan cron
Teori Pendukung
Jenis-Jenis Backup
Menyalin semua data yang ditentukan
Keuntungan
Restore cepat dan sederhana
Kerugian
Waktu lama, storage besar
Hanya menyalin data yang berubah sejak backup terakhir
Keuntungan
Cepat, storage kecil
Kerugian
Restore kompleks
Menyalin data yang berubah sejak full backup terakhir
Keuntungan
Restore lebih sederhana
Kerugian
Storage lebih besar
Tools Backup Populer
| Tool |
Fungsi |
Keunggulan |
Penggunaan |
| tar |
Mengarsipkan file dan direktori |
Standard, kompresi baik |
Full backup, archiving |
| rsync |
Sinkronisasi file dan backup incremental |
Efisien, hanya perubahan |
Incremental backup, sync |
| dd |
Backup pada level block device |
Bit-by-bit copy |
Disk cloning, MBR backup |
| dump/restore |
Filesystem backup |
Filesystem aware |
Ext filesystem backup |
Strategi Backup 3-2-1
3 Salinan Data
Original + 2 backup copies
2 Media Berbeda
HDD, Tape, Cloud, etc.
1 Salinan Off-site
Lokasi fisik berbeda
Tools dan Perintah Backup
1. tar (Tape Archive)
tar [options] archive_name files/directories
-c
-x
-v
-f
-z
-j
-J
tar -czvf backup.tar.gz /home /etc
tar -xzvf backup.tar.gz
2. rsync (Remote Sync)
rsync [options] source destination
-a
-v
-z
--delete
--progress
--link-dest
rsync -avz /data/ backup-server:/backups/
rsync -av --link-dest=/backup/previous /data/ /backup/new/
3. dd (Disk Duplicate)
PERHATIAN: dd sangat powerful dan bisa menghapus data jika digunakan salah!
dd if=input_file of=output_file [options]
bs=bytes
count=blocks
status=progress
dd if=/dev/sda of=/backup/disk.img bs=4M status=progress
dd if=/dev/sda of=/dev/sdb bs=4M status=progress
4. Compression Tools
gzip filename
gunzip filename.gz
bzip2 filename
bunzip2 filename.bz2
xz filename
unxz filename.xz
Langkah-langkah Praktikum
A. Persiapan Environment
sudo -i
mkdir -p /data/{website,db,config}
echo "Website content" > /data/website/index.html
echo "Database dump" > /data/db/database.sql
echo "Config files" > /data/config/app.conf
mkdir -p /backup/{full,incremental,disk}
B. Menggunakan tar untuk Full Backup
tar -czvf /backup/full/data_backup_$(date +%Y%m%d).tar.gz /data/
tar -tzf /backup/full/data_backup_$(date +%Y%m%d).tar.gz
rm -rf /data/website/
tar -xzvf /backup/full/data_backup_$(date +%Y%m%d).tar.gz -C /
ls -la /data/website/
C. Menggunakan rsync untuk Incremental Backup
rsync -av --delete /data/ /backup/incremental/backup_current/
echo "New content" > /data/website/newpage.html
echo "Additional config" >> /data/config/app.conf
rsync -av --delete --link-dest=/backup/incremental/backup_current/ \
/data/ /backup/incremental/backup_$(date +%Y%m%d_%H%M)/
ls -la /backup/incremental/backup_current/website/
ls -la /backup/incremental/backup_$(date +%Y%m%d_%H%M)/website/
du -sh /backup/incremental/*
D. Menggunakan dd untuk Disk Backup
HATI-HATI: Pastikan device yang benar untuk menghindari kehilangan data!
dd if=/dev/sda of=/backup/disk/mbr_backup.img bs=512 count=1
fdisk -l /dev/sda > /backup/disk/partition_table.txt
dd if=/dev/zero of=/test_disk.img bs=1M count=10
mkfs.ext4 /test_disk.img
mkdir /mnt/test
mount /test_disk.img /mnt/test
echo "Test data" > /mnt/test/file.txt
umount /mnt/test
dd if=/test_disk.img of=/backup/disk/disk_backup.img status=progress
E. Backup Otomatis dengan Cron
cat > /usr/local/bin/auto_backup.sh << 'EOF'
#!/bin/bash
# Script backup otomatis
BACKUP_DIR="/backup/auto"
DATE=$(date +%Y%m%d_%H%M%S)
LOG_FILE="/var/log/backup.log"
echo "[$DATE] Starting backup..." >> $LOG_FILE
# Backup dengan tar
tar -czf $BACKUP_DIR/full_backup_$DATE.tar.gz /data/ 2>/dev/null
if [ $? -eq 0 ]; then
echo "[$DATE] Backup completed successfully" >> $LOG_FILE
# Hapus backup lama (lebih dari 7 hari)
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete
else
echo "[$DATE] Backup failed!" >> $LOG_FILE
fi
EOF
chmod +x /usr/local/bin/auto_backup.sh
crontab -l > /tmp/mycron
echo "0 2 * * * /usr/local/bin/auto_backup.sh" >> /tmp/mycron
crontab /tmp/mycron
crontab -l
F. Verifikasi dan Testing Recovery
tar -tzf /backup/full/data_backup_*.tar.gz > /dev/null && echo "Tar backup OK"
diff -r /data/ /backup/incremental/backup_current/ && echo "Rsync backup OK"
rm -rf /data/*
tar -xzvf /backup/full/data_backup_*.tar.gz -C /
ls -la /data/
Strategi Backup Lanjutan
1. Backup Script untuk Server Web
cat > /usr/local/bin/web_backup.sh << 'EOF'
#!/bin/bash
# Backup script untuk web server
BACKUP_DIR="/backup/web"
DATE=$(date +%Y%m%d)
RETENTION_DAYS=30
# Buat direktori backup jika belum ada
mkdir -p $BACKUP_DIR
# Backup database MySQL
mysqldump -u root -p'password' web_db > $BACKUP_DIR/web_db_$DATE.sql
# Backup website files
tar -czf $BACKUP_DIR/web_files_$DATE.tar.gz /var/www/html/
# Backup configuration
tar -czf $BACKUP_DIR/config_$DATE.tar.gz /etc/apache2/ /etc/mysql/
# Cleanup old backups
find $BACKUP_DIR -name "*.sql" -mtime +$RETENTION_DAYS -delete
find $BACKUP_DIR -name "*.tar.gz" -mtime +$RETENTION_DAYS -delete
EOF
chmod +x /usr/local/bin/web_backup.sh
2. Encrypted Backup dengan GPG
tar -cz /data/ | gpg --encrypt --recipient admin@company.com > backup_$(date +%Y%m%d).tar.gz.gpg
gpg --decrypt backup.tar.gz.gpg | tar -xz
3. Remote Backup dengan SSH
tar -cz /data/ | ssh user@backup-server "cat > /backup/backup_$(date +%Y%m%d).tar.gz"
rsync -avz -e ssh /data/ user@backup-server:/backup/
4. Backup Monitoring dan Alerting
cat > /usr/local/bin/backup_monitor.sh << 'EOF'
#!/bin/bash
# Backup monitoring script
BACKUP_DIR="/backup"
ALERT_EMAIL="admin@company.com"
# Cek apakah backup terbaru ada
LATEST_BACKUP=$(find $BACKUP_DIR -name "*.tar.gz" -type f -mtime -1)
if [ -z "$LATEST_BACKUP" ]; then
echo "ALERT: No backup found in last 24 hours" | mail -s "Backup Failure" $ALERT_EMAIL
fi
# Cek ukuran backup
BACKUP_SIZE=$(du -sh $BACKUP_DIR | cut -f1)
echo "Backup size: $BACKUP_SIZE"
EOF
Tugas dan Evaluasi
- Jelaskan perbedaan antara backup incremental dan differential!
- Kapan sebaiknya menggunakan tar dan kapan menggunakan rsync?
- Apa kelebihan dan kekurangan backup level block device (dd)?
- Bagaimana cara memverifikasi bahwa backup yang dibuat dapat direstore dengan benar?
- Buat skenario: Perusahaan membutuhkan backup harian data penting dengan retention 30 hari. Tulis script lengkapnya!
Backup Best Practices
- Test restore procedure secara berkala
- Implementasi retention policy
- Monitor backup success/failure
- Enkripsi backup yang sensitif
- Simpan backup di media berbeda
- Dokumentasi prosedur backup/restore
- Jangan simpan backup di server yang sama
- Jangan gunakan media backup yang sama terus
- Jangan lupa test restore procedure
- Jangan backup file yang tidak perlu
- Jangan gunakan compression lossy untuk database
- Jangan abaikan backup logs
Retention Policy Example
| Backup Type |
Frequency |
Retention |
Storage |
| Full Backup |
Weekly |
4 weeks |
Local + Cloud |
| Incremental Backup |
Daily |
7 days |
Local |
| Monthly Archive |
Monthly |
1 year |
Cloud + Offline |
| Yearly Archive |
Yearly |
7 years |
Offline Storage |
Troubleshooting Backup Issues
| Masalah |
Penyebab |
Solusi |
| Backup gagal - disk full |
Storage tidak cukup |
df -h untuk cek space
Hapus backup lama
Tambah storage
|
| Permission denied |
User tidak punya akses |
sudo atau
User yang benar
Set permission yang tepat
|
| Backup corrupt |
Media rusak, transfer error |
Verifikasi checksum
Gunakan media berbeda
Test restore berkala
|
| Restore tidak bekerja |
Backup incomplete/wrong format |
Test backup setelah dibuat
Dokumentasi format backup
Simpan tools restore
|
Verification Commands
tar -tf backup.tar.gz > /dev/null && echo "OK" || echo "CORRUPT"
md5sum backup.tar.gz
sha256sum backup.tar.gz
df -h /backup
du -sh /backup/*