本文
![](/icons/2465de.gif)
下
![](/icons/2465yi.gif)
个任务是创建 shell 脚本来执行必要
![](/icons/2465de.gif)
备份过程
![](/icons/2465dou2.gif)
它
![](/icons/2465de.gif)
目标是对服务器 #1 和 #2 进行完全
![](/icons/2465de.gif)
数据库备份
![](/icons/2465dou2.gif)
在本文
![](/icons/2465de.gif)
举例中
![](/icons/2465dou.gif)
各服务器都运行 MySQL 数据库服务器
![](/icons/2465dou.gif)
我们将使用 mysqldump 命令行实用工具将
![](/icons/2465yi.gif)
些数据库表导出到
![](/icons/2465yi.gif)
个 SQL 导入文件中
清单 10. 服务器 #1
![](/icons/2465de.gif)
dbbackup.sh shell 脚本
#!/bin/sh
# change
![](/icons/2465int.gif)
o 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 上
![](/icons/2465dou.gif)
我们将设置
![](/icons/2465yi.gif)
个类似
![](/icons/2465de.gif)
脚本来备份站点数据库中给出
![](/icons/2465de.gif)
独有表单
![](/icons/2465dou2.gif)
每个脚本都通过下面
![](/icons/2465de.gif)
步骤标记为可执行:
[server1]:$ chmod +x dbbackup.sh
在服务器 #1 和 #2 上都有了 dbbackup.sh 文件的后
![](/icons/2465dou.gif)
我们返回到离线数据服务器
![](/icons/2465dou2.gif)
在那里
![](/icons/2465dou.gif)
我们将创建
![](/icons/2465yi.gif)
个 shell 脚本来
![](/icons/2465diaoyong.gif)
各个远程 dbbackup.sh 脚本
![](/icons/2465dou.gif)
然后传输压缩
![](/icons/2465de.gif)
(.tgz)数据文件
清单 11. 离线数据服务器上使用
![](/icons/2465de.gif)
shell 脚本 backup_remote_servers.sh
#!/bin/sh
# use ssh to remotely execute the dbbackup.sh script _disibledevent=>调度
本文
![](/icons/2465de.gif)
下
![](/icons/2465yi.gif)
个也是最后
![](/icons/2465yi.gif)
个任务是
![](/icons/2465dou.gif)
调度离线数据存储服务器上
![](/icons/2465de.gif)
shell 脚本 backup_remote_servers.sh
![](/icons/2465de.gif)
执行
![](/icons/2465dou2.gif)
我们将给 cron 调度服务器添加两个条目
![](/icons/2465dou.gif)
以要求每天对脚本备份两次
![](/icons/2465dou.gif)
![](/icons/2465yi.gif)
次在凌晨 3:34
![](/icons/2465dou.gif)
另
![](/icons/2465yi.gif)
次在晚上 8:34
![](/icons/2465dou2.gif)
在离线服务器上使用编辑选项(-e)
![](/icons/2465diaoyong.gif)
crontab
![](/icons/2465chengxu.gif)
![](/icons/2465dou2.gif)
[offsite]:$ crontab -e
crontab
![](/icons/2465diaoyong.gif)
默认编辑器
![](/icons/2465dou2.gif)
默认编辑器使用 shell 环境变量 VISUAL 或 EDITOR 来指定
![](/icons/2465dou2.gif)
下面键入两个条目
![](/icons/2465dou.gif)
保存并关闭该文件
清单 12. 离线服务器上
![](/icons/2465de.gif)
crontab 条目
34 3 * * * /home/backups/remote_db_backup.sh
34 20 * * * /home/backups/remote_db_backup.sh
![](/icons/2465yi.gif)
个 crontab 行包括两个主要部分
![](/icons/2465dou.gif)
即时间调度部分及其后接
![](/icons/2465de.gif)
命令部分
![](/icons/2465dou2.gif)
时间调度被划分为字段
![](/icons/2465dou.gif)
用于介绍说明命令应该在何时执行:
清单 13. Crontab 格式
+---- minute
| +----- hour
| | +------ day of the month
| | | +------ month
| | | | +---- day of the week
| | | | | +-- command to execute
| | | | | |
34 3 * * * /home/backups/remote_db_backup.sh
="atitle">检验您
![](/icons/2465de.gif)
备份
应该对备份进行例行检查
![](/icons/2465dou.gif)
以保证备份过程工作正常
![](/icons/2465dou2.gif)
自动备份过程能够去除不必要
![](/icons/2465de.gif)
枯燥工作
![](/icons/2465dou.gif)
但是不应因此而变得懒惰
![](/icons/2465dou2.gif)
如果数据值得备份
![](/icons/2465dou.gif)
那么它也值得您时常进行抽样检查
![](/icons/2465dou2.gif)
考虑添加 cron 作业来提醒自己每月至少检查
![](/icons/2465yi.gif)
次备份
![](/icons/2465dou2.gif)
此外
![](/icons/2465dou.gif)
每隔
![](/icons/2465yi.gif)
段时间修改
![](/icons/2465yi.gif)
次安全密钥也是个好主意
![](/icons/2465dou.gif)
也可以调度
![](/icons/2465yi.gif)
个 cron 作业来提醒自己及时更改安全密钥
![](/icons/2465dou2.gif)
="atitle">
="atitle">额外
![](/icons/2465de.gif)
安全措施
为了加强安全
![](/icons/2465dou.gif)
可以考虑在所有机器上安装和配置入侵检测系统(IDS)
![](/icons/2465dou.gif)
例如 Snort
![](/icons/2465dou2.gif)
当入侵正在发生或者最近曾发生过
![](/icons/2465dou.gif)
IDS 将会通知用户
![](/icons/2465dou2.gif)
使用 IDS
![](/icons/2465dou.gif)
还能够添加其他级别
![](/icons/2465de.gif)
安全性
![](/icons/2465dou.gif)
例如对备份进行数字签名和加密
![](/icons/2465dou2.gif)
流行
![](/icons/2465de.gif)
开源工具(比如 GNU Privacy Guard (GnuPG)、OpenSSL 和 ncrypt)都支持通过 shell 脚本保护归档文件
![](/icons/2465dou.gif)
但是本文不建议在没有 IDS 提供
![](/icons/2465de.gif)
额外防护级别
![](/icons/2465de.gif)
情况下这样做(有关 Snort
![](/icons/2465de.gif)
更多信息
![](/icons/2465dou.gif)
请参阅 参考资料)
="atitle">结束语
本文展示了如何在远程服务器上执行脚本
![](/icons/2465dou.gif)
以及如何进行安全和自动化
![](/icons/2465de.gif)
文件传输
![](/icons/2465dou2.gif)
我希望您能由此得到灵感而开始考虑保护您自己
![](/icons/2465de.gif)
重要数据
![](/icons/2465dou.gif)
并使用 OpenSSH 和 Snort 等开放源代码工具来构建新
![](/icons/2465de.gif)
解决方案
延伸阅读
最新评论