rdiff-backup - Alat Pencadangan Inkremental Jarak Jauh untuk Linux


rdiff-backup adalah skrip Python yang kuat dan mudah digunakan untuk pencadangan tambahan lokal/jarak jauh, yang berfungsi pada sistem operasi POSIX apa pun seperti Linux, Mac OS X, atau Cygwin. Ini menyatukan fitur luar biasa dari cermin dan cadangan tambahan.

Secara signifikan, ini mempertahankan subdirektori, file dev, hard link, dan atribut file penting seperti izin, kepemilikan uid/gid, waktu modifikasi, atribut yang diperluas, acls, dan fork sumber daya. Ini dapat bekerja dalam mode hemat bandwidth melalui pipa, dengan cara yang sama seperti alat cadangan rsync yang populer.

rdiff-backup mencadangkan satu direktori ke direktori lain melalui jaringan menggunakan SSH, yang menyiratkan bahwa transfer data dienkripsi sehingga aman. Direktori target (pada sistem jarak jauh) merupakan salinan persis dari direktori sumber, namun perbedaan terbalik tambahan disimpan dalam subdirektori khusus di direktori target, sehingga memungkinkan untuk memulihkan file yang hilang beberapa waktu lalu.

Ketergantungan

Untuk menggunakan rdiff-backup di Linux, Anda memerlukan paket berikut yang diinstal di sistem Anda:

  • Python v2.2 atau lebih baru
  • librsync v0.9.7 atau lebih baru
  • Modul Python pylibacl dan pyxattr bersifat opsional tetapi diperlukan untuk daftar kontrol akses POSIX (ACL) dan dukungan atribut yang diperluas.
  • rdiff-backup-statistics memerlukan Python v2.4 atau lebih baru.

Cara Install rdiff-backup di Linux

Penting: Jika Anda beroperasi melalui jaringan, Anda harus menginstal rdiff-backup kedua sistem, sebaiknya kedua instalasi rdiff-backup harus sama persis versi yang sama.

Script sudah ada di repositori resmi distribusi Linux mainstream, cukup jalankan perintah di bawah ini untuk menginstal rdiff-backup serta dependensinya:

Instal cadangan rdiff di Ubuntu

Untuk menginstal Rdiff-Backup di Ubuntu Focal atau Debian Bullseye atau yang lebih baru (memiliki versi 2.0).


sudo apt-get update
sudo apt-get install librsync-dev rdiff-backup

Untuk menginstal Rdiff-Backup pada backport Ubuntu untuk versi yang lebih lama (membutuhkan backport 2.0).


sudo add-apt-repository ppa:rdiff-backup/rdiff-backup-backports
sudo apt update
sudo apt install rdiff-backu

Pada CentOS/RHEL 8

Untuk menginstal Rdiff-Backup di CentOS dan RHEL 8 (dari COPR).


sudo yum install yum-plugin-copr epel-release
sudo yum copr enable frankcrawford/rdiff-backup
sudo yum install rdiff-backup

Pada CentOS/RHEL 7

Untuk menginstal Rdiff-Backup di CentOS dan RHEL 7 (dari COPR).


sudo yum install yum-plugin-copr epel-release
sudo yum copr enable frankcrawford/rdiff-backup
sudo yum install rdiff-backup

Pada CentOS/RHEL 6


sudo yum install centos-release-scl
sudo yum install rh-python36 gcc libacl-devel
scl enable rh-python36 bash
sudo pip install rdiff-backup pyxattr pylibacl
echo 'exec scl enable rh-python36 -- rdiff-backup "$@"' | sudo tee /usr/bin/rdiff-backup
sudo chmod +x /usr/bin/rdiff-backup

Di Fedora

Untuk menginstal Rdiff-Backup di Fedora 32+.


sudo dnf install rdiff-backup

Cara Menggunakan cadangan rdiff di Linux

Seperti yang saya sebutkan sebelumnya, rdiff-backup menggunakan SSH untuk terhubung ke mesin jarak jauh di jaringan Anda, dan autentikasi default di SSH adalah metode nama pengguna/kata sandi, yang biasanya memerlukan interaksi manusia.

Namun, untuk mengotomatiskan tugas-tugas seperti pencadangan otomatis dengan skrip dan seterusnya, Anda perlu mengonfigurasi Login Tanpa Kata Sandi SSH Menggunakan kunci SSH, karena kunci SSH meningkatkan kepercayaan antara dua server Linux untuk memudahkan sinkronisasi atau transfer file.

Setelah Anda menyiapkan Login Tanpa Kata Sandi SSH, Anda dapat mulai menggunakan skrip dengan contoh berikut.

Cadangkan File ke Partisi Berbeda

Contoh di bawah ini akan mem-backup direktori /etc dalam direktori Backup di partisi lain:

sudo rdiff-backup /etc /media/aaronkilik/Data/Backup/mint_etc.backup

Untuk mengecualikan direktori tertentu serta subdirektorinya, Anda dapat menggunakan opsi --exclude sebagai berikut:

sudo rdiff-backup --exclude /etc/cockpit --exclude /etc/bluetooth /media/aaronkilik/Data/Backup/mint_etc.backup

