Differences between revisions 23 and 24
Revision 23 as of 2017-04-23 17:19:36
Size: 10582
Editor: Kurgan
Comment:
Revision 24 as of 2017-04-23 17:21:21
Size: 10558
Editor: Kurgan
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
== Backuppc == = Backuppc =
Line 4: Line 4:
=== Installazione === == Installazione ==
Line 7: Line 7:
=== Configurazione === == Configurazione ==
Line 22: Line 22:
=== Limitare l'accesso === == Limitare l'accesso ==
Line 33: Line 33:
=== Generazione delle chiavi per usare rsync su SSH === == Generazione delle chiavi per usare rsync su SSH ==
Line 46: Line 46:
=== Configurazione di una macchina (client) Linux con rsync su SSH === == Configurazione di una macchina (client) Linux con rsync su SSH ==
Line 54: Line 54:
==== Versione semplice: usando root sulla macchina remota ==== === Versione semplice: usando root sulla macchina remota ===
Line 67: Line 67:
==== Versione complessa: con un utente che puo` solo leggere usando rsync ==== === Versione complessa: con un utente che puo` solo leggere usando rsync ===
Line 96: Line 96:
=== Backup di una macchina locale su se` stessa === == Backup di una macchina locale su se` stessa ==
Line 123: Line 123:
=== Usare un disco in XFS === == Usare un disco in XFS ==
Line 137: Line 137:
=== Backup di Windows === == Backup di Windows ==
Line 141: Line 141:
=== Estrazione di un TAR da backuppc === == Estrazione di un TAR da backuppc ==

Backuppc

Backuppc e` un software di backup con interfaccia web (e anche da command line) che usa rsync o samba per fare il backup incrementale o totale di macchine Linux o Windows. C'e` tantissimo da dire sui vantaggi e sulle limitazioni di questo software, e non e` certo questa la sede per farlo. PRO: il sistema di pooling di backuppc permette di salvare una sola volta su disco i file uguali anche tra macchine diverse.

Installazione

Per installare Backuppc su Debian e` sufficiente installare il pacchetto "backuppc", il quale si porta dietro un mucchio di dipendenze. Deve essere usato in combinazione con Apache o Apache2, di default si installa Apache2.

Configurazione

Backuppc viene installato con un utente di default per la sua interfaccia web, che ha username "backuppc" e una password generata a caso. Questa password puo` essere cambiata con il comando htpasswd /etc/backuppc/htpasswd backuppc da root. L'accesso via web e` disponibile di default all'indirizzo http://<server>/backuppc/

Lo storage dei files di default viene fatto in /var/lib/backuppc, se lo si vuole spostare, al momento non e` possibile farlo se non ricompilando, quindi occorrera` linkare la destinazione con un symlink, oppure montare li` dentro un eventuale disco di backup, ovvero fare un mount in bind di una directory. Ad esempio, posto che /backupdisk sia il mount point del mio disco di backup, faro`:

/etc/init.d/backuppc stop
mv /var/lib/backuppc /backupdisk
ln -s /backupdisk/backuppc /var/lib/
/etc/init.d/backuppc start

Nel file di configurazione /etc/backuppc/config.pl c'e` il parametro TopDir che dovrebbe servire a cambiare percorso di backup, ma NON va modificato, si incasina tutto.

Limitare l'accesso

Backuppc e` accessibile di default tramite Apache, quindi se si possiede un web server con dei siti visibili al pubblico e si installa backuppc, anche esso (previa autenticazione via password) e` visibile su internet. Per stringere la sicurezza e` possibile limitare l'accesso a determinati gruppi di indirizzi IP. Per farlo, va modificato il file /etc/backuppc/apache.conf, aggiungendo in fondo al blocco <Directory /usr/share/backuppc/cgi-bin/> tre righe:

Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128 192.168.0.0/16

Ovviamente vanno indicate le reti che ci interessano.

Generazione delle chiavi per usare rsync su SSH

Sul server di backuppc e` opportuno generare delle chiavi per poter usare ssh come metodo di trasporto per i backup. Per farlo, occorre diventare l'utente backuppc e poi usare il comando per generare le chiavi asimmetriche. Siccome devono essere usate per un processo automatico, e` opportuno NON impostare una passphrase per le chiavi.

