周围有许多备份工具,以及如何使用它们的许多方法。例如,可以使用gzip和ftp制作网站的本地副本。这种方法对我们有一些弊端:数据未经加密就通过Internet传输,而我们最有可能传输前一天复制的数据。
为了解决未加密的传输问题,我们可以代替FTP使用scp。但是,这次的传输时间将更长,因为scp会为我们的备用Internet连接创建加密隧道产生额外的开销。要停止传输重复数据,我们可以使用rsync。如果将rsync与ssh,compression,bash和cron结合使用,则最终可以得到最终的备份工具。
让我们使用rsync,ssh,压缩和cron调度程序创建简单但功能强大的备份解决方案:
无密码的SSH
此时,我们需要创建无密码的ssh登录。这样,我们可以避免在备份时输入密码。这样,我们可以使整个备份过程完全自动化。请按照本教程来ssh无需密码即可登录到服务器。
rsync安装
如果尚未这样做,请以root用户身份安装rsync工具:
对于Ubuntu,Debian输入为:
# apt-get install rsync
还有Fedora,RHEL和CentOS:
# yum install rsync
进行数据库备份
如果您的网站使用的是MySQL等数据库,我们首先需要进行数据库备份。因此。我们的备份bash脚本以以下几行开头:
#!/bin/bash # create database backup /usr/bin/ssh This email address is being protected from spambots. You need JavaScript enabled to view it. document.getElementById('cloak1cd558bbd7326ed2ba3478d794e1dccc').innerHTML = ''; var prefix = 'ma' + 'il' + 'to'; var path = 'hr' + 'ef' + '='; var addy1cd558bbd7326ed2ba3478d794e1dccc = 'user' + '@'; addy1cd558bbd7326ed2ba3478d794e1dccc = addy1cd558bbd7326ed2ba3478d794e1dccc + 'server' + '.' + 'remote'; var addy_text1cd558bbd7326ed2ba3478d794e1dccc = 'user' + '@' + 'server' + '.' + 'remote';document.getElementById('cloak1cd558bbd7326ed2ba3478d794e1dccc').innerHTML += ''+addy_text1cd558bbd7326ed2ba3478d794e1dccc+''; '( mysqldump --password='pass' \ mydatabase > ~/public_html/mywebsite/mydatabase.sql )'
此时,脚本将通过ssh远程执行mysqldump命令,以将数据库备份存储在网站的根目录中。远程目录备份接下来,我们将添加一个rsync行,以完全复制我们的远程〜/public_html /mywebsite /目录:
#!/bin/bash # create database backup /usr/bin/ssh This email address is being protected from spambots. You need JavaScript enabled to view it. document.getElementById('cloakd5c791255df0f8f06bcd86d97be7ed9f').innerHTML = ''; var prefix = 'ma' + 'il' + 'to'; var path = 'hr' + 'ef' + '='; var addyd5c791255df0f8f06bcd86d97be7ed9f = 'user' + '@'; addyd5c791255df0f8f06bcd86d97be7ed9f = addyd5c791255df0f8f06bcd86d97be7ed9f + 'server' + '.' + 'remote'; var addy_textd5c791255df0f8f06bcd86d97be7ed9f = 'user' + '@' + 'server' + '.' + 'remote';document.getElementById('cloakd5c791255df0f8f06bcd86d97be7ed9f').innerHTML += ''+addy_textd5c791255df0f8f06bcd86d97be7ed9f+''; '( mysqldump --password='pass' \ mydatabase > ~/public_html/mywebsite/mydatabase.sql )' /usr/bin/rsync -zave ssh --delete\ This email address is being protected from spambots. You need JavaScript enabled to view it. document.getElementById('cloakda3784373e2b758f1cb72a02cdc5eea6').innerHTML = ''; var prefix = 'ma' + 'il' + 'to'; var path = 'hr' + 'ef' + '='; var addyda3784373e2b758f1cb72a02cdc5eea6 = 'user' + '@'; addyda3784373e2b758f1cb72a02cdc5eea6 = addyda3784373e2b758f1cb72a02cdc5eea6 + 'server' + '.' + 'remote'; var addy_textda3784373e2b758f1cb72a02cdc5eea6 = 'user' + '@' + 'server' + '.' + 'remote';document.getElementById('cloakda3784373e2b758f1cb72a02cdc5eea6').innerHTML += ''+addy_textda3784373e2b758f1cb72a02cdc5eea6+''; :~/public_html/mywebsite /backup/local-copy
此时,脚本将创建〜/public_html /mywebsite远程目录的本地副本,并将其存储在/backup /local-copy中。 –delete选项将确保从本地目录中删除所有文件,这些文件不再存在于远程源目录中,从而使两个目录保持完全同步。 rsync的-z选项可确保在传输期间进行压缩。
我们准备测试新的备份脚本:
$ chmod 700 backupscript.sh
$ ./backupscript.sh
使用crontab进行备份
如果一切顺利,我们可以安排每天在02:00使用rsync运行此备份脚本。用以下命令打开rsync编辑器
$ crontab -e
并添加以下行以每天凌晨2点启动此脚本:
00 02 * * * /path/to/backupscript.sh