Linux下使用SSH、Crontab、Rsync三工具实现数据自动备份
作为网管人员大概都无一例外的经历过系统备份,尤其是重要系统的备份、重要数据库系统的备份工作。由于备份是个频繁而琐碎的工作,如何能把这个工作做得即简单又灵活呢?下面就来介绍在Linux下如何使用SSH和Crontab以及Rsync工具来进行数据的自动备份与同步。
一、SSH无密码安全登录
为什么要选择SSH 呢?SSH又是什么呢?可以说它是替代以前Telnet的远程登录工具,SSH的英文全称是Secure Shell。用户可以把所有传输的数据进行加密,这样即使网络中的黑客能够劫持用户所传输的数据,如果不能解密的话,也不能对数据传输构成真正的威胁。而且SSH的数据传输是经过压缩的,可以加快传输的速度,这就是SSH 目前能替代Telnet远程登录工具的原因。
   说到安全,SSH提供两种级别的安全验证,一种是基于口令的安全验证。只要用户知道自己账号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证用户正在连接的服务器就是用户想连接的服务器,可能会有别的服务器在冒充真正的服务器,这存在着潜在的威胁。一种是基于密匙的安全验证。需要依靠密匙, 也就是用户必须为自己创建一对公匙,密钥,并把公用密匙放在需要访问的服务器上。如果需要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求使用用户的密匙进行安全验证。服务器收到请求之后,先在服务器上用户的主目录下找到该用户的公用密匙,然后把它和用户发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”并把它发送给客户端软件。客户端软件收到“质询” 之后就可以用用户的私人密匙解密再把它发送给服务器。
下面做的就是利用第二种基于密匙的安全验证的登录,具体方法如下:
使用如下命令在需要备份的机器上创建一对公钥/密钥:
#ssh-keygen -t rsa
Generation public/private rsa key pair.
Enter file in which to save the key(/root/.ssh/id_rsa):
Enter passphrase(empty for no passphrase):
Enter same passphrase again:
Your identiflcation has been save in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_ras.pub.
The key fingerprint is:
c3:a0:de:f8:24:8e:f6:0d:ed:0a:b0:a2:2d:aa:d3:8b root@localhost.localdomain
这期间一直按回车即可,这样公匙/密钥就创建完毕。
使用如下命令把公匙传到需要备份的服务器上:
#ssh 192.168.1.2
#mkdir .ssh;chmod 0700 .ssh
远程登录到需要备份的服务器上并且创建.ssh目录。
#scp .ssh/id-rsa.pub 192.168.1.2 : .ssh/authorized_keys2
上述命令可以把公钥远程传过去。
这样一个SSH基于密匙的安全验证登录就简单的做完了,现在就可以从192.168.1.1直接用“ssh 192.168.1.2”无密码自动登录过去了,这样就简单而又安全的实现了自动登录目的, 可以为下面定时做备份打下前题。
二、定时数据同步
这里把定时触发和同步一起来简单介绍一下,Crontab是个能定时执行命令的一个工具, 它是用来让使用者在固定时间或固定间隔执行程式之用,下面就介绍一下这个命令的常用参数。
Crontab命令参数:
-e执行文字编辑器来设定时程表,内定的文字编辑器是VI,如果你想用别的文字编辑器,则请先设定VISUAL环境变数来指定使用那个文字编辑器(比如说setenvVISUALjce)。
-r删除目前的时程表。
-I列出目前的时程表。
Crontab时程表示格式如下:f1 f2 f3 f4 f5 command
其中,f1是表示分钟,f2表示小时,f3表示一个月份中的第几日,f4表示月份,f5表示一个星期中的第几天。Command表示要执行的命令。当f1为 时表示每分钟都要执行command,f2为*时表示每小时都要执行程式,其余类推。当f1为a-b时表示从第a分钟到第b分钟这段时间内要执行,f2为a-b时表示从第a到第b小时都要执行。当f1为*/n时表示每n分钟个时间间隔执行一次,f2为*/n表示每n小时个时间间隔执行一次,其余类推。当f1为a,b,C,......时表示第a,b,C,......分钟要执行,f2为a,b,C,...... 时表示第a,b,C,......个小时要执行,其余类推。当然也可以将要定时执行的命令存放在预备文档里,这里就得用crontab file的方式来设定时程表。
三、数据同步
现在来介绍一下如何让数据同步的一个工具,Rsync可以让数据同步,下面看一下一些Rsync的主要参数:
-V,--verbose 输出的信息;
-q,--quiet 安静模式,几乎没有信息产生.常用在以cron执行rsync;
-a,--archive archive mode权限保存模式,相当于-rlptgoD 参数;
-p,--perms 保留档案权限;
-O,--owner保留档案所有者(root only);
-g,--g rouP 保留档;案群;
-D,--devices 保留device 信息(root only);
-e,--h=COMMAND定义所使用的remote shell;
-4, --ipv4 使用IPv4协议;
-6, --ipv6 使用IPv6协议;
下面看一下如何通过SSH和Rsync工具组合使用方法:
#rsync -ave ssh 192.168.1.2:/home/ftp/pub/ /home/ftp/pub/
需要注意的是,源端目录名称末尾的/。在源说明中后缀/通知rsync复制该目录的内容,但不复制目录文件自身。要想把目录包含在要复制内容的最顶层就要去掉/;
使用SSH传输rsync流量具有下述优点, 可通过网络加密数据,而且速度非常快,使用SSH客户端密钥建立的任何信任关系。如果要在两台计算机之间保持大型、复杂目录结构的同步性(尤其是两者间的差异很小时), 那么rsync就是一种使用起来极为方便(并且执行速度很快)、随心所欲的工具。
#crontab -e
0 17 * * 1-5 rsync -ave ssh 192.168.1.2:/my /my
上面的操作"crontab-e"命令是编辑定时启动脚本,然后在周一到周五的每天下午5点执行SSH远程自动登录然后把192.168.1.2的/my目录下的所有东西同步到本地的/my目录下,这样就达到了自动数据同步备份的目的了。

