GNU/Linux >> Belajar Linux >  >> Linux

Ketenangan Pikiran dengan Restic Backup di Linux

Pencadangan adalah salah satu hal terpenting di setiap industri, dan Anda mungkin mencari solusi pencadangan mana yang paling andal. Mengapa tidak mencoba backup Restic di Linux?

Restic adalah solusi pencadangan yang aman, cepat, dan andal. Dan dalam tutorial ini, Anda akan belajar mengatur sistem backup Restic di server Linux.

Baca terus dan jangan pernah kehilangan data Anda lagi!

Prasyarat

Tutorial ini akan menjadi demonstrasi langsung. Untuk mengikuti, pastikan Anda memiliki yang berikut:

  • Dua Server Linux – Tutorial ini menggunakan dua server Debian 11 bernama server1 dan server cadangan .
  • Pengguna non-root dengan hak istimewa sudo.

Menginstal Restic di Linux

Restic menyimpan data dalam repositori terenkripsi, dan setiap kali Anda menambahkan data ke repositori, Restic secara otomatis membuat snapshot baru. Namun sebelum memanfaatkan utilitas pencadangan Restic, Anda harus menginstal Restic terlebih dahulu di komputer Anda.

1. Buka terminal Anda dan masuk ke server1 mesin.

2. Selanjutnya, jalankan wget perintah di bawah ini untuk mengunduh file biner Restic. Pada tulisan ini, versi terbaru dari Restic adalah v0.12.1.

wget https://github.com/restic/restic/releases/download/v0.12.1/restic_0.12.1_linux_amd64.bz2

3. Jalankan perintah berikut untuk mengekstrak restic_0.12.1_linux_amd64.bz2 file, dan verifikasi restic_0.12.1_linux_amd64 file biner ada.

# Extract restic_0.12.1_linux_amd64.bz2
bzip2 -dv restic_0.12.1_linux_amd64.bz2
# List the files to verify restic_0.12.1_linux_amd64 exists
ls

4. Sekarang, jalankan chmod perintah untuk membuat restic_0.12.1_linux_amd64 file yang dapat dieksekusi, lalu ganti nama dan pindahkan file ke /usr/bin/restic direktori.

Pada titik ini, Anda sekarang dapat menjalankan perintah restic di server Anda.

# Make Restic file executable
chmod +x restic_0.12.1_linux_amd64

# Installing Restic
mv restic_0.12.1_linux_amd64 /usr/bin/restic

5. Jalankan restic perintah di bawah ini untuk menghasilkan penyelesaian bash untuk Restic. Melakukannya memudahkan pengguna untuk menjalankan restic memerintah.

restic generate --bash-completion /etc/bash_completion.d/restic

6. Terakhir, jalankan perintah di bawah ini untuk memuat ulang penyelesaian bash pada sesi terminal Anda saat ini, lalu jalankan restic perintah dan tekan TAB untuk menampilkan opsi yang tersedia untuk restic memerintah.

Terakhir, jalankan perintah berikut untuk memuat ulang penyelesaian bash pada sesi terminal Anda saat ini. Ketik restic, dan tekan tombol TAB untuk menampilkan opsi yang tersedia untuk perintah restic.

# reload bash completion
source /etc/profile.d/bash_completion.sh

# verify restic command
restic

Anda akan melihat semua opsi perintah restic yang tersedia, seperti yang ditunjukkan di bawah ini.

Menyiapkan Server Cadangan

Sekarang setelah Anda menginstal Restic di server1 mesin, langkah selanjutnya adalah menyiapkan backup-server , sehingga Anda dapat mulai mencadangkan data melalui protokol SFTP.

Secara default, Restic memungkinkan Anda untuk membuat cadangan data ke direktori lokal, server jauh, dan protokol SFTP. Restic juga memungkinkan Anda mencadangkan data ke layanan pencadangan cloud pihak ketiga seperti Amazon S3, Azure Blog Storage, Backblaze B2, dan Google Cloud Storage.

1. Buka terminal baru dan masuk ke backup-server mesin.

2. Selanjutnya, jalankan perintah di bawah ini untuk membuat pengguna baru bernama johndoe dan mengatur kata sandi.

