在Linux上进行自动备份:轻松进行自主、安全、分布式网络备份
到现在为止,我们已经了解了几个 OpenSSH 程序(ssh、scp、ssh-agent 和 ssh-add),而且我们已经创建并安装了私钥和公钥来启用一个安全而且自动的登录过程。您可能已经意识到,大部分设置工作只需要进行一次。例如,创建密钥、安装密钥、通过 .bash_profile 执行 ssh-agent 的过程在每台机器只需要进行一次。那真是好消息。 不太理想的消息是,每次登录离线服务器的时候都必须调用 ssh-add,而且,ssh-agent 与我们将要用来自动化备份工作的 cron 调度进程并不直接兼容。cron 进程不能与 ssh-agent 通信的原因是,cron 作业是作为 cron 的子进程来执行,这样它们就不会继承 $SSH_AUTH_SOCK。 幸运的是,有一个解决方案不仅消除了有关 ssh-agent 和 ssh-add 的限制,而且可以让我们使用 cron 来自动进行各种需要对其他机器进行安全地无密码访问的过程。Daniel Robbins 于 2001 年在 developerWorks 发表了一个包含三部分的系列 OpenSSH key management(参阅 参考资料 中的链接),其中提供了一个称为 keychain 的 shell 脚本。它是 ssh-add 和 ssh-agent 的前端,可以简化整个无密码过程。从那时起,这个 keychain 脚本经过了多次改进,现在由 Aron Griffis 维护,目前最新版本是 2004 年 6 月 17 日发布的 2.3.2-1 版本。 keychain shell 脚本太大了,本文不方便列出来,因为这个精心编写的脚本中包括了很多错误检测、丰富的文档以及非常多的跨平台代码。不过,keychain 可以从项目的 Web 站点上方便地下载得到(参见 参考资料 中的相关链接)。 在下载并安装之后,keychain 脚本使用起来非常简便。只需登录每台机器并向 .bash_profile 文件添加下面两行代码: keychain id_dsa . ~/.keychain/$HOSTNAME-sh 在您第一次重新登录到每台机器时,keychain 将要求您输入密码短语。不过,除非机器被重新启动,否则,以后再登录时,keychain 将不再要求您重新输入密码短语。最好的是,cron 任务现在可以使用 OpenSSH 命令来安全地访问远程计算机,而不需要交互地使用密码短语。现在我们能够同时获得更好的安全性和易用性。 清单 9. 在每台计算机上初始化 keychain KeyChain 2.3.2; http://www.gentoo.org/projects/keychain 脚本化备份过程 本文的下一个任务是创建 shell 脚本来执行必要的备份过程。它的目标是对服务器 #1 和 #2 进行完全的数据库备份。在本文的示例中,各服务器都运行 MySQL 数据库服务器,我们将使用 mysqldump 命令行实用工具将一些数据库表导出到一个 SQL 导入文件中。 清单 10. 服务器 #1 的 dbbackup.sh shell 脚本 #!/bin/sh (编辑:应用网_镇江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |