rsync、ssh备份
Linux系统需求
为了实现这个备份程序,需要准备一个外部驱动器。您可以将备份写到一个外部USB磁盘,但这样做效率不高。因此,我假设您将备份写到位于网络某处的服务器中。这台服务器要为带有SSH和rsync的一台Linux服务器(任何Linux发行版都可以)。
除了一个备份介质,您还需要rsync。这个多用途的同步工具是所有Linux发行版上的一个默认组件。正如其名称所示,它会帮助您进行文件的远程同步。但是,它不执行增量或者差异备份。为了防止本地硬件驱动器崩溃,而想将数据存到别处时,这个工具就可以发挥作用。您也可以调整备份步骤,去进行增量和差异备份,但这不是本文的目的。
现在,就很容易对我们备份方案的基本内容进行理解了。Rsync需要与远程服务器进行通讯并将数据写入该服务器。Rsync实现这一点所采用的默认机制是SSH。您可以不这么做,但是几乎在所有的Linux机器上,SSH都可用,所以您可以正好使用这个工具。下面的命令给出了rsync命令的一个例子:
rsync -rau --progress /data 192.168.1.98:/data
通过这个命令,rsync开始对本地目录/data和服务器192.168.1.98上目录/data上的内容进行同步。到服务器的连接是通过当前用户账户来建立的。这意味着,如果您是本地工作站上一个叫linda的用户,那么您就会以linda这个账户来连接远程机器。而如果您是root用户,那么您就会作为root用户进行连接。不过要确保您有足够的权限去读源目录的内容,并对服务器上的目标目录进行写入。其次,rsync命令使用了一些参数。--progress参数会显示rsync命令的进度,-rau参数会确保对一切的同步,包括文件里的元数据。
在发出该命令之后,您本地目录/data里面的内容会跟服务器上/data目录的内容进行同步。但是,这个命令的缺点是您必须进行手动输入,而手动输入则意味着您可能会忘记。所以我们需要通过创建一个cron任务来让其自动工作。cron的问题在于建立与服务器的连接,已经连接到了服务器上的SSH守护进程,而该进程会要求提供一个密码。可选的解决办法之一,是使用公私钥对SSH进行配置来让过程自动化。
配置自动SSH登录
使用公/私钥的思路是,在您的工作站上,创建一个密钥对,一个公钥和一个私钥。接下来,将公钥拷贝到服务器的~/.ssh/authorized_keys文件中(~指的是当前用户的主目录)。下次,当您在工作站上启动一个SSH命令时,它会首先自动尝试通过您的公或私钥对进行连接。工作站使用私钥生成一个加密包,如果服务器可以进行解密,工作站就可以100%的确认您的身份,而您就可以不输入密码而得到认证。要创建此配置,应该执行以下过程:
- 在工作站上,使用ssh-keygen –t dsa命令,并只按Enter,以接受所有的默认回答。这样,系统会产生一个名为~/.ssh/id_dsa的文件,该文件为您的私钥,以及一个~/.ssh/id_dsa.pub文件,作为您的公钥。
- 现在,使用ssh-copy-id命令将公钥拷贝到您服务器的主目录中。下面的命令会帮助您实现这个目的:
ssh-copy-id -i ~/.ssh/id_dsa.pub 192.168.1.98
通过使用这个命令,在服务器上创建了一个.ssh/authorized_keys文件,并允许您通过公/私钥对进行登陆。
在执行这些步骤之后,您现在可以通过下列的命令登陆到远程服务器:
ssh 192.168.1.98
可以看到,现在您能不输入密码就进行登陆了。
使用cron安排备份计划
现在,您知道您必须要使用什么命令,SSH也已经被设置好,以让您自动登录,您需要告诉计算机每天都去自动同步数据。为了帮助您做到这一点,可以在您的工作站上使用cron,该工具是另外一个在所有的Linux发行版中都使用的默认组件。为了给您的当前账户创建一个cron任务,您可以使用crontab –e命令。开启vi或者joe这样的crontab编辑器。在编辑器中,输入下列命令:
0 10 * * * rsync -rau /data 192.168.1.98:/data
正如您所看到的,在crontab文件中,输入的命令与我们之前使用过的rsync命令是一样的。唯一的不同是:--progress参数被省略了。因为cron是作为一个背景任务来运行的,没有连接到计算机上的任何终端,所以没法向您展示进度。
在实际的命令运行之前,您需要告诉cron什么时候去执行该命令。为了做到这一点,在例子命令行里,我使用了0 10 ***。在cron中,当一个任务需要去执行时,会使用5个位置去指示时间。通过使用上面的命令,会在每天的上午10运行该任务。切记,在第1个位置使用0去指定任务要运行的确切分钟数。如果忘了,从10:00到10:59,该任务会一直在运行。
到这里,我们已经对如何去建立一个基本但有效的备份程序进行了全部的介绍。虽然还有许多其它的解决方案,但本文介绍的方案是其中少有的几个简单而有效的方案之一。而且相对于一人公司和家庭用户最普遍的备份程序:完全没有备份而言,它永远是更有效的。
http://blog.csdn.net/kl222/article/details/5401163
rsync、ssh备份的更多相关文章
- 开源服务专题之-------rsync数据备份
RSYNC是Remote Sync 远程同步的简称,与SCP的比较,SCP= 无法备份大量数据,类似windows的复制,而rsync=边复制 ,边统计,边比较,可以备份大量数据.可以镜像保存整个目录 ...
- Rsync数据备份工具
Rsync数据备份工具 1.Rsync基本概述 rsync是一款开源的备份工具,可以在不同主机之间进行同步(windows和Linux之间 Mac和 Linux Linux和Linux),可实现全量备 ...
- (转)rsync数据备份方案
rsync数据备份方案 原文:http://blog.51cto.com/irow10/1826458 最近整理了下公司的数据备份情况.以下是部分操作的过程 1.rsync数据备份,具体备份过程就不详 ...
- 十七.rsync+SSH同步
1. rsync同步操作 • 命令用法 – rsync [选项...] 源目录 目标目录 • 同步与复制的差异 – 复制:完全拷贝源到目标 – 同步:增量拷贝,只传输变化过的数据 • rsyn ...
- Service系统服务(六):rsync基本用法、rsync+SSH同步、配置rsync服务端、访问rsync共享资源、使用inotifywait工具、配置Web镜像同步、配置并验证Split分离解析
一.rsync基本用法 目标: 本例要求掌握远程同步的基本操作,使用rsync命令完成下列任务: 1> 将目录 /boot 同步到目录 /todir 下 2> 将目录 /boot 下的 ...
- 5、rsync全网备份
定时备份rsync(增量备份,无差异备份,daemon进程)+crontab,主要备份一些任务脚本和配置文件,如果此时有用户增加数据, 如果是增量备份的话不会备份下来,因为在备份的那一刻,数据已经被锁 ...
- day10、nfs+rsync全网备份及实时同步
题目要求 注意:博主使用的系统为: [root@web01 ~]# uname -a Linux web01 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29 ...
- rsync 定时备份<crontab+backrsync.sh> 简陋版
数据需要定时的备份至其它的目录中,但是备份之前检查检查一下是否有rsync正在运行,曾经因为数据过大,导致有很多rsync进程在跑,然后服务器有出现卡死的现象.最终写了一条bash,先检查一下是否有这 ...
- rsync数据备份
scp远程复制 scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令. 命令格式: scp local_file remote_username@ ...
随机推荐
- ubuntu FTP服务安装
//安装vsftp apt-get install vsftpd -y //增加账号 //1 查找 nologin位置 /usr/sbin/nologin useradd -d /alidata/ww ...
- html 中的name,id ,value,class,list 作用与区别
name: 单独一个网页中,一个控件是否设置name不会影响这个网页功能的实现.当我们需要把这个控件 所关联的数据传递到数据库时,就必须设置name属性,否则这个值是没办法传到服务器保存的: id: ...
- PHP去除Notice警告提示
最近刚接触PHP,开发过程中可能会遇到Notice: Use of undefined ……这样的警告提示,可能是代码写的不太规范, 有两种解决途径:关闭 PHP 提示的方法, 搜索php.ini:e ...
- HTML5的绘图的支持
一.简单介绍canvas元素 <canvas.../>是HTML5新增的一个元素,该元素用于绘制图形.实际上<canvas../>只是相当于一张画布. 它除了可以指定通用属性外 ...
- scala io,ubuntu常见配置
Ubuntu的scala环境配置 配置scala环境变量同时需要配置java的环境变量 配置方法: 1.先下载linux的相应版本的jdk与scala的二进制压缩包并解压. 解压方法: 先到jdk ...
- 关于eclipse(64位)下aptana插件安装报错问题解决
最近一直没有写过js,换了新电脑以后,eclipse下的aptana插件也没有装过,这几天要写js想重新把aptana装上,但是不知怎的,link方式.在线安装方式还有离线包下载下来利用eclipse ...
- js 调用 android 安卓 代码
说明一下注意版本问题,不加没效果的 @JavascriptInterface //sdk17版本以上加上注解 //Html调用此方法传递数据 public void show() { Toast.ma ...
- poj 3501 Escape from Enemy Territory 预处理+二分+bfs
传送门 给一个起点一个终点, 给出整个地图的宽和高, 给出n个敌人的坐标. 让你找到一条路径, 这条路径上的点距离所有敌人的距离都最短, 输出最短距离. 首先预处理出来地图上的所有点到敌人的最短距离, ...
- hdu 3572 Escape 网络流
题目链接 给一个n*m的图, 里面有一些点, '.'代表空地, '#'代表墙, 不可以走, '@'代表大门, 可以有多个, 'X'代表人, 问所有人都走出大门需要的最短时间, 每一时刻一个格子只能有一 ...
- js传参java接收乱码解决方案
js传参处理 encodeURI(encodeURI(name)); java接收处理 URLDecoder.decode(request.getParameter("name") ...