GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak zálohovat pomocí duplicity na Ubuntu 20.04

Pokud jste správce systému a odpovídáte za správu serverů, pak je zálohování dat jedním z vašich nejdůležitějších úkolů. Musíte tedy mít dostatek znalostí o zálohovacích nástrojích, které vám usnadní práci.

Duplicity je bezplatný, open-source a pokročilý nástroj pro zálohování z příkazového řádku postavený na librsync a GnuPG. Vytváří digitálně podepsané, verzované a šifrované svazky tar pro uložení na místním nebo vzdáleném počítači. Duplicity podporuje mnoho protokolů pro připojení k souborovému serveru, včetně ssh/scp, rsync, ftp, DropBox, Amazon S3, Google Docs, Google Drive, místní souborový systém, OneDrive, WebDAV a mnoho dalších.

V tomto tutoriálu vám ukážeme, jak nainstalovat a nakonfigurovat Duplicity pro ruční provádění a automatizaci zálohování na serveru Ubuntu 20.04.

Předpoklady

• Dva servery se systémem Ubuntu 20.04.
• Na serveru Duplicity je nakonfigurována statická adresa IP 104.245.32.161 a na serveru záloh je nakonfigurována adresa 104.245.32.194.
• Na vašem serveru je nakonfigurováno heslo uživatele root.

Začínáme

Než začnete, budete muset svůj balíček aktualizovat na nejnovější verzi. Všechny je můžete aktualizovat pomocí následujícího příkazu:

apt-get update -y

Po aktualizaci všech balíčků budete také muset na váš server nainstalovat některé požadované závislosti. Všechny je můžete nainstalovat spuštěním následujícího příkazu:

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

Jakmile jsou všechny balíčky nainstalovány, můžete pokračovat v instalaci Duplicity.

Instalovat duplicitu

Ve výchozím nastavení je Duplicity k dispozici ve výchozím úložišti Ubuntu 20.04. Můžete jej nainstalovat pouhým spuštěním následujícího příkazu:

apt-get install duplicity -y

Po instalaci ověřte nainstalovanou verzi Duplicity pomocí následujícího příkazu:

duplicity --version

Měli byste vidět následující výstup:

duplicity 0.8.12

Konfigurace hesla SSH bez ověřování

Dále budete muset vygenerovat RSA 2048bitový šifrovaný klíč SSH a použít jej k bezpečné autentizaci se vzdáleným systémem bez zadání hesla.

Nejprve vygenerujte klíč RSA pomocí následujícího příkazu:

ssh-keygen -t rsa -m PEM

Budete požádáni o zadání umístění klíče a přístupové fráze, jak je uvedeno níže:

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]-----+

Dále zkopírujte vygenerovaný klíč RSA na vzdálený záložní server pomocí následujícího příkazu:

ssh-copy-id [email protected]

Budete požádáni o zadání hesla vzdáleného serveru, jak je uvedeno níže:

/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.

Generovat klíče GPG

Dále budete také muset vygenerovat klíče GPG pro šifrování dat, než je přeneseme na vzdálený záložní server. Klíče GPG se používají k poskytování další vrstvy zabezpečení a šifrování dat přenášených mezi servery.

GPG klíč můžete zadat pomocí následujícího příkazu na serveru Duplicity:

gpg --gen-key

Během procesu generování klíče budete požádáni o zadání hesla klíče GPG, jak je uvedeno níže:

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]

Výše uvedený příkaz vygeneruje klíče GPG a uloží je do adresáře /root/.gnupg/.

Pokud zapomenete svůj GPG klíč, můžete jej najít pomocí následujícího příkazu:

gpg --list-keys

Měli byste získat následující výstup:

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]

Vytvořit záložní adresář

Dále budete muset vytvořit adresář na záložním serveru pro uložení zálohy.

Přihlaste se k serveru záloh a vytvořte adresář záloh pomocí následujícího příkazu:

mkdir -p /remotebackup/Duplicity/

Jakmile budete hotovi, můžete přejít k dalšímu kroku.

Proveďte ruční zálohování

V tomto okamžiku je nainstalována a konfigurována Duplicity. Nyní proveďte ruční zálohu na serveru Duplicity.

