linux备份:省时省力—在 Linux 上进行自动备份




  重要数据丢失可能意味着致命破坏尽管如此还是有无数专业人员忽视了对他们数据备份虽然原因可能各不相同但是最常见个解释是执行例行备份确实烦琐由于机器擅长于完成普通而重复任务因此自动化备份过程是降低工作内在枯燥性和人们和生俱来拖延倾向关键所在
  
  如果您使用 Linux那么您就已经可以使用那些创建定制备份解决方案极其强大工具本文中方案可以让您使用几乎每个 Linux 发行版本都附带开放源代码工具来执行从简单到更高级而且网络备份
  
  简单备份
  本文按照思路方法来进行讲述只要您遵循那些基本步骤此思路方法会是非常直观
  
  在研究更高级分布式备份解决方案的前让我们首先来看个简单而强大存档机制让我们来分析个名为 arc 方便脚本它可以让我们在 Linux shell 提示符中创建备份快照
  
  清单 1. arc shell 脚本
  
  #!/bin/sh
  tar czvf $1.$(date +%Y%m%d%-H%M%S).tgz $1
  exit $?
  
  arc 脚本接收个单独文件或目录名作为参数创建个压缩存档文件同时将当前日期嵌入到生成存档文件名字的中例如如果您有个名为 beoserver 目录您可以 arc 脚本将 beoserver 目录名传递给它以创建个压缩存档文件如: beoserver.20040321-014844.tgz
  
  使用 date 命令是为了嵌入个日期和时间戳以帮助您组织存档文件日期格式是年、月、日、小时、分、秒 —— 虽然秒域使用有些多余查看 data 命令手册( man date)来了解其他选项另外在清单 1 中我们向 tar 传递了 -v(verbose)选项这就使得 tar 显示出它正在存档文件如果您喜欢静默地进行备份那么删除这个 -v 选项
  
  清单 2. 存档 beoserver 目录
  
  $ ls
  arc beoserver
  $ ./arc beoserver
  beoserver/
  beoserver/bookl.dat
  beoserver/beoserver_ab_off
  beoserver/beoserver_ab_on
  $ ls
  arc beoserver beoserver.20040321-014844.tgz
  
  高级备份
  这个简单备份是实用;不过它仍然包含个人工备份过程行业最佳经验通常建议将数据备份到多个媒体上并备份到分开区别地理位置中心思想是避免依赖于任何个单独媒体或单独位置
  
  在下个例子中我们将应对这挑战我们将分析个如图 1 所示假想分布式网络它展示了对两台远程和台离线系统管理
  
  