su - backuppc
ssh-keygen

A questo punto, la chiave generata, che si trova in ./ssh/id_rsa.pub, puo` essere copiata come chiave autorizzata all'accesso in ssh sulle macchine che dobbiamo backuppare.

Configurazione di una macchina (client) Linux con rsync su SSH

Per usare rsync ci sono due alternative: la prima e` creare un utente (non root) sulla macchina remota, dandogli il permesso di usare rsync limitatamente alla lettura e non alla scrittura, in modo da limitare i danni nel caso in cui ci fosse una violazione della macchina che gestisce i backup (e` possibile leggere i files come root, ma non scriverli).

La seconda, piu` semplice e che permette anche di fare un restore in-place, e` quella di usare direttamente l'utente root sulla macchina remota.

Versione semplice: usando root sulla macchina remota

  • Installare "rsync" se non c'e` gia`
  • Copiare la chiave pubblica dell'utente backuppc sul server di backup come chiave autorizzata all'accesso sulla macchina di cui vogliamo fare il backup. In pratica, questo significa che il contenuto del file /var/lib/backuppc/.ssh/id_rsa.pub (che si trova sul server di backuppc) deve essere scritto (nella macchina client) dentro a /root/.ssh/authorized_keys.
  • A questo punto, provare a fare ssh dal server backuppc al client che vogliamo backuppare. Eseguendo (come utente backuppc) il comando seguente, si dovrebbe trovarsi in shell sull'altra macchina senza dover fare null'altro. La prima volta che lo eseguiamo, ci verra` chiesto ragionevolmente se vogliamo procedere con la connessione. Dobbiamo rispondere di si`, ovviamente. A questo punto chiudiamo la connessione e riproviamo, per verificare che si entri senza alcun impedimento o domanda. In totale i comandi da dare sulla macchina locale (dove gira backuppc) sono due: con il primo divento l'utente backuppc sulla macchina locale, e con il secondo faccio ssh come root sulla macchina remota (quella di cui devo fare il backup)
    su - backuppc
    ssh root@server_remoto

Se tutto ha funzionato, ora backuppc puo` lanciare il backup via ssh e rsync.

Versione complessa: con un utente che puo` solo leggere usando rsync

  • Installare "rsync" se non c'e` gia`
  • Installare "sudo" se non c'e` gia`
  • Creare un utente backuppc (o un nome a vostra scelta)
    adduser --disabled-password --ingroup nogroup backuppc
  • Permettere a tale utente di eseguire rsync come root
    • Eseguire il comando "visudo"
    • Inserire nel file questa riga:
      backuppc ALL=(root) NOPASSWD: /usr/bin/rsync --server --sender *
  • Copiare la chiave pubblica dell'utente backuppc sul server di backup come chiave autorizzata all'accesso sulla macchina di cui vogliamo fare il backup. In pratica, questo significa che il contenuto del file /var/lib/backuppc/.ssh/id_rsa.pub (che si trova sul server di backuppc) deve essere scritto (nella macchina client) dentro a /home/backuppc/.ssh/authorized_keys.
  • A questo punto, provare a fare ssh dal server backuppc al client che vogliamo backuppare. Eseguendo (come utente backuppc) il comando seguente, si dovrebbe trovarsi in shell sull'altra macchina senza dover fare null'altro.
    ssh backuppc@server_remoto
  • Nella configurazione dell'host dentro backuppc, la riga di comando per eseguire rsync (dentro alla configurazione dell'host, alla voce RsyncClientCmd va modificata come segue:

    $sshPath -q -x -l backuppc $host sudo $rsyncPath $argList+

Questo serve a inserire nel comando l'utente giusto (non piu` root ma backuppc) e il comando "sudo".

Questo setup e` piu` sicuro del default, pero` e` fatto in modo da permettere soltanto il backup e non il restore "in place", in quanto il comando impostato con visudo in /etc/sudoers limita la funzionalita` di rsync alla sola lettura dei dati. Se occorre usare il restore diretto sulla macchina, questo setup e` totalmente inutile, tantovale accedere direttamente come root.

