rsync命令

rsync - remote synchronous(远程同步命令)

Rsync是一个快速的,功能相当强大的文件传输工具.它可以通过LAN/WAN快速同步多台主机之间的文件.它每次同步只同步两个文件不同的部分,因此传输速度很快.并且备份文档能保留源文档的权限、属主、属组、时间等属性.

rsync一共有6中命令格式

rsync [OPTION]... SRC DEST 
rsync [OPTION]... SRC [USER@]host:DEST 
rsync [OPTION]... [USER@]HOST:SRC DEST 
rsync [OPTION]... [USER@]HOST::SRC DEST 
rsync [OPTION]... SRC [USER@]HOST::DEST rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]

  对应于以上六种命令格式,rsync有六种不同的工作模式:

  • 拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。                                                                             
    rsync  -avz  /root/a/  /root/backup
  • 使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。            
    rsync  -avz  /root/a/  root@192.168.10.10:/root/backup
  • 使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。              
    rsync  -avz  root@192.168.10.10:/root/test/ /root/backup
  • 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。                                                                                      
    rsync  -avz  root@192.168.10.10::mymodule /root/backup
  • 从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。                                                                                   
    rsync  -avz  /root/backup/   root@192.168.10.10::mymodule 
  • 列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。                                                                                      
    rsync  -avz  rsync://192.168.10.10::mymodule
    

      


     

 

-t    --times  保持文件时间信息,将源文件的modify time同步到目标文件
-I    --ignore-times 不跳过那些有同样的时间和长度的文件。
-v    --verbose 详细模式输出。
-z    --compress 对备份的文件先压缩再传输
-r    --recursive 对子目录以递归模式处理。
-l    --links 保留软链接。
-p    --perms 保持文件权限
-g    --group 保持文件属组信息。
-o    --owner 保持文件属主信息。
-P    --partial 断点续传,保留那些因故没有完全传输的文件,以是加快随后的再次传输
-D    --devices 保持设备文件信息。
-a    --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
--delete              删除那些DST中SRC没有的文件
--exclude=PATTERN     指定排除不需要传输的文件模式 
--include=PATTERN     指定不排除而需要传输的文件模式
--exclude-from=FILE   排除FILE中指定模式的文件
--include-from=FILE   不排除FILE指定模式匹配的文件
--config=FILE         指定其他的配置文件,不使用默认的rsyncd.conf文件 
--port=PORT           指定其他的rsync服务端口
--progress            在传输时显示传输过程
--log-format=FORMAT   指定日志文件格式 
--password-file=FILE  从FILE中得到密码
-stats                给出某些文件的传输状态 

 

  sync服务器端的配置

在/etc/rsyncd目录下创建如下文件

touch /etc/rsyncd/rsyncd.conf          #主配置文件
touch /etc/rsyncd/rsyncd.passwd       #用户名密码文件,一组用户一行,用户名和密码使用 : 分割
touch /etc/rsyncd/rsyncd.motd          #非必须,连接上rsyncd显示的欢迎信息,此文件可不创建

必须注意的是,rsyncd服务的密码文件权限必须是600

chmod 600 /etc/rsyncd/rsyncd.secrets

编辑主配置文件 rsyncd.conf 

#    全局配置

# pid file 守护进程pid文件 # port 守护进程监听端口 # address 守护进程监听ip pid file = /usr/local/var/run/rsyncd.pid port = 873 address = 192.168.1.2 #rsyncd 守护进程运行系统用户全局配置,也可在具体的块中独立配置, uid = root gid = root #允许 chroot,提升安全性,客户端连接模块,首先chroot到模块path参数指定的目录下 #chroot为yes时必须使用root权限,且不能备份path路径外的链接文件 use chroot = yes #只读, 如果是yes的话,则不能从客户端同步到服务器端 read only = no #允许访问rsyncd服务的ip,ip端或者单独ip之间使用空格隔开
hosts allow = 192.168.10.10/255.255.255.0 192.162.11.1 182.11.11.1/255.255.255.0
#不允许访问rsyncd服务的ip,*是全部(不涵盖在hosts allow中声明的ip,注意和hosts allow的先后顺序) hosts deny = * #客户端最大连接数 max connections = 5 #欢迎文件路径,可选的 motd file = /etc/rsyncd/rsyncd.motd
#日志相关 # log
file 指定rsync发送消息日志文件,而不是发送给syslog,如果不填这个参数默认发送给syslog # transfer logging 是否记录传输文件日志 # timeout连接超时时间 log file = /usr/local/logs/rsyncd.log transfer logging = yes timeout = 300 # 模块配置(可配置多个) #模块 模块名称必须使用[]环绕,比如要访问data1,则地址应该是root@192.168.10.10::mymodule [mymodule] #模块根目录,必须指定 path = /home/username #是否允许列出模块里的内容 list = yes #忽略错误 #ignore errors #模块验证用户名称,可使用空格或者逗号隔开多个用户名 auth users = mymoduleuser1 #模块验证密码文件 可放在全局配置里 secrets file = /etc/rsyncd/rsyncd.passwd #注释 comment = some description about this moudle #排除目录,多个之间使用空格隔开 exclude = test1/ test2/

 配置密码文件 rsyncd.passwd

mymoduleuser1:abc123456

启动rsync服务

rsync --daemon --config=/etc/rsyncd.conf

  

客户端的配置

我们可以在客户端配置一份密码文件, 里面直接写密码就可以

比如说: mypwd.pwd

abc123456

然后就可以运行一下命令来备份文件

rsync -avz --delete --progress --password-file=/home/root/rsync.pwd  root@192.168.10.10::mymodule ~/backup

rsync 客户端自动与服务器同步数据

首先需要新建定时任务

crontab -e

然后写入

0 */1 * * * rsync -avz --delete --progress --password-file=/home/root/rsync.pwd root@192.168.10.10::mymodule  ~/backup

就可以实现每隔1小时自动备份

 

posted @ 2016-04-30 15:41  spxcds  阅读(248)  评论(0编辑  收藏  举报