图 1. 分布式网络

  
>

  服务器 #1 和 #2 上备份文件将地传输到离线存储服务器上而且整个分布式备份过程将在没有人工干涉情况下定期进行我们将使用组标准工具(开放安全 shell 工具套件(OpenSSH)部分)以及磁带存档器(tar)和 cron 任务调度服务我们全部计划是使用 cron 进行调度使用 shell 和 tar 应用完成备份过程使用 OpenSSH 安全 shell(ssh)加密进行远程访问、认证、安全 shell 拷贝(scp)以自动完成文件传输要获得另外资料请务必查看每个工具手册
  
  使用公钥/私钥进行安全远程访问
  在数字安全上下文中密钥(key)指是用来加密或解密其他数据片断个数据片断公钥私钥模式有趣的处在于使用公钥加密数据只有用相应私钥才可以解密您可以自由地发布个公钥这样别人就可以对发送给您消息进行加密公钥/私钥模式彻底改变了数字安全原因的发送者和接收者不必再共享个通用密码除了其他方面贡献公钥/私钥加密使用电子商务和其他安全传输成为可能在本文中我们将创建并使用公钥和私钥来创建个非常安全分布式备份解决方案
  
  要进行备份过程每台机器都必须运行 OpenSSH 安全 shell 服务(sshd)同时让 22 端口可以通过任何内部被访问如果您访问远程服务器那么很有可能您正在使用安全 shell
  
  我们目标将是不需要人工提供密码就可以安全地访问机器些人认为最简单办法是设置无密码访问:不要这样做这样做不安全不用那样本文中我们将使用思路方法可能会占用您大约个小时时间建立起个和使用“无密码”帐号同样方便系统 —— 不过它是公认非常安全
  
  让我们首先确保 OpenSSH 已经安装接下来查看它版本号完成本文时最新发行 OpenSSH 是 2004 年 2 月 24 日发布版本 3.8您应该考虑使用个较新而且稳定发布版本至少所用版本应该要比版本 2.x 新访问 OpenSSH Security 网页以获得有关特定旧版本缺陷细节(请参阅本文后面 参考资料 中链接)到目前为止OpenSSH 是非常稳定而且已经证明不存在其他 SSH 工具所报告很多缺陷
  
  在 shell 提示符中输入 ssh 并给出重要 V 选项来检查版本号:
  
  $ ssh -V
  OpenSSH_3.5p1, SSH protocols 1.5/2.0, OpenSSL 0x0090701f
  
  如果 ssh 返回版本号大于 2.x则机器处于相对良好状态无论如何建议您所有软件Software都使用最新稳定版本这对于安全相关软件Software来说尤其重要
  
  我们个步骤是使用将会有特权访问服务器 1 和 2 帐号登录到离线存储服务器机器(见图 1)
  
  $ ssh accountname@somedo.com
  
  登录到离线存储服务器以后使用 ssh-keygen 并给出 -t dsa 选项来创建个公钥/密钥对 -t 选项是必须用来指定我们要生成密钥类型我们将使用数字签名算法(Digital Signature AlgorithmDSA)它让我们可以使用更新 SSH2 参阅 ssh-keygen 手册以获得更多细节
  
  在 ssh-keygen 执行过程中在询问您口令(passphrase)的前将提示您输入 ssh 密钥存储位置当询问在何处存储密钥时只需要按下回车键然后 ssh-keygen 将创建个名为 .ssh 隐藏目录(如果原来不存在)以及两个文件个公钥文件和个私钥文件
  
  ssh-keygen 个有趣特性是当提示输入个口令时它让您可以只是简单地按下回车键如果您没有给出口令那么 ssh-keygen 将生成没有加密密钥!如您所想这不是个好主意当要求输入口令时确保输入个足够长消息最好包含混合而不仅仅是个简单密码
  
  清单 3. 永远选择好口令
  
  [offsite]:$ ssh-keygen -t dsa
  Generating public/private dsa key pair.
  Enter file in which to save the key (/home/accountname/.ssh/id_dsa):
  Enter passphrase (empty for no passphrase): (enter passphrase)
  Enter same passphrase again: (enter passphrase)
  Your identication has been saved in /home/accountname/.ssh/id_dsa.
  Your public key has been saved in /home/accountname/.ssh/id_dsa.pub.
  The key fingerpr is:
  7e:5e:b2:f2:d4:54:58:6a:fa:6b:52:9c:da:a8:53:1b accountname@offsite
  
  
  
  由于 ssh-keygen 生成 .ssh 目录是个隐藏“dot”目录所以要给 ls 命令传入个 -a 选项来查看新创建目录:
  
  [offsite]$ ls -a
  . .. .bash_logout .bash_profile .bashrc .emacs .gtkrc .ssh
  
  进入隐藏 .ssh 目录并列出其内容:
  
  [offsite]$ cd .ssh
  [offsite]$ ls -lrt
  id_dsa id_dsa.pub
  
  现在在隐藏 .ssh 目录中我们已经拥有了个私钥(id_dsa)和个公钥(id_dsa.pub)您可以使用 vi 或 emacs 等文本编辑工具或者简单地使用 less 或 cat 命令来分析每个密钥文件内容您将看到由混合构成内容已经经过了 base64 编码
  
  然后我们需要将公钥拷贝并安装到服务器 1 和 2 上不要使用 ftp更合理使用安全拷贝来将公钥传送到每台远程机器上
  
  清单 4. 将公钥安装到远程服务器上
  
  [offsite]$ scp .ssh/id_dsa.pub [email protected]:offsite.pub
  [email protected]'s password: (enter password, not
  passphrase!)
  id_dsa.pub 100% |*****************************| 614 00:00
  
  [offsite]$ scp .ssh/id_dsa.pub [email protected]:offsite.pub
  [email protected]'s password: (enter password, not
  passphrase!)
  id_dsa.pub 100% |*****************************| 614 00:00
  
  在安装完新公钥后我们就可以使用创建私钥和公钥时指定口令来登录到每台机器现在登录到每台机器并将 offsite.pub 文件内容附加到个名为 authorized_keys 文件中这个文件存储在每台远程机器 .ssh 目录下我们可以使用个文本编辑器或者简单地使用 cat 命令来将 offsite.pub 文件内容附加到 authorized_keys 文件:
  
  清单 5. 将 offsite.pub 添加到已授权密钥列表
  
  [offsite]$ ssh [email protected]
  [email protected]'s password: (enter password, not
  passphrase!)
  [server1]$ cat offs
Tags:  linux系统备份策略 linux备份工具 linux系统备份 linux备份

延伸阅读

最新评论

发表评论