# create new user
useradd -m -s /bin/bash johndoe

# setup the password
passwd johndoe

3. Jalankan setiap perintah di bawah ini untuk membuat direktori cadangan baru (/srv/backup ) untuk Restic dan ubah kepemilikannya (chown ) ke johndoe pengguna dan grup. Direktori ini akan menyimpan semua data cadangan dari server1 mesin.

# create new backup directory
mkdir -p /srv/backup

# change ownership of the backup directory
sudo chown -R johndoe:johndoe /srv/backup

4. Sekarang, alihkan ke server1 mesin, dan jalankan perintah di bawah ini untuk menghasilkan kunci SSH.

Alih-alih menggunakan otentikasi berbasis kata sandi, Anda akan menggunakan otentikasi berbasis kunci. Kunci SSH sangat penting, terutama saat menyiapkan pencadangan otomatis dengan skrip shell atau menggunakan tugas Cron.

ssh-keygen

Tekan ENTER untuk prompt berikut, seperti yang ditunjukkan di bawah ini. Melakukannya akan menyetel lokasi penyimpanan kunci SSH Anda ke direktori default (~/.ssh) dan menonaktifkan kata sandi untuk kunci pribadi SSH Anda.

Pada titik ini, di direktori ~/.ssh, Anda akan memiliki file id_rsa (kunci pribadi SSH) dan id_rsa.pub (kunci publik Anda).

5. Jalankan ls perintah di bawah ini untuk memverifikasi bahwa id_rsa dan id_rsa.pub file ada di ~/.ssh direktori.

ls ~/.ssh/

6. Selanjutnya, jalankan ssh-copy-id perintah di bawah ini untuk mengunggah kunci publik SSH ke backup-server . Dalam demo ini, backup-server menggunakan nama pengguna johndoe dan alamat IP 172.16.1.150 .

ssh-copy-id [email protected]

Saat unggahan selesai, Anda akan menerima pesan yang mengatakan Jumlah kunci yang ditambahkan:1 di terminal Anda.

7. Terakhir, jalankan ssh perintah di bawah ini untuk memverifikasi dan menyambungkan ke backup-server .

ssh [email protected]

Perhatikan bahwa Anda secara otomatis masuk ke server cadangan tanpa autentikasi sandi.

Menginisialisasi Repositori Baru

Anda sekarang telah mengonfigurasi server cadangan Restic, jadi langkah selanjutnya adalah menginisialisasi repositori baru. Restic akan menyimpan data cadangan dalam repositori, dan setiap tindakan pencadangan membuat snapshot baru di dalam repositori itu.

1. Jalankan restic perintah di bawah ini untuk menginisialisasi (init ) sebuah repositori (-r :/srv/backup ) menggunakan protokol SFTP.

restic -r sftp:[email protected]:/srv/backup init

2. Masukkan kata sandi yang kuat untuk repositori dan konfirmasi kata sandi. Ingat kata sandinya, karena Anda akan menggunakannya untuk mendekripsi data cadangan Anda.

Seperti yang ditunjukkan di bawah, repositori baru (a9073b62d0) dibuat di server SFTP (sftp:[email protected]:/srv/backup).

3. Terakhir, jalankan restic perintah di bawah ini untuk memverifikasi repositori. Anda akan diminta untuk memasukkan kata sandi yang sebelumnya Anda catat untuk repositori (langkah kedua).

restic -r sftp:[email protected]:/srv/backup check

Jika tidak ada kesalahan, Anda akan mendapatkan pesan tidak ada kesalahan yang ditemukan, seperti yang ditunjukkan di bawah ini.

Mencadangkan Data ke Repositori

Anda sekarang telah menginisialisasi repositori menggunakan server SFTP di backup-server . Tapi bagaimana Anda backup data dengan Restic? Anda akan mencadangkan data dari server1 ke repositori di backup-server .

1. Jalankan restic perintah di bawah ini untuk mencadangkan data dari /var/www/wordpress direktori ke repositori.

restic -r sftp:[email protected]:/srv/backup backup /var/www/wordpress