Backup di una macchina locale su se` stessa

Se si vuole fare il backup di una macchina su se` stessa, l'ideale e` usare tar e non rsync su ssh. Per farlo, occorre pero` modificare la configurazione di backuppc per poter eseguire tar come root.

  • Installare sudo
  • Eseguire visudo e aggiungere questa riga:
    backuppc ALL = NOPASSWD: /bin/tar
  • modificare nella configurazione dell'host dentro backuppc i comandi di backup e restore con tar, inserendo sudo ed eliminando ssh, cosi`:
    • Alla voce TarClientCmd modificare in questo modo:

      # originale:
      $sshPath -q -x -n -l root $host env LC_ALL=C $tarPath -c -v -f - -C $shareName+ --totals
      
      # modificata:
      env LC_ALL=C /usr/bin/sudo $tarPath -c -v -f - -C $shareName --totals --one-file-system
    • Alla voce TarClientRestoreCmd modificare in questo modo:

      # originale:
      $sshPath -q -x -l root $host env LC_ALL=C $tarPath -x -p --numeric-owner --same-owner -v -f - -C $shareName+
      
      # modificata:
      env LC_ALL=C /usr/bin/sudo $tarPath -x -p --numeric-owner --same-owner -v -f - -C $shareName+

Usare un disco in XFS

Dal momento che backuppc usa un pacco di inodes, e` opportuno usare XFS che ha gli inode dinamici.

  • Installare il pacchetto xfsprogs
  • Partizionare il disco di backup con il tipo 83 come per ext3
  • formattare con mkfs.xfs -f /dev/sdXX
  • Gli do` un nome con xfs_admin -L nomevolume /dev/sdXX
  • Ora lo posso montare in fstab con una riga tipo:
    LABEL=nomevolume /path      xfs     defaults        0       2

Backup di Windows

Il backup di macchine windows si puo' eseguire tramite samba (non richiede installazione di programmi sul client) ovvero tramite rsyncd (che esiste per win all'interno del framework cygwin). Il backup tramite samba ha alcune limitazioni importanti, la maggiore delle quali è che l'exclude o l'include all'interno di uno share permette di specificare _un'unica_ espressione regolare (vedi: https://bugzilla.samba.org/show_bug.cgi?id=389). Questa limitazione è intrinseca a smbclient, e non è facilmente aggirabile. Un possibile workaround prevede di modificare /usr/share/backuppc/lib/BackupPC/Xfer/Smb.pm rimuovendo il parametro "r" ad smbtar. In questo modo è possibile specificare piu' exclude, ma senza usare wildcard. Vale la pena di ricordare che occorre fare login alla macchina windows con il dominio se necessario, tipo "dominio/utente".

Estrazione di un TAR da backuppc

Per estrarre un file di tipo tar con dentro i dati di uno specifico backup da backuppc si puo` usare un comando come questo:

 su backuppc -c "/usr/share/backuppc/bin/BackupPC_tarCreate -h <hostname_macchina_backuppc>  -s <path> -n -1 ." > /mnt/backup_pippo_pluto.tar

L'hostname e` quello indicato nella configurazione di backuppc come host da backuppare. Il path e` quello indicato nella config dell'host come path di partenza del backup, oppure anche una parte di esso (credo). Per esempio, per una macchina linux potrebbe essere "/" mentre per una windows lo share samba che stiamo accedendo "c$" o "documenti" o altro. In pratica e` il path cosi` come e` noto a backuppc stesso. La voce "-n -1" significa "prendi l'ultimo backup che hai" ovvero il piu` recente. Il punto in fondo indica il percorso (dentro al path di partenza) da restorare. In pratica se vogliamo restorare "/etc" dal path "/" dovremmo mettere "etc" al posto del punto in fondo.

Per avere una lista dei files e non fare il restore possiamo aggiungere "-l" come primo parametro e togliere la ridirezione. Tipo:

 su backuppc -c "/usr/share/backuppc/bin/BackupPC_tarCreate -l -h <hostname_macchina_backuppc>  -s <path> -n -1 ."

LinuxDebian/BackupPC (last edited 2021-11-21 16:58:38 by Kurgan)