Spusťte následující příkaz k zálohování adresáře s názvem /etc na vzdálený záložní server (104.245.32.194) v adresáři /remotebackup/Duplicity/:

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

K provedení operace zálohování budete muset zadat heslo klíče GPG, jak je uvedeno níže:

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
-------------------------------------------------

Nyní se přihlaste ke vzdálenému zálohovacímu serveru a ověřte zálohu pomocí následujícího příkazu:

ls /remotebackup/Duplicity/

Měli byste vidět následující výstup:

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

Automatizujte zálohování pomocí Cronu

Můžete také naplánovat zálohování denně nebo týdně nastavením úlohy Cron, aby se spouštěla ​​automaticky v zadaném časovém intervalu.

Nejprve budete muset vytvořit soubor s přístupovou frází v adresáři /root, aby se heslo předalo automaticky bez interaktivní výzvy k parafrázi.

Můžete jej vytvořit pomocí následujícího příkazu:

nano /root/.passphrase

Přidejte své heslo klíče GPG, jak je uvedeno níže:

PASSPHRASE="admin"

Uložte a zavřete soubor a poté jej zajistěte následujícím příkazem:

chmod 600 /root/.passphrase

Nyní vytvořte denní zálohovací skript v adresáři /etc/cron.daily/, který se bude spouštět denně:

nano /etc/cron.daily/duplicity.inc

Přidejte následující řádky:

#!/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/

Po dokončení uložte a zavřete soubor. Poté skriptu udělte oprávnění ke spuštění pomocí následujícího příkazu:

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

Výše uvedený skript bude zálohovat celý kořenový server s výjimkou některých složek.

Nyní otestujte skript, abyste se ujistili, že vše funguje správně.

/etc/cron.daily/duplicity.inc

Měli byste vidět následující výstup:

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
-------------------------------------------------

Nyní můžete zkontrolovat stav zálohy pomocí následujícího příkazu:

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

Měli byste získat následující výstup:

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.

Pokud chcete provést úplnou zálohu, spusťte následující příkaz:

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

Můžete také vyčistit staré záložní soubory pomocí možnosti odebrat-vše-ale-n-plné. Pokud například chcete odstranit všechny nechtěné staré záložní soubory a zachovat pouze 2 zálohy a jejich odpovídající přírůstkové zálohy, spusťte následující příkaz:

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

Obnovit zálohu

Můžete také snadno obnovit své soubory a adresáře ze vzdáleného záložního serveru. K obnovení souborů a adresářů můžete použít volbu --file-to-restore.

Před provedením procesu obnovy můžete zobrazit seznam všech dostupných souborů a adresářů na záložním serveru pomocí následujícího příkazu:

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

Měli byste vidět následující výstup:

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

Nyní obnovte adresář s názvem "opt" ze záložního serveru do adresáře /opt spuštěním následujícího příkazu:

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

Pokud byl proces obnovy úspěšně dokončen, měli byste vidět následující výstup:

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

Závěr

Ve výše uvedeném tutoriálu jsme se naučili zálohovat a obnovovat soubory a adresáře pomocí Duplicity na serveru Ubuntu 20.04. Také jsme se naučili, jak provádět proces zálohování automaticky naplánováním procesu zálohování pomocí Cronu. Doufám, že vám tento článek pomůže ušetřit spoustu času.


Ubuntu
  1. Jak nainstalovat WordPress pomocí Nginx na Ubuntu 18.04

  2. Jak synchronizovat adresáře pomocí Lsyncd na Ubuntu 20.04

  3. Jak nainstaluji Duplicity na Ubuntu?

  1. Jak vytvořit VPN na Ubuntu 20.04 pomocí Wireguard

  2. Jak nastavit klíče SSH na Ubuntu 18.04

  3. Jak nastavit klíče SSH na Ubuntu 20.04

  1. Jak nainstalovat Maven na Ubuntu 18.04

  2. Jak monitorovat Nginx pomocí Netdata na Ubuntu 16.04

  3. Jak nainstalovat Gitea pomocí Dockeru na Ubuntu 20.04