当前位置: 首页>>技术教程>>正文


使用SSH上的rsync作为最终备份工具

, ,

周围有许多备份工具,以及如何使用它们的许多方法。例如,可以使用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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10810.html,未经允许,请勿转载。