Kita dapat menyertakan semua file perangkat, file fifo, file soket, dan tautan simbolik dengan opsi --include-special-files seperti di bawah ini:

sudo rdiff-backup --include-special-files --exclude /etc/cockpit /media/aaronkilik/Data/Backup/mint_etc.backup

Ada dua tanda penting lainnya yang dapat kita atur untuk pemilihan file; Ukuran --max-file-size yang mengecualikan file yang lebih besar dari ukuran yang diberikan dalam byte dan ukuran --min-file-size yang mengecualikan file yang lebih kecil dari ukuran yang diberikan dalam byte:

sudo rdiff-backup --max-file-size 5M --include-special-files --exclude /etc/cockpit /media/aaronkilik/Data/Backup/mint_etc.backup

Cadangkan File Jarak Jauh di Server Linux Lokal

Untuk tujuan bagian ini, kami akan menggunakan:

Remote Server (tecmint)	        : 192.168.56.102 
Local Backup Server (backup) 	: 192.168.56.10

Seperti yang kami nyatakan sebelumnya, Anda harus menginstal versi rdiff-backup yang sama di kedua mesin, sekarang coba periksa versi di kedua mesin sebagai berikut:

rdiff-backup -V

Di server cadangan, buat direktori yang akan menyimpan file cadangan seperti:

mkdir -p /backups

Sekarang dari server cadangan, jalankan perintah berikut untuk membuat cadangan direktori /var/log/ dan /root dari server Linux jarak jauh 192.168.56.102 di /backups:

rdiff-backup [email ::/var/log/ /backups/192.168.56.102_logs.backup
rdiff-backup [email ::/root/ /backups/192.168.56.102_rootfiles.backup

Tangkapan layar di bawah menunjukkan file root di server jauh 192.168.56.102 dan file cadangan di server belakang 192.168.56.10:

Perhatikan direktori rdiff-backup-data yang dibuat di direktori backup seperti yang terlihat pada tangkapan layar, direktori ini berisi data penting mengenai proses pencadangan dan file tambahan.

Sekarang, di server 192.168.56.102, file tambahan telah ditambahkan ke direktori root seperti yang ditunjukkan di bawah ini:

Mari kita jalankan perintah pencadangan sekali lagi untuk mendapatkan data yang diubah, kita dapat menggunakan opsi -v[0-9] (di mana angkanya menentukan tingkat verbositas, defaultnya adalah 3 yang diam) untuk atur fitur verbositas:

rdiff-backup -v4 [email ::/root/ /backups/192.168.56.102_rootfiles.backup 

Dan untuk mencantumkan nomor dan tanggal pencadangan tambahan parsial yang terdapat dalam direktori /backups/192.168.56.102_rootfiles.backup, kita dapat menjalankan:

rdiff-backup -l /backups/192.168.56.102_rootfiles.backup/

Mengotomatiskan Pencadangan rdiff-back Menggunakan Cron

Kita dapat mencetak ringkasan statistik setelah pencadangan berhasil dengan --print-statistics. Namun, jika kami tidak menyetel opsi ini, info akan tetap tersedia dari file statistik sesi. Baca lebih lanjut mengenai opsi ini di bagian STATISTIK pada halaman manual.

Dan flag –remote-schema memungkinkan kita menentukan metode alternatif untuk menyambung ke komputer jarak jauh.

Sekarang, mari kita mulai dengan membuat skrip backup.sh di server cadangan 192.168.56.10 sebagai berikut:

cd ~/bin
vi backup.sh

Tambahkan baris berikut ke file skrip.

#!/bin/bash

#This is a rdiff-backup utility backup script

#Backup command
rdiff-backup --print-statistics --remote-schema 'ssh -C %s "sudo /usr/bin/rdiff-backup --server --restrict-read-only  /"'  [email ::/var/logs  /backups/192.168.56.102_logs.back

#Checking rdiff-backup command success/error
status=$?
if [ $status != 0 ]; then
        #append error message in ~/backup.log file
        echo "rdiff-backup exit Code: $status - Command Unsuccessful" >>~/backup.log;
        exit 1;
fi

#Remove incremental backup files older than one month
rdiff-backup --force --remove-older-than 1M /backups/192.168.56.102_logs.back

Simpan file dan keluar, lalu jalankan perintah berikut untuk menambahkan skrip ke crontab di server cadangan 192.168.56.10:

crontab -e

Tambahkan baris ini untuk menjalankan skrip cadangan Anda setiap hari pada tengah malam:

0   0  *  *  * /root/bin/backup.sh > /dev/null 2>&1

Simpan crontab dan tutup, sekarang kita sudah berhasil mengotomatisasi proses backup. Pastikan itu berfungsi seperti yang diharapkan.

Baca halaman manual rdiff-backup untuk info tambahan, opsi penggunaan lengkap, dan contoh:

man rdiff-backup

Beranda rdiff-backup: http://www.nongnu.org/rdiff-backup/

Itu saja untuk saat ini! Dalam tutorial ini, kami menunjukkan kepada Anda cara menginstal dan pada dasarnya menggunakan rdiff-backup, skrip Python yang mudah digunakan untuk pencadangan tambahan lokal/jarak jauh di Linux. Bagikan pemikiran Anda kepada kami melalui bagian umpan balik di bawah.