ABDURROZAK.MY.ID // DEBIAN LINUX SERVER FUNDAMENTAL
BACKUP &RECOVERY
Volume 16 dari seri Debian Linux Server Fundamental. Panduan komprehensif backup dan recovery server. Setiap command dan script dijelaskan detail dengan penjelasan per baris. Dari konsep backup, backup file dengan tar dan rsync, backup database, automated backup, cron job, hingga recovery dasar.
VOLUME16 / 17
SUB-BAB8
BACA90 MENIT
BACKUP100%
ABDUR ROZAK, S.Kom.
Web Developer & Network Educator - abdurrozak.my.id
VOLUME 16 / 17
BACKUP DAN RECOVERY SERVER
Panduan lengkap Backup & Recovery di Debian Linux. 8 sub-bab mencakup konsep backup, backup file dengan tar, backup file dengan rsync, backup database, automated backup, cron job, recovery dasar, hingga best practices. Setiap command dan script disertai penjelasan detail per baris.
SUB-BAB8LEVELBackup & RecoveryWAKTU90 MENIT
01
SUB-BAB 01 KONSEP
KONSEP BACKUP
Apa Itu Backup?
Backup adalah proses membuat salinan data untuk tujuan pemulihan jika terjadi kehilangan data. Backup adalah komponen kritis dari strategi disaster recovery dan business continuity.
Jenis Backup
JENIS
DESKRIPSI
KELEBIHAN
KEKURANGAN
Full Backup
Backup semua data
Restorasi cepat
Butuh ruang besar, waktu lama
Incremental
Backup perubahan sejak backup terakhir
Cepat, hemat ruang
Restorasi lambat
Differential
Backup perubahan sejak full backup
Restorasi lebih cepat
Butuh lebih banyak ruang
Mirror
Salinan identik
Recovery cepat
Butuh ruang sama
Strategi Backup 3-2-1
3 SALINAN
Minimal 3 salinan data (1 primary + 2 backup)
2 MEDIA
Simpan di 2 media berbeda (disk, tape, cloud)
1 OFFSITE
1 salinan di lokasi berbeda (offsite/cloud)
Frekuensi Backup
DATA
FREKUENSI
RETENSI
Data Kritis
Real-time / hourly
30-90 hari
Data Penting
Daily
30-90 hari
Data Biasa
Weekly
4-12 minggu
Data Arsip
Monthly/Yearly
1-7 tahun
KOMPETENSI SUB-BAB 01
Memahami konsep backup
Memahami jenis backup (full, incremental, differential)
Memahami strategi backup 3-2-1
Menentukan frekuensi backup yang tepat
02
SUB-BAB 02 TAR
BACKUP FILE DENGAN TAR
Apa Itu tar?
tar (Tape Archive) adalah utility untuk membuat archive file. tar menggabungkan multiple file menjadi satu file archive, dan bisa dikompresi dengan gzip, bzip2, atau xz.
Perintah tar Dasar
TAR DASAR
# Buat archive tanpa kompresitar -cvf archive.tar /path/to/directory# -c = create# -v = verbose (tampilkan proses)# -f = file (nama file archive)# Buat archive dengan gzip compressiontar -czvf archive.tar.gz /path/to/directory# -z = gzip compression# Buat archive dengan bzip2 compressiontar -cjvf archive.tar.bz2 /path/to/directory# -j = bzip2 compression# Buat archive dengan xz compressiontar -cJvf archive.tar.xz /path/to/directory# -J = xz compression# Extract archivetar -xvf archive.tar# -x = extract# Extract archive dengan gziptar -xzvf archive.tar.gz# Extract archive dengan bzip2tar -xjvf archive.tar.bz2# Extract archive dengan xztar -xJvf archive.tar.xz# List isi archivetar -tvf archive.tar# -t = list# Extract ke directory tertentutar -xzvf archive.tar.gz -C /path/to/destination# -C = change to directory
Perintah tar Lanjutan
TAR LANJUTAN
# Backup multiple directoriestar -czvf backup.tar.gz /etc /home /var/www# Exclude directory atau filetar -czvf backup.tar.gz /home --exclude=/home/user/downloads# Exclude dengan patterntar -czvf backup.tar.gz /home --exclude="*.tmp" --exclude="*.log"# Backup dengan date stamptar -czvf backup-$(date +%Y%m%d).tar.gz /home# Backup dengan incrementaltar -czvf backup-full.tar.gz --listed-incremental=backup.snar /hometar -czvf backup-incr-$(date +%Y%m%d).tar.gz --listed-incremental=backup.snar /home# Backup dengan compression leveltar -cvf - /home | gzip -9 > backup.tar.gz# -9 = maximum compression# Backup ke remote servertar -czvf - /home | ssh user@remote "cat > /backup/backup.tar.gz"# Extract dari remote serverssh user@remote "cat /backup/backup.tar.gz" | tar -xzvf -# Backup dengan split (untuk file besar)tar -czvf - /home | split -b 100M - backup.tar.gz.# Split menjadi file 100MB# Extract split filescat backup.tar.gz.* | tar -xzvf -
KOMPETENSI SUB-BAB 02
Mampu buat archive dengan tar
Mampu extract archive
Mampu gunakan compression (gzip, bzip2, xz)
Mampu exclude files/directories
Mampu backup ke remote server
03
SUB-BAB 03 RSYNC
BACKUP FILE DENGAN RSYNC
Apa Itu rsync?
rsync adalah utility untuk sinkronisasi file dan directory. rsync hanya mentransfer file yang berubah, sehingga lebih efisien untuk backup incremental.
Perintah rsync Dasar
RSYNC DASAR
# Sync directory lokal ke lokalrsync -av /source/ /destination/# -a = archive mode (preserve permissions, timestamps, dll)# -v = verbose# Sync dengan progressrsync -av --progress /source/ /destination/# Sync dengan delete (mirror)rsync -av --delete /source/ /destination/# Sync ke remote serverrsync -av /source/ user@remote:/destination/# Sync dari remote serverrsync -av user@remote:/source/ /destination/# Sync dengan excludersync -av --exclude="*.tmp" --exclude="*.log" /source/ /destination/# Sync dengan exclude filersync -av --exclude-from=exclude.txt /source/ /destination/# Dry run (test tanpa sync)rsync -avn /source/ /destination/# Sync dengan compressionrsync -avz /source/ user@remote:/destination/# -z = compress during transfer# Sync dengan delete dan progressrsync -av --delete --progress /source/ /destination/# Sync dengan bandwidth limitrsync -av --bwlimit=1000 /source/ /destination/# --bwlimit = limit bandwidth dalam KB/s
Perintah rsync Lanjutan
RSYNC LANJUTAN
# Sync dengan log filersync -av --log-file=rsync.log /source/ /destination/# Sync dengan checksumrsync -av --checksum /source/ /destination/# --checksum = use checksum instead of size/mtime# Sync dengan size onlyrsync -av --size-only /source/ /destination/# Sync dengan partial (untuk resume)rsync -av --partial /source/ /destination/# Sync dengan partial dirrsync -av --partial-dir=.rsync-partial /source/ /destination/# Sync dengan hard linksrsync -av --hard-links /source/ /destination/# Sync dengan one-file-systemrsync -av --one-file-system /source/ /destination/# Sync dengan backuprsync -av --backup --backup-dir=backup /source/ /destination/# Sync dengan delete afterrsync -av --delete-after /source/ /destination/# Sync dengan delete beforersync -av --delete-before /source/ /destination/# Sync dengan delete delayrsync -av --delete-delay /source/ /destination/# Sync dengan recursive dan timesrsync -av --times /source/ /destination/# Sync dengan recursive dan permsrsync -av --perms /source/ /destination/# Sync dengan recursive and ownerrsync -av --owner /source/ /destination/# Sync dengan recursive and grouprsync -av --group /source/ /destination/
KOMPETENSI SUB-BAB 03
Mampu sync file dengan rsync
Mampu sync ke/dari remote server
Mampu gunakan exclude files
Mampu gunakan advanced options
04
SUB-BAB 04 DATABASE
BACKUP DATABASE
Backup MySQL/MariaDB
MYSQL/MARIADB
# Backup single databasemysqldump -u root -p database_name > backup.sql# Backup single database dengan compressionmysqldump -u root -p database_name | gzip > backup.sql.gz# Backup multiple databasesmysqldump -u root -p --databases db1 db2 db3 > backup.sql# Backup all databasesmysqldump -u root -p --all-databases > backup.sql# Backup all databases dengan compressionmysqldump -u root -p --all-databases | gzip > backup.sql.gz# Backup dengan date stampmysqldump -u root -p database_name > backup-$(date +%Y%m%d).sql# Backup dengan single transaction (InnoDB)mysqldump -u root -p --single-transaction database_name > backup.sql# Backup dengan lock tables (MyISAM)mysqldump -u root -p --lock-tables database_name > backup.sql# Backup dengan flush logsmysqldump -u root -p --flush-logs database_name > backup.sql# Backup dengan master data (untuk replication)mysqldump -u root -p --master-data database_name > backup.sql# Backup dengan eventsmysqldump -u root -p --events database_name > backup.sql# Backup dengan routinesmysqldump -u root -p --routines database_name > backup.sql# Backup dengan triggersmysqldump -u root -p --triggers database_name > backup.sql# Backup dengan no data (schema only)mysqldump -u root -p --no-data database_name > backup.sql# Backup dengan no create infomysqldump -u root -p --no-create-info database_name > backup.sql# Backup dengan no create dbmysqldump -u root -p --no-create-db database_name > backup.sql# Backup dengan ignore tablesmysqldump -u root -p --ignore-table=db.table1 --ignore-table=db.table2 database_name > backup.sql# Backup ke remote servermysqldump -u root -p -h remote_host database_name > backup.sql# Backup dengan compression dan remotemysqldump -u root -p database_name | gzip | ssh user@remote "cat > backup.sql.gz"
Backup PostgreSQL
POSTGRESQL
# Backup single databasepg_dump -U postgres database_name > backup.sql# Backup single database dengan compressionpg_dump -U postgres -Fc database_name > backup.dump# -Fc = custom format (compressed)# Backup single database dengan plain formatpg_dump -U postgres -Fp database_name > backup.sql# -Fp = plain text format# Backup multiple databasespg_dump -U postgres -d "db1 db2 db3" > backup.sql# Backup all databasespg_dumpall -U postgres > backup.sql# Backup all databases dengan compressionpg_dumpall -U postgres | gzip > backup.sql.gz# Backup dengan date stamppg_dump -U postgres database_name > backup-$(date +%Y%m%d).sql# Backup dengan schema onlypg_dump -U postgres --schema-only database_name > backup.sql# Backup dengan data onlypg_dump -U postgres --data-only database_name > backup.sql# Backup dengan clean (drop before create)pg_dump -U postgres --clean database_name > backup.sql# Backup dengan create (create database)pg_dump -U postgres --create database_name > backup.sql# Backup dengan no ownerpg_dump -U postgres --no-owner database_name > backup.sql# Backup dengan no privilegespg_dump -U postgres --no-privileges database_name > backup.sql# Backup ke remote serverpg_dump -U postgres -h remote_host database_name > backup.sql# Backup dengan compression dan remotepg_dump -U postgres database_name | gzip | ssh user@remote "cat > backup.sql.gz"
Cron adalah job scheduler di Unix/Linux. Cron memungkinkan Anda menjadwalkan command atau script untuk dijalankan secara otomatis pada waktu tertentu.
Format Cron
CRON FORMAT
# Format cron# * * * * * command# │ │ │ │ │# │ │ │ │ └─── day of week (0-7, 0 and 7 are Sunday)# │ │ │ └───── month (1-12)# │ │ └─────── day of month (1-31)# │ └───────── hour (0-23)# └─────────── minute (0-59)# Contoh:# Menit 0, jam 2, setiap hari0 2 * * * /path/to/script.sh# Setiap 5 menit*/5 * * * * /path/to/script.sh# Setiap jam0 * * * * /path/to/script.sh# Setiap hari jam 2 pagi0 2 * * * /path/to/script.sh# Setiap minggu (Minggu jam 2 pagi)0 2 * * 0 /path/to/script.sh# Setiap bulan (tanggal 1 jam 2 pagi)0 2 1 * * /path/to/script.sh# Setiap hari kerja (Senin-Jumat jam 2 pagi)0 2 * * 1-5 /path/to/script.sh# Setiap 15 menit*/15 * * * * /path/to/script.sh# Setiap jam pada menit ke-3030 * * * * /path/to/script.sh# Setiap hari pada jam 2 dan 140 2,14 * * * /path/to/script.sh# Setiap 5 menit pada jam 9-17*/5 9-17 * * * /path/to/script.sh
Manajemen Cron
CRON MANAGEMENT
# Edit crontab untuk usercrontab -e# Edit crontab untuk user tertentucrontab -e -u username# List crontabcrontab -l# List crontab untuk user tertentucrontab -l -u username# Remove crontabcrontab -r# Remove crontab untuk user tertentucrontab -r -u username# Edit crontab dari filecrontab filename# Contoh crontab untuk backup# Backup database setiap hari jam 2 pagi0 2 * * * /usr/local/bin/backup-db.sh# Backup file setiap minggu jam 3 pagi0 3 * * 0 /usr/local/bin/backup-files.sh# Cleanup setiap hari jam 4 pagi0 4 * * * /usr/local/bin/cleanup.sh
KOMPETENSI SUB-BAB 06
Memahami format cron
Mampu edit crontab
Mampu schedule backup otomatis
Mampu manage crontab
07
SUB-BAB 07 RECOVERY
RECOVERY DASAR
Recovery File
RECOVERY FILE
# Extract tar.gztar -xzvf backup.tar.gz -C /destination# Extract tar.bz2tar -xjvf backup.tar.bz2 -C /destination# Extract tar.xztar -xJvf backup.tar.xz -C /destination# Extract specific filetar -xzvf backup.tar.gz path/to/file -C /destination# Extract dengan overwritetar -xzvf backup.tar.gz -C /destination --overwrite# Extract dengan keep new filestar -xzvf backup.tar.gz -C /destination --keep-newer-files# Extract dengan keep old filestar -xzvf backup.tar.gz -C /destination --keep-old-files# Extract split filescat backup.tar.gz.* | tar -xzvf - -C /destination# Extract dari remotessh user@remote "cat /backup/backup.tar.gz" | tar -xzvf - -C /destination
Kamu telah menyelesaikan Volume 16 - Backup & Recovery. Dari konsep backup, backup file dengan tar dan rsync, backup database, automated backup, cron job, recovery dasar, hingga best practices. Kamu sekarang menguasai Backup & Recovery di Debian Linux. Di Volume 17, kita akan dalami Advanced Topics. Sampai jumpa!