GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Mencadangkan Menggunakan Duplicity di Ubuntu 20.04

Jika Anda seorang administrator sistem dan bertanggung jawab untuk mengelola server, maka mencadangkan data adalah salah satu tugas terpenting Anda. Jadi, Anda harus memiliki pengetahuan yang cukup tentang alat pencadangan yang membuat tugas Anda lebih mudah.

Duplicity adalah utilitas pencadangan baris perintah gratis, open-source, dan canggih yang dibangun di atas librsync dan GnuPG. Ini menghasilkan volume tar yang ditandatangani secara digital, berversi dan terenkripsi untuk penyimpanan di komputer lokal atau jarak jauh. Duplicity mendukung banyak protokol untuk menghubungkan ke server file termasuk, ssh/scp, rsync, ftp, DropBox, Amazon S3, Google Documents, Google Drive, sistem file lokal, OneDrive, WebDAV, dan banyak lagi.

Dalam tutorial ini, kami akan menunjukkan cara menginstal dan mengkonfigurasi Duplicity untuk melakukan backup secara manual dan otomatis di server Ubuntu 20.04.

Prasyarat

• Dua server menjalankan Ubuntu 20.04.
• Alamat IP statis 104.245.32.161 dikonfigurasi pada server Duplicity dan 104.245.32.194 dikonfigurasi pada server cadangan.
• Kata sandi root dikonfigurasi di server Anda.

Memulai

Sebelum memulai, Anda perlu memperbarui paket Anda ke versi terbaru. Anda dapat memperbarui semuanya dengan perintah berikut:

apt-get update -y

Setelah memperbarui semua paket, Anda juga perlu menginstal beberapa dependensi yang diperlukan di server Anda. Anda dapat menginstal semuanya dengan menjalankan perintah berikut:

apt-get install ncftp python3-paramiko python-pycryptopp lftp python3-boto python3-dev librsync-dev -y

Setelah semua paket terinstal, Anda dapat melanjutkan untuk menginstal Duplicity.

Instal Duplikat

Secara default, Duplicity tersedia di repositori default Ubuntu 20.04. Anda dapat menginstalnya hanya dengan menjalankan perintah berikut:

apt-get install duplicity -y

Setelah diinstal, verifikasi versi Duplicity yang diinstal dengan perintah berikut:

duplicity --version

Anda akan melihat output berikut:

duplicity 0.8.12

Konfigurasikan Kata Sandi SSH tanpa Otentikasi

Selanjutnya, Anda perlu membuat kunci SSH terenkripsi RSA 2048 bit dan menggunakannya untuk mengautentikasi secara aman dengan sistem jarak jauh tanpa memberikan kata sandi.

Pertama, buat kunci RSA dengan perintah berikut:

ssh-keygen -t rsa -m PEM

Anda akan diminta untuk menentukan lokasi kunci dan frasa sandi seperti yang ditunjukkan di bawah ini:

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:BwKSLtXT+WHhPqhu3MIH07QEb0c5Zh/f0XolMRyQaQE root@ubuntu2004
The key's randomart image is:
+---[RSA 3072]----+
|  .o.. ..oE.o*++ |
|  o.+.o.O . + +.o|
| o   +.*o+ + . +.|
|. .   =+o.. . o .|
| .   =.oS .    . |
|    o.o  o       |
|   o.+           |
|   .= o          |
|   ..o           |
+----[SHA256]-----+

Selanjutnya, salin kunci RSA yang dihasilkan ke server cadangan jarak jauh dengan perintah berikut:

ssh-copy-id [email protected]

Anda akan diminta untuk memberikan kata sandi server jarak jauh seperti yang ditunjukkan di bawah ini:

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

Buat Kunci GPG

Selanjutnya, Anda juga perlu membuat kunci GPG untuk mengenkripsi data sebelum kami mentransfernya ke server cadangan jarak jauh. Kunci GPG digunakan untuk memberikan lapisan keamanan ekstra dan enkripsi data yang ditransfer di seluruh server.

Anda dapat memasukkan kunci GPG dengan perintah berikut di server Duplicity:

gpg --gen-key

Anda akan diminta untuk memberikan kata sandi kunci GPG selama proses pembuatan Kunci seperti yang ditunjukkan di bawah ini:

