Skip to content


Создание шифрованного бекапа с помощью fsbackup

Иногда бывают ситуации, когда требуется создание резервной копии на носителе, к которому есть доступ не только у вас. Если есть желание уберечь свои данные от посторонних глаз, то тут, конечно же, потребуется шифрование. Один из быстрых и простых способов добиться этого – использование связки fsbackup и gnupg. Далее пошаговое руководство.

  1. Устанавливаем fsbackup, правим конфиг.
  2. Создаём ключи:
    $ gpg --gen-key
    gpg (GnuPG) 1.4.11; Copyright (C) 2010 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.
    Please select what kind of key you want:
       (1) RSA and RSA (default)
       (2) DSA and Elgamal
       (3) DSA (sign only)
       (4) RSA (sign only)
    Your selection? 1
    RSA keys may be between 1024 and 4096 bits long.
    What keysize do you want? (2048)
    Requested keysize is 2048 bits
    Please specify how long the key should be valid.
             0 = key does not expire
          <n>  = key expires in n days
          <n>w = key expires in n weeks
          <n>m = key expires in n months
          <n>y = key expires in n years
    Key is valid for? (0)
    Key does not expire at all
    Is this correct? (y/N) y
    You need a user ID to identify your key; the software constructs the user ID
    from the Real Name, Comment and Email Address in this form:
        "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
    Real name: SysAdmin
    Email address: mymbox@avz.org.ua
    Comment: 
    You selected this USER-ID:
        "SysAdmin <mymbox@avz.org.ua>"
    Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
    You need a Passphrase to protect your secret key.
    Repeat passphrase:
  3. Копируем ключи на сервер бекапов:
    $ scp ~/.gnupg/*.gpg backupuser@backupserver.some.where:~/.gnupg
  4. Проверяем, что в конфиг-файле fsbackup-а правильно установлены следующие переменные:
    $prog_pgp = "/usr/bin/gpg";
    # должно соответствовать имени пользователя при создании ключей
    $cfg_pgp_userid = "mymbox";
  5. Запускаем процесс создания бекапа:
    # /usr/local/fsbackup/create_backup.sh
    OS: linux
    Creating system config archive...
    Creating package list...
    Creating remote_ssh backup: s1
    PGP: enabled
    Current increment number: 1
    Adding /usr/local/fsbackup....
    done
    Adding /usr/src/linux/.config....
    done
    Adding /root....
    done
    Adding /etc....
    done
    Storing remote ssh backup...
    gpg: using PGP trust model
    gpg: using subkey 656FA34 instead of primary key 0F36EF13
    gpg: This key belongs to us
    gpg: reading from `[stdin]'
    gpg: writing to stdout
    gpg: RSA/AES256 encrypted for: "656FA34 SysAdmin <mymbox@avz.org.ua>"
    ***** Backup successful complete.
  6. При необходимости извлечь файлы из бекапа на сервере бекапов делаем так:
    $ ls -l
    total 50048
    -rw-rw-r--. 1 avz avz 50814369 Фев 15 16:15 s1-2012.02.15.16.15.17-0.tar
    -rw-rw-r--. 1 avz avz        0 Фев 15 16:15 s1-2012.02.15.16.15.17.del
    -rw-rw-r--. 1 avz avz    91076 Фев 15 16:15 s1-2012.02.15.16.15.17.dir
    -rw-rw-r--. 1 avz avz   335872 Фев 15 16:15 s1-2012.02.15.16.15.17.hash
    -rw-rw-r--. 1 avz avz      373 Фев 15 16:15 s1-2012.02.15.16.15.17.list
    -rw-rw-r--. 1 avz avz        0 Фев 15 16:15 s1-2012.02.15.16.15.17.lsize
     
    $ file s1-2012.02.15.16.15.17-0.tar
    s1-2012.02.15.16.15.17-0.tar: data
     
    $ mv s1-2012.02.15.16.15.17-0.tar s1-2012.02.15.16.15.17-0.tar.gpg
     
    $ gpg -d s1-2012.02.15.16.15.17-0.tar.gpg > s1-2012.02.15.16.15.17-0.tar
    You need a passphrase to unlock the secret key for
    user: "SysAdmin <mymbox@avz.org.ua>"
    2048-bit RSA key, ID 656FA34, created 2012-02-15 (main key ID 0F36EF13)
    ┌───────────────────────────────────────────────────────────────────────┐
    │ Please enter the passphrase to unlock the secret key for certificate: │ 
    │ "SysAdmin <mymbox@avz.org.ua>"                                        │ 
    │ 2048-bit RSA key, ID 656FA34,                                         │ 
    │ created 2012-02-15 (main key ID 0F36EF13).                            │ 
    │                                                                       │ 
    │                                                                       │ 
    │ Passphrase ********__________________________________________________ │ 
    │                                                                       │ 
    │            <OK>                           <Cancel>                    │ 
    └───────────────────────────────────────────────────────────────────────┘
    gpg: encrypted with 2048-bit RSA key, ID 656FA34, created 2012-02-15
          "SysAdmin <mymbox@avz.org.ua>"
     
    $ file s1-2012.02.15.16.15.17-0.tar
    s1-2012.02.15.16.15.17-0.tar: POSIX tar archive (GNU)
     
    $ tar -xf s1-2012.02.15.16.15.17-0.tar

Что касается быстродействия при расшифровке, то могу сообщить следующее:

$ ls -l s1-2012.02.15.23.02.34.tar.gpg
-rw-rw-r--. 1 avz avz 4164349204 Фев 15 23:23 s1-2012.02.15.23.02.34.tar.gpg
 
$ time gpg -d s1-2012.02.15.23.02.34.tar.gpg > s1-2012.02.15.23.02.34.tar
You need a passphrase to unlock the secret key for
user: "SysAdmin <mymbox@avz.org.ua>"
2048-bit RSA key, ID 656FA34, created 2012-02-15 (main key ID 0F36EF13)
real    3m19.129s
user    2m4.648s
sys     0m6.255s
 
$ ls -l s1-2012.02.15.23.02.34.tar
-rw-rw-r--. 1 avz avz 5637232640 Фев 16 14:31 s1-2012.02.15.23.02.34.tar
 
$ cat /proc/cpuinfo | grep 'model name' | head -n 1
model name      : Intel(R) Core(TM) i5-2500 CPU @ 3.30GHz
 
$ cat /proc/meminfo | grep MemTotal:
MemTotal:        3835144 kB

Posted in *nix, Howto.

Tagged with .


One Response

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. Кешбек за покупки says

    Последние версии mysql ругаются на

    "mysqldump: ambiguous option '--all' (all-databases, allow-keywords)"

    Чтобы не ругалось, надо в файле scripts/mysql_backup.sh параметр --all заменить на --all-databases

You must be logged in to post a comment.