本文出自 “李晨光原创技术博客” 博客,谢绝转载!

Linux下使用SSH、Crontab、Rsync三工具实现数据自动备份的更多相关文章

  1. Linux下的暴力密码在线破解工具Hydra安装及其组件安装-使用

    Linux下的暴力密码在线破解工具Hydra安装及其组件安装-使用 hydra可以破解: http://www.thc.org/thc-hydra,可支持AFP, Cisco AAA, Cisco a ...

  2. Linux下简单粗暴使用rsync实现文件同步备份【转】

    这篇来说说如何安全的备份,还有一点不同的是上一篇是备份服务器拉取数据,这里要讲的是主服务器如何推送数据实现备份. 一.备份服务器配置rsync文件 vim /etc/rsyncd.conf #工作中指 ...

  3. Windows和Linux下实现ssh免密登录

    ------------恢复内容开始------------ SSH是一种通讯协议,可以实现远程安全登录.可以通过如putty.MobaXterm等工具通过ssh安全登录到虚拟机进行操作. Opens ...

  4. linux下开启SSH,并且允许root用户远程登录,允许无密码登录

    参考:http://blog.csdn.net/jia0511/article/details/8237698 1. 允许root用户远程登录 修改ssh服务配置文件 sudo vi /etc/ssh ...

  5. linux下查看当前用户的 三个命令

    linux下查看当前用户的 三个命令 1,whoami; 2,id -un; 3,who -H  可以列出当前所有的    NAME (用户名)    LINE (窗口列表)    TIME(开启时间 ...

  6. ssh-keygen+ssh-copy-id 在linux下实现ssh无密码登录访问(转)

    转自:http://blog.csdn.net/pennyliang/article/details/8556662 ssh-keygen+ssh-copy-id 在linux下实现ssh无密码登录访 ...

  7. linux 下的ssh免密登陆设置

    一,原理 说明: A为linux服务器a B为linux服务器b 每台linux都有ssh的服务端和客户端,linux下的ssh命令就是一个客户端 我们常用ssh协议来进行登陆或者是文件的拷贝,都需要 ...

  8. Linux下查看磁盘挂载的三种方法

    Linux下查看磁盘挂载的三种方法 2009-06-05 23:17 好久没有更新日志了,呵呵.不是没有要写的东东.实在抽不出时间来写,要准备公司的考试呢,C++考试.已经有七个月没有写C++代码了, ...

  9. (总结)Linux下的暴力密码在线破解工具Hydra详解

    (总结)Linux下的暴力密码在线破解工具Hydra详解 学习了:https://blog.csdn.net/yafeichang/article/details/53502869

随机推荐

  1. Java基础学习(三) -- OOP的三大特征、向上和向下转型、内部类之详解

    面向对象编程(OOP)的三大特征 什么是封装? (1) 把对象的状态和行为看成一个统一的整体,将二者存放在一个独立的类中; (2) "信息隐藏", 把不需要让外界知道的信息隐藏起来 ...

  2. theano import error (win10 python2.7)

    因为项目需要,在win10-64位电脑上配置theano.但是一直有 import error的错误,找不到解决方法.作为一个python新手,实在搞不定,请大家不吝赐教!小女子不胜感激! 按照网上的 ...

  3. NetBios, NetBios over TCP/IP, SMB 之间的关系

    首先提到的是NetBios,NetBios是Network Basic Input/Output System的缩写,提供了一种允许局域网内不同电脑能够通信的功能.严格来说,NetBios是一套API ...

  4. 洛谷P2196 && caioj 1415 动态规划6:挖地雷

    没看出来动规怎么做,看到n <= 20,直接一波暴搜,过了. #include<cstdio> #include<cstring> #include<algorit ...

  5. 【Codeforces Round #462 (Div. 1) A】 A Twisty Movement

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] ans初值值为a[1..n]中1的个数. 接下来考虑以2为结尾的最长上升子序列的个数. 枚举中间点i. 计算1..i-1中1的个数c ...

  6. hihoCoder #1127 : 二分图二·二分图最小点覆盖和最大独立集

    #1127 : 二分图二·二分图最小点覆盖和最大独立集 Time Limit:10000ms Case Time Limit:1000ms Memory Limit:256MB 描述 在上次安排完相亲 ...

  7. Select For update语句浅析

    Select -forupdate语句是我们经常使用手工加锁语句.通常情况下,select语句是不会对数据加锁,妨碍影响其他的DML和DDL操作.同时,在多版本一致读机制的支持下,select语句也不 ...

  8. JavaScript语言基础3

     JavaScript能够处理一些来自于现实世界的数据类型.比如:数字和文本. 同一时候JavaScript中也包括了一些具 有抽象性质的数据类型.比如对象数据类型. JavaScript它是一种弱类 ...

  9. uva 104 Arbitrage (DP + floyd)

    uva 104 Arbitrage Description Download as PDF Background The use of computers in the finance industr ...

  10. hdoj-1164-Eddy&#39;s research I【分解质因数】

    Eddy's research I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...