网络软件 系统工具 应用软件 图形图像 多媒体类 免费游戏 安全相关 免费音乐 网页素材 电子书籍 考试考题 建站源码
教育教学 多媒体类 编程开发 操作系统 游戏天地 娱乐天地 简历求职 站长专区 网页设计 安全技术 图形图像 文学驿站
业界资讯 | 图形图像 | 操作系统 | 网络冲浪 | 工具软件 | 办公软件 | 媒体动画 | 精文荟萃 | 认证考试 | 网页设计 | 技术开发 | 专栏
当前位置:热点网络学院操作系统Linux在Linux上进行自动备份(三)
精品推荐
热点TOP10
·Linux基础知识99问(四)
·制作 Linux 启动盘的四种方法
·在RedHat9上安装调试MRTG监控本机网卡流量
·Linux应用软件谈之远程桌面控制篇
·Linux下IDE CD-RW光盘刻录机安装手记
·Linux 单用户方式
·Linux下软件的基本安装和卸载
·Linux操作系统三则超酷技巧
·Linux/Unix环境下的Make和Makefile详解
·Linux基础知识99问(三)
·Linux中常见的日志文件和命令
·在Linux上进行自动备份(一)
·Linux与Windows谁更适合企业应用
·GCC编译器的使用
·检测 Linux 硬件状态
·在Linux上进行自动备份(二)
·学习Linux的七点忠告
·深入 Linux 的 LILO
·如何编写 Linux 设备驱动程序
·Linux环境中使用Ext3文件系统
在Linux上进行自动备份(三)
日期:2005年11月9日 作者: 查看:[大字体 中字体 小字体]
脚本化备份过程

我们的下一个任务是创建执行必要的备份过程的 shell 脚本。目标是执行服务器 1 和 2 的完全数据库备份。在我们的例子中,每个服务器都运行着 MySQL 数据库服务器,我们使用 mysqldump 命令行工具来将一些数据库表导出到一个 SQL 输入文件中。

清单 10. 服务器 1 的 dbbackup.sh shell 脚本

#!/bin/sh

# change into the backup_agent directory where data files are stored.
cd /home/backup_agent

# use mysqldump utility to export the sites database tables
mysqldump -u sitedb -pG0oDP@sswrd --add-drop-table sitedb --tables
tbl_ccode tbl_machine tbl_session tbl_stats > userdb.sql

# compress and archive
tar czf userdb.tgz userdb.sql

在服务器 2 上,我们将设置一个类似的脚本来备份站点数据库中给出的独有表单。每个脚本都通过下面的步骤标记为可执行的:
[server1]:$ chmod +x dbbackup.sh

在服务器 1 和 2 上设置了 dbbackup.sh 后,我们返回到离线的数据服务器,在那里我们将创建一个 shell 脚本来调用各个远程 dbbackup.sh 脚本并随后传输压缩的(.tgz)数据文件。

清单 11. 用在离线的数据服务器上的 backup_remote_servers.sh shell 脚本

#!/bin/sh

# use ssh to remotely execute the dbbackup.sh script on server 1
/usr/bin/ssh backup_agent@server1.com "/home/backup_agent/dbbackup.sh"

# use scp to securely copy the newly archived userdb.tgz file
# from server 1.  Note the use of the date command to timestamp
# the file on the offsite data server.
/usr/bin/scp backup_agent@server1.com:/home/backup_agent/userdb.tgz
/home/backups/userdb-$(date +%Y%m%d-%H%M%S).tgz

# execute dbbackup.sh on server 2
/usr/bin/ssh backup_agent@server2.com "/home/backup_agent/dbbackup.sh"

# use scp to transfer transdb.tgz to offsite server.
/usr/bin/scp backup_agent@server2.com:/home/backup_agent/transdb.tgz
/home/backups/transdb-$(date +%Y%m%d-%H%M%S).tgz

backup_remote_servers.sh shell 脚本使用 ssh 命令来执行远程服务器上的脚本。由于我们已经设置的无密码的访问,ssh 命令可以通过离线的服务器在服务器 1 和 2 上远程地执行命令。感谢 keychain,整个认证过程现在可以自动完成。

调度

我们的下一个步骤,也是最后一个步骤,是调度 backup_remote_servers.sh shell 脚本在离线的数据存储服务器上的执行。我们将向 cron 调度服务器中添加两个条目,以要求每天执行备份脚本两次,3:34 执行一次,8:34 再执行一次。在离线的服务器上使用 edit(-e)选项调用 crontab 程序。
[offsite]:$ crontab -e

crontab 调用 VISUAL 或 EDITOR shell 环境变量所指定的默认的编辑器。然后,输入两个条目并保存和关闭文件。

清单 12. 离线的服务器上的 Crontab 条目
34 3 * * * /home/backups/remote_db_backup.sh
34 20 * * * /home/backups/remote_db_backup.sh

一个 crontab 行包括两个主要部分,时间表部分和后面的命令部分。时间表分为多个域,用来指定一个命令应该何时执行:

清单 13. Crontab 格式

+---- minute
          +----- hour
          +------ day of the month
          +------ month
          +---- day of the week
          +-- command to execute
         
         34 3 * * * /home/backups/remote_db_backup.sh

检验您的备份

您应该对备份进行例行地检查,以确保程序正确进行。自动程序可以使烦琐的工作得到避免,但是永远不能因此而懒惰。如果您的数据值得备份,那么它也值得您时常进行抽样检查。

考虑添加一个 cron 作业来提醒您自己至少每个月对备份进行一次检查。另外,经常修改安全密钥也是一个好主意,同样您也可以调度一个 cron 作业来提醒您做这件事。

另外的安全防范

要获得更高的安全性,可以考虑在每台机器上安装并配置一个入侵检测系统(ntrusion Detection System,IDS),比如 Snort。可以预见,当入侵正在发生或者近期发生过时,IDS 将会通知您。IDS 到位后,您将可以添加其他层次上的安全,比如对您的备份进行数字签名和加密。

GNU Privacy Guard(GnuPG)、OpenSSL 和 ncrypt 等流行的开放源代码工具可以支持通过 shell 脚本对存档文件进行加密,不过不建议在没有 IDS 提供的额外层次保护的情况下这样做。

结束语

本文向您展示了如何让您的脚本在远程服务器执行以及如何执行安全自动的文件传输。我希望您能由此得到灵感而开始考虑保护您自己的重要数据,并使用 OpenSSH 和 Snort 等开放源代码工具来构建新的解决方案。

关于作者

Carlos Justiniano 是 Ecuity, Inc 的一名软件设计师。他所感兴趣的方面包括通信和分布式计算。Carlos 为很多技术杂志撰写文章。他还是基于 Linux 的 ChessBrain 项目的奠基人和设计师,那个项目赢得了与分布式计算相关的 2005 Guinness World Record。您可以通过 carlos.justiniano@ecuityinc.com 与他联系。

(出处:http://down.xmsc.com.cn/)

关于我们 | 帮助(?) | 版权声明 | 友情连接 
Copyright 2005-2005 xmsc.com.cn All Rights Reserved.
Powered by:mesky