gpg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

gpg: directory '/root/.gnupg' created
gpg: keybox '/root/.gnupg/pubring.kbx' created
Note: Use "gpg --full-generate-key" for a full featured key generation dialog.

GnuPG needs to construct a user ID to identify your key.

Real name: Hitesh Jethva
Email address: [email protected]
You selected this USER-ID:
    "Hitesh Jethva <[email protected]>"

Change (N)ame, (E)mail, or (O)kay/(Q)uit? O
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key E8A334EB747BAD6A marked as ultimately trusted
gpg: directory '/root/.gnupg/openpgp-revocs.d' created
gpg: revocation certificate stored as '/root/.gnupg/openpgp-revocs.d/6683A9D4720C5895BF7A7AE9E8A334EB747BAD6A.rev'
public and secret key created and signed.

pub   rsa3072 2020-07-30 [SC] [expires: 2022-07-30]
      6683A9D4720C5895BF7A7AE9E8A334EB747BAD6A
uid                      Hitesh Jethva <[email protected]>
sub   rsa3072 2020-07-30 [E] [expires: 2022-07-30]

Perintah di atas akan menghasilkan kunci GPG dan menyimpannya di bawah direktori /root/.gnupg/.

Jika Anda lupa kunci GPG Anda, Anda dapat menemukannya dengan perintah berikut:

gpg --list-keys

Anda akan mendapatkan output berikut:

gpg: checking the trustdb
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: next trustdb check due at 2022-07-30
/root/.gnupg/pubring.kbx
------------------------
pub   rsa3072 2020-07-30 [SC] [expires: 2022-07-30]
      6683A9D4720C5895BF7A7AE9E8A334EB747BAD6A
uid           [ultimate] Hitesh Jethva <[email protected]>
sub   rsa3072 2020-07-30 [E] [expires: 2022-07-30]

Buat Direktori Cadangan

Selanjutnya, Anda perlu membuat direktori di server cadangan untuk menyimpan cadangan.

Masuk ke server cadangan dan buat direktori cadangan dengan perintah berikut:

mkdir -p /remotebackup/Duplicity/

Setelah selesai, Anda dapat melanjutkan ke langkah berikutnya.

Lakukan Pencadangan Manual

Pada titik ini, Duplicity diinstal dan dikonfigurasi. Sekarang, mari kita lakukan pencadangan manual di server Duplicity.

Jalankan perintah berikut untuk mencadangkan direktori bernama /etc ke server pencadangan jarak jauh (104.245.32.194) di dalam direktori /remotebackup/Duplicity/:

duplicity /etc/ sftp://[email protected]//remotebackup/Duplicity/

Anda harus memberikan kata sandi kunci GPG Anda untuk melakukan operasi pencadangan seperti yang ditunjukkan di bawah ini:

Local and Remote metadata are synchronized, no sync needed.
Last full backup date: none
GnuPG passphrase for decryption: 
Retype passphrase for decryption to confirm: 
No signatures found, switching to full backup.
--------------[ Backup Statistics ]--------------
StartTime 1596110093.56 (Thu Jul 30 11:54:53 2020)
EndTime 1596110095.24 (Thu Jul 30 11:54:55 2020)
ElapsedTime 1.67 (1.67 seconds)
SourceFiles 1413
SourceFileSize 2698964 (2.57 MB)
NewFiles 1413
NewFileSize 2698964 (2.57 MB)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 1413
RawDeltaSize 1857098 (1.77 MB)
TotalDestinationSizeChange 493579 (482 KB)
Errors 0
-------------------------------------------------

Sekarang, login ke server backup jarak jauh dan verifikasi backup dengan perintah berikut:

ls /remotebackup/Duplicity/

Anda akan melihat output berikut:

duplicity-full.20200730T115821Z.manifest.gpg      duplicity-full-signatures.20200730T115821Z.sigtar.gpg
duplicity-full.20200730T115821Z.vol1.difftar.gpg

Otomatis Pencadangan dengan Cron

Anda juga dapat menjadwalkan pencadangan harian atau mingguan dengan menyetel tugas Cron untuk menjalankannya secara otomatis pada interval waktu tertentu.

