我正在运行 WHM/cPanel,我想创建自己的备份方法,而不是 WHM 提供的备份方法。
我需要做的是备份每个用户的 public_html 目录(/home/username/public_html/)和 MySQL 信息,然后将它们原样传输到我的备份服务器(SSH 而不是 FTP)。
我只是不知道如何编写这样的脚本?或者已经有这样的脚本了?我不知道这是否难做还是容易做,所以有人可以给我一点帮助吗!:)
哦,我正在运行 CentOS 5.3 x86_64、Apache 2.2、PHP 5.2.11、cPanel 11.24.2(<- 不在备份服务器中)
感谢大家的帮助!
答案1
当然,有很多方法可以进行不费力的备份。您可以围绕 rsync 编写脚本,使用现有的基于 rsync 的备份系统(我使用 dirvish,但它可能超出了您的需要或愿意设置的范围),或者您可以使用 rdiff-backup(我们在工作中使用)之类的东西。我也听说过一些关于 backuppc 的好话。实际上有数百种备份系统;选择一个主要就像掷飞镖一样。
答案2
一些基本但容易出错的做法是:
#!/bin/bash
for i in `ls /path/to/public_html`; do
echo "Backing up ${i}"
tar -cjvf /path/to/backupfolder/${i}.tar.gz ${i}
scp /path/to/backupfolder/${i}.tar.gz username@backupserver:/backup/location/
rm /path/to/backupfolder/${i}.tar.gz
done;
为了备份每个 mysql 数据库,您可以执行以下操作:
#!/bin/bash
for i in `mysql -uroot -ppassword --batch -e "show databases" | grep -v "Database"`; do
mysqldump -uroot -ppassword --single-transaction ${i} > /path/to/dbbackup/${i}.sql
scp /path/to/dbbackup/${i}.sql username@backupserver:/backup/location/
rm /path/to/dbbackup/${i}.sql
done;
显然这不是最佳/安全的解决方案,也不包含任何时间戳信息。它还假设您在主机和备份计算机之间拥有公钥。
此外,我个人不会使用这种方法;)
答案3
首先,请描述为什么 cPanel 的备份方法对您来说不够用。这样我们才能更好地了解您的问题。
另外,我建议您研究现有的备份软件,而不是自己动手。有很多推荐的解决方案;例如 Areca 备份用于小型家庭备份,或 Amanda 用于大型安装,仅举几例;只需在此处或 Google 上查看即可。
也就是说,您可以使用大多数命令行 SFTP 工具(例如标准sftp
工具或curl
)编写 SFTP 传输脚本。尝试一下,如果有问题,请再次询问。