如何用在 CentOS 7 上的 Rsync 创建站点的离线备份
完全备份
完整备份通常执行以下操作:
- 把所有文件归档到一个文件夹中
- 将生成的存档复制到远程服务器。
第一步: 为你的网站创建一个备份文件
使用以下命令创建备份文件
mkdir -p /backup/mysite
第二步: 压缩站点目录
Tar 将在 initial_backup.tar.gz 文件中创建一个 gzip 归档文件。我们可以添加 v flag (得到 tar -czvf) 如果我们需要一个详细的输出(文件名列表)。
tar -czf /backup/mysite/initial_backup.tar.gz /var/www/samplewebsite
您可以在上面的命令中传递多个参数,用于在日期之后命名备份。
tar -czf /backup/mysite/backup-`date '+%m%d%y'`.tar.gz /var/www/samplewebsite
第三步: 计划备份
我们可以使用 cron
命令来安排备份
crontab -e
将以下代码行添加到文件中
30 3 * * * /bin/tar -czf /backup/mysite/backup-`date +\%m\%d\%y`.tar.gz /var/www/samplewebsite
上面的命令将告诉 linux 每天在 3:30 重复我们的命令。
将备份复制到另一个远程服务器
要将备份复制到另一台远程服务器,我们将使用 scp - secure copy。首先,我们需要生成一个 SSH 密钥:
ssh-keygen
将 SSH 密钥的公开部分复制到您想要在其中创建网站备份的远程服务器
scp .ssh/id_rsa_backup.pub [email protected]:/home/backup/backup_key.pub
上面的几个命令创建了一个目录供 SSH 使用(如果目录不存在),还创建了 authorized_keys 文件(需要提供该文件才能进行备份)。我们还创建了一个 backups 目录来存储文件。现在剩下的工作就是将我们的公钥复制到该文件中。
ssh [email protected] "cat /home/backup/backup_key.pub >> /home/backup/.ssh/authorized_keys"
让我们把备份文件复制到那边:
scp -i .ssh/id_rsa_backup /backup/mysite/backup-041713.tar.gz [email protected]:/home/backup/backups
使用 cron 命令自动执行备份
打开 cron 选项卡文件
crontab -e
粘贴以下代码
30 3 * * * /bin/tar -czf /backup/mysite/backup-`date +\%m\%d\%y`.tar.gz /var/www/samplewebsite;/usr/bin/scp -i /root/.ssh/id_rsa_backup /backup/mysite/backup-`date +\%m\%d\%y`.tar.gz [email protected]:/home/backup/backups
增量备份
当我们使用来自另一台服务器的软件在另一台服务器上执行备份时,增量备份就开始发挥作用了。 为此,我们使用 rsync 命令
下面的简单命令将执行增量备份
ssh [email protected] "mkdir -p /home/backup/sync" rsync -avz --delete -e "ssh -i /root/.ssh/id_rsa_backup" /var/www/samplewebsite [email protected]:home/backup/sync
使用 cron 命令自动化此操作
30 3 * * * /usr/bin/rsync -avz --delete -e "ssh -i /root/.ssh/id_rsa_backup" /var/www/samplewebsite [email protected]:/home/backup/sync
结论
备份你的网站是必要的,你可以遵循以上三种技术中的任何一种来安全地和容易地备份你的网站。该堆栈还执行离线备份以防止灾难,如果你正在寻找一个负担得起的 [可靠的专用服务器托管计划] (https://thestack.net/offerated -servers),请联系我们团队了解更多。