Linux系统--使用SSH、Crontab、Rsync三工具实现数据自动备份
作为网管人员大概都无一例外的经历过,尤其是重要的、重要库系统的备份工作。由于备份是个频繁而琐碎的工作,如何能把这个工作 做得即简单又灵活呢?下面就来介绍在Linux下如何使用SSH和Crontab以及Rsync来进行的自动备份与同步。
一、SSH无密码安全登录
SSH (Secure Shell) 可以把所有传输的数据进行加密,即使网络中的黑客能够劫持用户所传输的数据,如果不能解密的话,也不能对数据传输构成真正的威胁。而且SSH的数据传输是 经过压缩的,可以加快传输的速度,这就是SSH目前能替代Telnet的原因。
SSH具有两种级别的安全验证:
1. 基于口令的安全验证。只要用户知道自己账号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证用户正在连接的服务器就是用户想连接的服务器,可能会有别的服务器在冒充真正的服务器,这存在着潜在的威胁。
2. 基于密匙的安全验证。需要依靠密匙,也就是用户必须为自己创建一对公匙,密钥,并把公用密匙放在需要访问的服务器上。如果需要连接到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
这期间一直按回车即可,这样公匙/密钥就创建完毕。
使用如下命令把公匙传到需要备份的服务器上:
#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 制定计划任务
-u 指定做计划任务的用户
-e 编辑计划任务
-r 删除目前的时程表
-l 列出目前的时程表
格式: f1 f2 f3 f4 f5 program
f1 分钟
f2 小时
f3 表示一个月份中的第几日
f4 表示月份
f5 表示一个星期中的第几天
a. 当 f1 为 * 时表示每分钟都要执行
b. 当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行
c. 当 f1 为 */n 时表示每间隔n分钟执行一次
d. 当 f1 为 a, b... 时表示第 a, b, ... 分钟要执行
在 12 月内, 每天的早上 6 点到 12 点中,每隔 20 分钟执行一次 /usr/bin/backup :
*/20 6-12 * 12 * /usr/bin/backup
周一到周五每天下午 5:00 寄一封信给 :
0 17 * * 1-5 mail -s "hi" < /tmp/maildata
三、数据同步
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流量具有下述优点:
1. 可通过网络加密数据,而且速度非常快,使用SSH客户端密钥建立的任何信任关系。
2. 如果要在两台计算机之间保持大型、复杂目录结构的同步性(尤其是两者间的差异很小时),是一种使用起来极为方便(并且执行速度很快)、随心所欲的工具。
五、使用SSH、Crontab、Rsync三工具实现数据自动备份
0 17 * * 1-5 rsync -ave ssh 192.168.1.2:/my /my
上面的操作"crontab-e"命令是编辑定时启动脚本,然后在周一到周五的每天下午5点执行SSH远程自动登录然后把192.168.1.2的/my目录下的所有东西同步到本地的/my目录下,这样就达到了自动数据同步备份的目的了。
- 最新评论