linux 操作系统 认证 用户
一、Rsync
Rsync 是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据镜像同步备份的优秀工具。rsync 适用于 unix/linux/windows 等多种操作系统平台。
http://www.samba.org/ftp/rsync/rsync.html
Rsync 全称为 remoterynchronization,rsync 具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能类似于 scp 命令,但优于 scp。还可以在本地主机的不同分区或目录之间全量及增量的复制数据,这类似于 cp 命令,同样也优于 cp 命令。
rsync 还可以实现类似 rm 的删除功能
rsync 的特性
支持拷贝特殊文件如链接,设备等
可以有排除揸定文件或目录同步的功能,相当于打包命令 tar 的排除功能
可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变。
可实现增量同步,既只同步发生变化的数据,因此数据传输效率很高。
可使用 rcp,rsh,ssh 等方式来配合传输文件
可以通过 socket(进程方式) 传输文件和数据
支持匿名的或认证(无需系统用户)的进程模式传输,可实现主主便安装的进行数据备份及镜像
二、Rsync 命令同步参数选项
rsync [OPTION…] SRC… [DEST]
常用参数选项说明:
-v --verbose 详细模式输出,传输时的进度等信息
-z --compress 传输时进行压缩以提高传输效率
-r --recursive 对子目录以递归模式
-t --time 保持文件时间信息
-o --owner 保持文件属主信息
-p --perms 保持文件权限
-g --group 保持文件属组信息
-P --progress 显示同步过程及传输时的进度等信息
-a --archive 归档模式,等于 - rtopgDl
-D --devices 保持设备文件信息
-l --links 保留软链接
-e --rsh=COMMAND 使用的信协议,如 ssh
--exclude=PATTERN 指定排除不需要传输的文件模式
三、rsync 大致使用三种主要的传输数据的方式:
主机本地间的数据传输(此类似于 cp 命令的功能)
借助 rcp,ssh 等通道来传输数据(此类似于 scp 命令的功能)
以守护进程(socket)的方式传输数据(这个是 rsync 的重要的功能)
语法:rsync [OPTION…] SRC… [DEST]
1) rsync 为同步的命令
4) [DEST] 为目的分区、文件或目录等
实例 1:把系统的 hosts 文件同步到 / opt 目录
[[email protected] ~]# rsync /etc/hosts /opt
实例 2:把 opt 目录拷贝到 / mnt 下
[[email protected] ~]# rsync -avz /opt /mnt/
提示:在上面例子中,/opt / 和 / opt 仅差一个 / 意义就不大相同,/opt / 把 / opt / 目录里面的内容同步, opt 目录本身并不同步,而后者 / opt 表示把 opt 目录本身及里面的内容全都同步到 / tmp 下
通过远程 shell (rcp、ssh 等) 传输可以分为两种情况,其语法分别为
拉取 pull: rsync [OPTION…] [USER@]HOST:SRC… [DEST]
推送 push: rsync [OPTION…] SRC… [USER@]HOST:DEST
1)Rsync 为同步的命令
2) [OPTION..] 为同步时的参数选项
3)[USER@]HOST 为 Rsync 同步的远程连接用户和主机地址
4)SRC 为源分区、文件或目录等,和 HOST 之间用一个冒号连接
5)[DEST] 为目的分区、文件或目录等
其中拉取表示同远端主机把数据同步到执行命令的本地主机相应目录;推送表示从本地主机执行命令把本地的数据同步到远端主机指定目录下。 拉取实例:
rsync -avzP -e"ssh -p22" [email protected]:/opt /tmp
推送实例:
rsync -avzP /tmp-e "ssh -p22" [email protected]:/opt
语法说明:
1)-vzrtopg 相当于上文伯 - avz 表示同步时文件和目录属性不变
2)--progress 显示同步的过程,可以用 - P 替换
3)-e "ssh -p22" 表示通过 ssh 的通道传输数据
4)[email protected]:/opt 是远程的主机用户,地址和路径
5)/tmp 本地的路径
配置 ssh key 密钥实现数据免登陆验证
- [[email protected].ssh]# ssh-keygen -t dsa
- [[email protected].ssh]# ssh-copy-id -i id_dsa.pub 192.168.1.111
- #!/bin/sh
- . /etc/init.d/functions
- file="$1"
- remote_dir="$2"
- if [ $# -ne 2 ];then
- echo "usage:$0 argv1 argv2"
- echo "must have two argvs."
- exit
- fi
- for ip in $(cat /home/scripts/iplist.txt)
- do
- #scp -P22 -r -p $file root@$ip:~ >/dev/null 2>&1 && #ssh -p22 -t root@$ip sudo rsync ~/$file $remote_dir >/dev/null2>&1
- rsync -avzP $1 -e "ssh -p 22" root@$ip:$2 >/dev/null2>&1
- if [ $? -eq 0 ];then
- action "$ip is successful." /bin/true
- else
- action "$ip is failure." /bin/false
- fi
- done
来源: http://www.bubuko.com/infodetail-2111569.html