Masukkan kata sandi untuk repositori, dan ketika proses pencadangan selesai, Restic membuat snapshot (736949a9), seperti yang ditunjukkan di bawah ini.

2. Selanjutnya, jalankan perintah di bawah ini untuk membuat daftar semua snapshots .

restic -r sftp:[email protected]:/srv/backup snapshots

Pastikan snapshot (736949a9) tersedia di daftar, seperti yang ditunjukkan di bawah

3. Jalankan perintah di bawah ini untuk membuat daftar semua file (ls ) pada cuplikan (736949a9 ).

restic -r sftp:[email protected]:/srv/backup ls 736949a9

Anda akan melihat daftar file di cuplikan (736949a9), yang merupakan data cadangan dari direktori /var/www/wordpress/.

Selain itu, Anda dapat menjalankan perintah di bawah ini untuk mencadangkan beberapa direktori (/var/www/wordpress dan /var/www/html) ke repositori yang sama.

restic -r sftp:[email protected]:/srv/backup backup /var/www/wordpress /var/www/html

Perhatikan di bawah bahwa Restic membuat snapshot baru (7b6e321e).

4. Sekarang, jalankan setiap perintah di bawah untuk mencantumkan semua snapshot, statistik file cadangan, dan perbedaan antara dua snapshot (736949a9 dan 7b6e321e ).

# checking list snapshots
restic -r sftp:[email protected]:/srv/backup snapshots

# show stats of repository
restic -r sftp:[email protected]:/srv/backup stats

# checking different between two snapshots
restic -r sftp:[email protected]:/srv/backup diff 736949a9 7b6e321e

Di bawah, snapshot 736949a9 dan 7b6e321e memiliki data cadangan yang sama (/var/www/wordpress). Perhatikan bahwa ukuran file mereka di repositori juga sama karena Restic hanya mencadangkan perubahan file, membuat Restic cepat dan efisien.

Mengecualikan File dalam Proses Pencadangan

Mencadangkan data sangat berguna, tetapi bagaimana Anda mengecualikan data yang tidak perlu? Restic memungkinkan Anda mengecualikan file/direktori dengan --exclude-file pilihan selama proses pencadangan.

--exclude-file opsi dapat mengecualikan file sampah, seperti file log, membuat proses pencadangan lebih cepat dan lebih bersih.

1. Jalankan perintah di bawah ini untuk membuat direktori baru bernama /opt/backup untuk menyimpan file yang dicadangkan.

mkdir -p /opt/backup

2. Selanjutnya, buat file baru (/opt/backup/excludes.txt ) menggunakan editor teks pilihan Anda dan isi konfigurasi berikut.

Konfigurasi di bawah ini memberitahu Restic untuk mengecualikan file dengan jenis file yang berbeda.

# excludes files .zip
*.tar.gz

# excludes directory logs
logs

