Debian/Ubuntu:为云中的加密备份安装Duplicity

时间:2020-01-09 10:38:14  来源:igfitidea点击:

如何在基于Debian或Ubuntu Linux的台式机/笔记本电脑/服务器上安装和配置用于增量备份和加密格式的远程备份的重复性软件?

Duplicity是一款软件,可提供对加密文件的轻松加密版本化远程备份,几乎不需要远程服务器。
它使用GnuPG,tar和rdiff进行此操作。
要传输数据,它可以使用ssh/scp,本地文件访问,rsync,ftp和Amazon S3。

您还需要设置密码。
密码短语是单词或其他文本的序列,用于控制对计算机系统,程序或数据的访问。
密码短语的用法类似于密码,但通常更长以增加安全性。
密码短语通常用于控制对密码程序和系统的访问以及对密码程序和系统的操作。
密码短语特别适用于将密码短语用作加密密钥的系统。
我强烈建议您为ssh-keys设置一个密码短语。

在Debian/Ubuntu Linux上安装双重功能

打开终端并输入以下命令(有关更多信息,Red Hat和朋友们请参见我们先前在基于RHEL/CentOS的系统上常见的安装重复性问题):

$ sudo apt-get install duplicity

或者

# apt-get install duplicity

如何创建SSH密钥?

要运行自动备份,必须使用SSH密钥设置无密码的SSH连接。
使用ssh-keygen命令创建ssh-key:

ssh-keygen -t rsa

跳过密码(不推荐)

如果您信任本地系统/服务器/笔记本电脑/台式机,请不要输入密码。
只需按两次Enter并设置一个空密码即可。
有关设置ssh密钥的详细信息,请参见以下分步指南:

  • Howto Linux/UNIX使用DSA公共密钥身份验证(无密码登录)设置SSH
  • 如何使用多个SSH密钥减少密码登录?

设置SSH密钥的密码(推荐)

如果您偏执狂,请在出现提示时设置密码并安装钥匙串以设置密码,而无需登录:

$ sudo apt-get install keychain

编辑您的~/.bash_profile,执行:

vi $HOME/.bash_profile

追加以下钥匙串配置指令:

## Note --clear option is a security feature ##
/usr/bin/keychain --clear  $HOME/.ssh/id_rsa
source $HOME/.keychain/$HOSTNAME-sh

保存并关闭文件。

如何创建GPG密钥?

为GNU Privacy Guard安装免费的PGP替代品:

# apt-get install gnupg

或者

$ sudo apt-get install gnupg

执行以下命令以创建用于加密备份的GPG密钥:

# gpg --gen-key

输出示例:

gpg (GnuPG) 1.4.12; Copyright (C) 2012 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: keyring `/root/.gnupg/secring.gpg' created
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) 4096
Requested keysize is 4096 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) 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) <[email protected]>"
 
Real name: Home Nas Server
Email address: root@nas01
Comment: Home Nas Server Backup
You selected this USER-ID:
    "Home Nas Server (Home Nas Server Backup) <root@nas01>"
 
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.

要列出您的gpg键,请运行:

# gpg --list-keys

输出示例:

/root/.gnupg/pubring.gpg
-----------------------
pub   4096R/4AABBCC7 2013-10-04
uid                  Home Nas Server (Home Nas Server Backup) <root@nas01>
sub   4096R/12345678 2013-10-04

您需要记下公钥4AABBCC7。

如何备份文件?

以下示例使用scp在cloud.example.com系统上将/home/theitroad /备份到~/backups

duplicity /home/theitroad/ scp://[email protected]/backups

从备份中排除文件

以下命令将备份/(整个根文件系统),但将从备份中排除/tmp,/proc,/nas,/jails和/mnt目录:

duplicity --exclude /tmp/ --exclude /proc/  --exclude /nas/ \
--exclude /jails/ --exclude /mnt/ / scp://[email protected]/backups

将文件包括在备份中

以下命令将使用--include选项仅备份根(/)文件系统下的/home /,/root /,/etc /和/var/spool/cron /目录:

duplicity --include /home/ --include /root --include /etc/ \
--include /var/spool/cron/ --exclude '**' / scp://[email protected]/backups

加密的备份命令

备份时,请加密到给定的公钥,而不要使用对称(传统)加密。
您需要按如下方式使用--encrypt-key选项。
要查找您的gpg键ID,请使用以下命令:

gpg --list-keys

完整备份重复性命令

要进行"完全加密的备份",请执行:

duplicity full --encrypt-key="4AABBCC7" /home/theitroad/ scp://[email protected]/backups

增量备份重复性命令

要进行"增量加密备份",请执行:

duplicity incr --encrypt-key="4AABBCC7" /home/theitroad/ scp://[email protected]/backups

列出存档中存储的文件

要查看存档中当前备份的文件,请执行:

duplicity list-current-files --encrypt-key="4AABBCC7" scp://[email protected]/backups

验证备份重复性命令

您可以使用以下命令验证备份:

duplicity verify --encrypt-key="4AABBCC7" scp://[email protected]/backups /home/theitroad

旋转备份重复性命令

您可以删除所有早于给定时间的备份集。
现在,假设您要保留60天的备份并删除60天之前的文件,请执行:

duplicity remove-older-than 60D --encrypt-key="4AABBCC7" --force scp://[email protected]/backups

传递" remove-all-but-n-full count"以删除所有比count:th最后的完整备份早的备份集。
换句话说,请保留最后一次完整备份和相关的增量集数)。
计数必须大于零。
值为1表示仅保留一个最新备份链。
注意,将需要选项--force来删除文件,而不仅仅是列出它们。

duplicity remove-all-but-n-full 10 --encrypt-key="4AABBCC7" --force scp://[email protected]/backups

恢复(恢复)上一个备份重复性命令

现在,假设您不小心删除了/home/theitroad /,并希望以上次备份时的方式还原它,请执行:

mkdir /home/theitroad/
duplicity --encrypt-key="4AABBCC7" scp://[email protected]/backups /home/theitroad/

恢复(恢复)特定的文件重复性命令

如果仅要将7天前的/home/theitroad /中的Documents/resume.doc文件还原到/home/theitroad/Documents中,请执行:

duplicity -t 7D --file-to-restore="Documents/resume.doc" --encrypt-key="4AABBCC7" scp://[email protected]/backups /home/theitroad/Documents

清理备份

您可以删除无关的重复文件。
非重复文件或完整数据集中的文件将不会被删除。
仅在重复会话失败或过早中止后才需要这样做。
请注意,将需要使用--force选项来删除文件,而不仅仅是列出它们:

duplicity cleanup --force --encrypt-key="4AABBCC7" scp://[email protected]/backups