我安装了 Ubuntu 12.10,并运行 LAMP 堆栈来托管我托管的一个小站点。我需要设置一个系统,每周备份我所有站点所在的 /var/www 目录。最好的备份方法是什么?
答案1
rsync
可以做到这一点,还可以自动将时间戳附加到您的备份文件中。您还可以将 rsync 命令直接放入 cron 中。以每日备份为例:
@daily rsync -ab --suffix=_`date +%F` -R {server}:/var/wwww /home/backups/
(这假设您已经可以访问这台机器,并且 /home/backups/ 存在,并且您还需要将 {server} 更改为文件所在的系统)
评论中发布的链接以此为例,但有一个更好的方法最终结果:从 cron 使用的备份脚本。
答案2
最佳方法始终取决于个人喜好。我更喜欢使用 rdiff 或 rsync 而不是 ssh。如果您需要任何步骤的进一步帮助,请直接询问。此方法允许您将备份目标机器放置到内部网络,因此任何入侵您网站的人都无法访问您的备份。
- 在 www 服务器上设置备份帐户,为该帐户创建无密码的公钥 + 私钥 ssh。将公钥复制到 ~backup/.ssh/id_rsa.pub,不要将私钥留在该服务器上。
- 将备份帐户添加到 www 组(或运行 Apache 的帐户的主要组)。
- 修改 /etc/ssh/sshd_config 以允许加密密钥登录。
- 在目标机器上,设置备份帐户并将 id_rsa 和可选的 id_rsa.pub 复制到 ~backup/.ssh/
- 从备份目标机器测试连接并接受主机密钥:su backup; ssh backup@your-www-server。
- 创建备份脚本通过目标机器上的 cron 运行,下面是简单的示例。
- 根据您的喜好增强脚本(或找到更好的脚本,此脚本的唯一目的是为您提供想法)。此脚本将满足您的目标需求。
- 还要记得备份您的数据库(可能是 mysqldump?)和服务器配置。
#!/bin/bash
DATE=$(date -I)
FROMDIR=backup@your-www-server/var/www/
TODIR=/var/backup/your-www-server/${DATE}/
LOGDIR=/var/backup/your-www-server/log/
mkdir -p ${TODIR} ${LOGDIR}
rsync -av ${FROMDIR} ${TODIR} >${LOGDIR}/${DATE}.log 2>${LOGDIR}/${DATE}.err