# exclude .txt files on the directory data
data/*.txt

3. Jalankan perintah di bawah ini untuk membuat cadangan data dari /var/www/html direktori ke repositori (-r :/srv/backup ). --exclude-files opsi memberitahu Restic untuk mengecualikan file dan direktori yang terdaftar di exludes.txt mengajukan.

restic -r sftp:[email protected]:/srv/backup backup /var/www/html --exclude-file=/opt/backup/excludes.txt

Di bawah, snapshot cadangan baru ca99be01 dibuat oleh Restic, tidak termasuk file, yang Anda tentukan di excludes.txt berkas.

4. Sekarang, jalankan perintah di bawah ini untuk memverifikasi daftar file (ls ) pada cuplikan ca99be01 .

restic -r sftp:[email protected]:/srv/backup ls ca99be01

Anda akan melihat semua file yang dicadangkan kecuali yang Anda tetapkan di file konfigurasi (excludes.txt ).

5. Terakhir, jalankan tree perintah di bawah ini untuk memverifikasi pengecualian data bekerja dengan Restic.

tree /var/www/html/

Seperti yang Anda lihat di bawah, direktori /var/www/html berisi file teks di dalamnya, tetapi Restic tidak mengecualikannya dari cadangan.

Menghapus Snapshot dari Repositori

Dalam kebanyakan kasus, Anda mungkin hanya memerlukan dua atau tiga versi snapshot paling lambat. Jadi mengapa tidak menghapus snapshot yang lebih lama? Menghapus snapshot mengharuskan Anda mengetahui ID snapshot, jadi periksa daftar snapshot terlebih dahulu.

1. Jalankan perintah di bawah ini untuk membuat daftar semua snapshot dalam repositori.

restic -r sftp:[email protected]:/srv/backup snapshots

Pilih satu ID cuplikan yang akan dihapus (736949a9).

2. Selanjutnya, jalankan perintah berikut untuk menghapus (forget ) cuplikan tertentu (736949a9 ), dan data yang tersisa dari repositori.

# Removes snapshot only
restic -r sftp:[email protected]:/srv/backup forget 736949a9
# Removes remaining data from repository
restic -r sftp:[email protected]:/srv/backup prune

3. Jalankan perintah di bawah ini untuk melakukan --dry-run dan lihat cuplikan mana yang akan dihapus (forget ) dan dua versi snapshot mana yang akan disimpan (--keep-last 2 ).

Sebelum menghapus snapshot, dry run selalu disarankan untuk menghindari kehilangan snapshot penting.

restic -r sftp:[email protected]:/srv/backup forget --keep-last 2 --prune --dry-run

4. Jalankan perintah di bawah ini untuk menghapus (forget ) versi snapshot lama dan simpan dua yang terakhir (--keep-last 2 ) dari repositori.

restic -r sftp:[email protected]:/srv/backup forget --keep-last 2 --prune

5. Terakhir, jalankan perintah di bawah ini untuk membuat daftar semua snapshot yang ada.

restic -r sftp:[email protected]:/srv/backup snapshots

Anda dapat melihat di bawah bahwa hanya dua versi snapshot terakhir yang tersisa.

Memulihkan Data di Repositori

Mungkin Anda tidak sengaja menghapus data penting dari repositori. Jika demikian, bagaimana Anda mendapatkannya kembali? Untungnya, Restic memungkinkan Anda mendekripsi dan memulihkan data cadangan selama Anda mengetahui ID snapshot cadangan.

1. Jalankan restic perintah di bawah ini untuk memeriksa snapshot yang tersedia di repositori.

restic -r sftp:[email protected]:/srv/backup snapshots

Di bawah ini adalah contoh snapshot yang tersedia di repositori. Catat ID snapshot dari data cadangan yang akan dipulihkan.

2. Selanjutnya, jalankan perintah berikut untuk membuat direktori pemulihan (/opt/restore ) dan pulihkan cuplikan target Anda (6b44ac32 ) ke direktori pemulihan itu.

# Create a restore directory
mkdir -p /opt/restore
# Restore snapshot data to the /opt/restore directory
restic -r sftp:[email protected]:/srv/backup restore 6b44ac32 --target /opt/restore

3. Terakhir, jalankan ls perintah di bawah ini untuk memverifikasi data yang dipulihkan.

ls /opt/restore/var/www/wordpress

Seperti yang ditunjukkan di bawah, Anda akan melihat daftar file yang dipulihkan dari cuplikan (6b44ac32).

Memulihkan File Tertentu

Anda baru saja memulihkan data yang hilang, tetapi bagaimana jika Anda hanya perlu memulihkan file tertentu? Dengan Restic, Anda dapat menargetkan file tertentu dengan menambahkan --include opsi di restic perintah.

1. Jalankan perintah di bawah ini untuk membuat direktori untuk menyimpan file tertentu yang akan dipulihkan dari snapshot.

mkdir -p /opt/restore/specific

2. Selanjutnya, jalankan restic perintah di bawah ini untuk memulihkan direktori tertentu (/var/www/wordpress/wp-content ) dan file tertentu (wp-config.php ) dari cuplikan (6b44ac32 ). Setiap perintah menyetel direktori pemulihan target ke /opt/restore/specific direktori.

# restore specific directory wp-config
restic -r sftp:[email protected]:/srv/backup restore 6b44ac32 --target /opt/restore/specific --include /var/www/wordpress/wp-content

# restore specific file wp-config.php
restic -r sftp:[email protected]:/srv/backup restore 6b44ac32 --target /opt/restore/specific --include /var/www/wordpress/wp-config.php

3. Terakhir, jalankan ls perintah di bawah ini untuk memverifikasi file dan direktori yang dipulihkan di direktori (/opt/restore/specific ).

ls /opt/restore/specific/var/www/wordpress

Jika pemulihan berfungsi dengan benar, Anda akan melihat direktori (wp-content) dan file (wp-config.php) dipulihkan dari snapshot (6b44ac32).

Mencadangkan Data Secara Otomatis dengan Restic dan Cron

Pada titik ini, Anda telah mempelajari semua penggunaan dasar alat pencadangan Restic. Tetapi karena mencadangkan data secara manual bisa merepotkan, mengapa secara otomatis mencadangkan data di sistem Linux Anda? Restic, bersama dengan Cron, dapat melakukan keajaiban, seperti mengotomatiskan proses pencadangan data.

1. Buat file baru (/opt/backup/.secret ) menggunakan editor pilihan Anda dan masukkan sandi repositori Anda. Demo ini menggunakan sandi ResticRepositoryPassword untuk repositori Restic.

2. Selanjutnya, jalankan perintah di bawah ini untuk mengubah izin /opt/backup/.secret file ke 600 . Kode izin 600 memberikan izin baca dan tulis hanya untuk/opt/backup/.secret pemilik berkas.

chmod 600 /opt/backup/.secret

3. Jalankan crontab perintah di bawah ini untuk membuat pekerjaan Cron baru. -u root opsi menunjukkan pekerjaan Cron akan berjalan sebagai pengguna root.

crontab -u root -e

4. Pilih editor pilihan Anda, dan file konfigurasi Cron akan terbuka di editor tersebut. Tapi demo ini menggunakan nano editor.

5. Terakhir, isi konfigurasi Cron dengan konfigurasi berikut untuk mengatur pencadangan otomatis dan menyimpan perubahan.

Skrip di bawah ini melakukan hal berikut:

  • Jalankan restic perintahkan setiap 1.AM ke direktori cadangan (/var/www/wordpress dan /var/www/html ) ke server SFTP repositori (sftp:[email protected]:/srv/backup ).
  • Hapus snapshot lama secara otomatis di 2.AM dan simpan dua versi snapshot terakhir.
  • Menentukan (--password-file ) file (/opt/backup/.secret ) yang berisi kata sandi Anda untuk repositori Restic, sehingga Anda tidak perlu membuat kode keras kata sandi Anda di konfigurasi Cron.
# Runs daily backup at 1.AM
0 1 * * * restic --password-file /opt/backup/.secret -r sftp:[email protected]:/srv/backup backup --verbose /var/www/{wordpress,html}

# Runs every 2.AM, and always keeps the last 2 backup snapshots
0 2 * * * restic --password-file /opt/backup/.secret -r sftp:[email protected]:/srv/backup forget --keep-last 2 --prune

Kesimpulan

Dalam tutorial ini, Anda telah belajar cara menginstal Restic di Linux dan berbagai cara untuk mencadangkan data Anda, dari direktori hingga file tertentu dengan snapshot. Terlepas dari pencadangan data, Anda telah menemukan bahwa Anda dapat memulihkan data yang hilang secara tidak terduga. Otomatisasi berperan besar dalam mencadangkan data Anda, jadi tetap jalankan tugas Cron untuk mengamankan data Anda.

Pada titik ini, Anda siap untuk mencadangkan lebih banyak data menggunakan Restic. Dan mengapa tidak memanfaatkan pencadangan Anda dengan menggunakan tag, kebijakan pemfilteran, dan layanan awan pencadangan?


Linux
  1. Manajemen paket Linux dengan apt

  2. Apa yang baru dengan rdiff-backup?

  3. Perintah JQ di Linux dengan Contoh

  1. Buat musik di Linux dengan Ardor

  2. Edit audio di Linux dengan Audacity

  3. Instal aplikasi di Linux dengan Flatpak

  1. Instal Linux dengan LVM

  2. Ganti du dengan debu di Linux

  3. Manajemen paket Linux dengan dnf