Pertama, Anda perlu membuat file frasa sandi di bawah direktori /root untuk meneruskan frasa sandi secara otomatis tanpa prompt interaktif untuk parafrase.

Anda dapat membuatnya dengan perintah berikut:

nano /root/.passphrase

Tambahkan kata sandi kunci GPG Anda seperti yang ditunjukkan di bawah ini:

PASSPHRASE="admin"

Simpan dan tutup file kemudian amankan file dengan perintah berikut:

chmod 600 /root/.passphrase

Sekarang, buat skrip cadangan harian di dalam direktori /etc/cron.daily/ yang akan berjalan setiap hari:

nano /etc/cron.daily/duplicity.inc

Tambahkan baris berikut:

#!/bin/sh

test -x $(which duplicity) || exit 0
. /root/.passphrase

export PASSPHRASE
$(which duplicity) --encrypt-key 6683A9D4720C5895BF7A7AE9E8A334EB747BAD6A --exclude /var --exclude /home --exclude /swapfile --exclude /proc --exclude /sys --exclude /tmp --exclude /usr / sftp://[email protected]//remotebackup/Duplicity/

Simpan dan tutup file setelah Anda selesai. Kemudian, berikan izin yang dapat dieksekusi ke skrip dengan perintah berikut:

chmod +x /etc/cron.daily/duplicity.inc

Skrip di atas akan mencadangkan seluruh server root kecuali beberapa folder.

Sekarang uji skrip untuk memastikan semuanya berfungsi dengan baik.

/etc/cron.daily/duplicity.inc

Anda akan melihat output berikut:

Local and Remote metadata are synchronized, no sync needed.
Last full backup left a partial set, restarting.
Last full backup date: Thu Jul 30 12:06:52 2020
RESTART: The first volume failed to upload before termination.
         Restart is impossible...starting backup from beginning.
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: none
No signatures found, switching to full backup.
--------------[ Backup Statistics ]--------------
StartTime 1596110992.57 (Thu Jul 30 12:09:52 2020)
EndTime 1596111062.63 (Thu Jul 30 12:11:02 2020)
ElapsedTime 70.06 (1 minute 10.06 seconds)
SourceFiles 13313
SourceFileSize 777994890 (742 MB)
NewFiles 13313
NewFileSize 777994890 (742 MB)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 13313
RawDeltaSize 772067520 (736 MB)
TotalDestinationSizeChange 318263295 (304 MB)
Errors 0
-------------------------------------------------

Sekarang Anda dapat memeriksa status cadangan Anda dengan perintah berikut:

PASSPHRASE="admin" duplicity --encrypt-key 6683A9D4720C5895BF7A7AE9E8A334EB747BAD6A collection-status  sftp://[email protected]//remotebackup/Duplicity/

Anda akan mendapatkan output berikut:

Last full backup date: Thu Jul 30 12:14:17 2020
Collection Status
-----------------
Connecting with backend: BackendWrapper
Archive dir: /root/.cache/duplicity/b2af509c9fab82d874aa492a933aaf70

Found 0 secondary backup chains.

Found primary backup chain with matching signature chain:
-------------------------
Chain start time: Thu Jul 30 12:14:17 2020
Chain end time: Thu Jul 30 12:14:17 2020
Number of contained backup sets: 1
Total number of contained volumes: 2
 Type of backup set:                            Time:      Num volumes:
                Full         Thu Jul 30 12:14:17 2020                 2
-------------------------
No orphaned or incomplete backup sets found.

Jika Anda ingin mengambil cadangan penuh, jalankan perintah berikut:

PASSPHRASE="admin" duplicity full  --encrypt-key 6683A9D4720C5895BF7A7AE9E8A334EB747BAD6A remove-all-but-n-full 3 --force sftp://[email protected]//remotebackup/Duplicity/

Anda juga dapat membersihkan file cadangan lama menggunakan opsi hapus-semua-tapi-n-penuh. Misalnya, jika Anda ingin menghapus semua file cadangan lama yang tidak diinginkan dan hanya menyimpan 2 cadangan dan cadangan tambahan yang sesuai, jalankan perintah berikut:

