1, 这是我的自动备份数据库 SHELL 脚本, 它将在 VPS 服务器上运行, 导出数据库后压缩成包, 然后通过 scp 命令将压缩包备份到另一台服务器( x4100 ) 中.
#!/bin/bash D="/root/backup" T=`date +%Y%m%d` if [ ! -d "${D}/${T}" ]; then /bin/mkdir "${D}/${T}" fi /usr/local/mysql/bin/mysqldump --host=localhost --user=root --password=数据库密码 要备份的数据库名 > "${D}/${T}/${T}.sql" cd ${D} /bin/tar -czf "${D}/${T}.tar.gz" "${T}" /usr/bin/scp "${D}/${T}.tar.gz" kuco@x4100.unix-center.net:~/web_backup/studyday.net
2, 设置 Crontab , 更多的 crontab 介绍在这里
crontab -e 30 04 * * * /bin/sh /root/backup/web_backup.sh
3, 可能会遇到的问题:
在 STEP 1 中 scp 远程复制命令时会遇到输入密码的提示, 如果没有密码输入, 会导致复制不成功. 通过百度找到了解决的办法. 1, 在 VPS 服务器上的 ~/.ssh/ 目录下生成密钥文件: mkdir -p ~/.ssh ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa 2, 在 x4100 服务器上配置: mkdir -p ~/.ssh touch ~/.ssh/authorized_keys 3, 将 VPS 服务器的 ~/.ssh/id_rsa.pub 内容追加到 x4100 服务器的 ~/.ssh/authorized_keys 里面 这样就可能在调用 scp 命令时没有密码输入提示了.