PASSPHRASE="admin" duplicity --encrypt-key 6683A9D4720C5895BF7A7AE9E8A334EB747BAD6A remove-all-but-n-full 2 --force  sftp://[email protected]//remotebackup/Duplicity/

Pulihkan Cadangan

Anda juga dapat memulihkan file dan direktori dari server cadangan jarak jauh dengan mudah. Anda dapat menggunakan opsi --file-to-restore untuk memulihkan file dan direktori.

Sebelum melakukan proses restorasi, Anda dapat membuat daftar semua file dan direktori yang tersedia di server cadangan dengan perintah berikut:

duplicity --encrypt-key 6683A9D4720C5895BF7A7AE9E8A334EB747BAD6A list-current-files  sftp://[email protected]//remotebackup/Duplicity/ | less

Anda akan melihat output berikut:

Local and Remote metadata are synchronized, no sync needed.
Last full backup date: Thu Jul 30 12:14:17 2020
Thu Jul 30 12:04:04 2020 .
Thu May 14 03:28:54 2020 bin
Thu May 14 03:35:45 2020 boot
Mon Apr 20 16:33:49 2020 boot/System.map-5.4.0-26-generic
Wed Apr 29 13:34:16 2020 boot/System.map-5.4.0-29-generic
Mon Apr 20 16:33:49 2020 boot/config-5.4.0-26-generic
Wed Apr 29 13:34:16 2020 boot/config-5.4.0-29-generic
Thu May 14 03:37:26 2020 boot/grub
Thu May 14 03:31:36 2020 boot/grub/fonts
Thu May 14 03:31:36 2020 boot/grub/fonts/unicode.pf2
Thu May 14 03:31:29 2020 boot/grub/gfxblacklist.txt
Thu May 14 03:37:26 2020 boot/grub/grub.cfg
Wed Jul 29 10:05:41 2020 boot/grub/grubenv
Thu May 14 03:31:37 2020 boot/grub/i386-pc
Thu May 14 03:31:36 2020 boot/grub/i386-pc/915resolution.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/acpi.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/adler32.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/affs.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/afs.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/ahci.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/all_video.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/aout.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/archelp.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/at_keyboard.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/ata.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/backtrace.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/bfs.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/biosdisk.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/bitmap.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/bitmap_scale.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/blocklist.mod
Thu May 14 03:31:37 2020 boot/grub/i386-pc/boot.img
Thu May 14 03:31:36 2020 boot/grub/i386-pc/boot.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/bsd.mod
Thu May 14 03:31:35 2020 boot/grub/i386-pc/bswap_test.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/btrfs.mod

Sekarang, pulihkan direktori bernama "opt" dari server cadangan ke direktori /opt dengan menjalankan perintah berikut:

PASSPHRASE="admin" duplicity --encrypt-key 6683A9D4720C5895BF7A7AE9E8A334EB747BAD6A --file-to-restore opt sftp://[email protected]//remotebackup/Duplicity/ /opt

Anda proses restorasi telah selesai dengan sukses, Anda akan melihat output berikut:

Local and Remote metadata are synchronized, no sync needed.
Last full backup date: Thu Jul 30 12:14:17 2020

Kesimpulan

Dalam tutorial di atas, kami belajar cara membuat cadangan dan memulihkan file dan direktori dengan Duplicity di server Ubuntu 20.04. Kami juga mempelajari cara melakukan proses pencadangan secara otomatis dengan menjadwalkan proses pencadangan dengan Cron. Saya harap artikel ini akan membantu Anda menghemat banyak waktu.


Ubuntu
  1. Cara Menginstal WordPress Menggunakan Nginx di Ubuntu 18.04

  2. Cara Menyinkronkan Direktori Menggunakan Lsyncd di Ubuntu 20.04

  3. Bagaimana cara menginstal Duplicity di Ubuntu?

  1. Cara membuat VPN di Ubuntu 20.04 menggunakan Wireguard

  2. Cara Mengatur Kunci SSH di Ubuntu 18.04

  3. Cara Mengatur Kunci SSH di Ubuntu 20.04

  1. Cara Menginstal Maven di Ubuntu 18.04

  2. Cara Memantau Nginx menggunakan Netdata di Ubuntu 16.04

  3. Cara Menginstal Gitea menggunakan Docker di Ubuntu 20.04