Rsync的简单应用
在linux/Unix系统中为我们提供了众多的备份方式和备份命令,例如归档与压缩命令tar,gzip,文件系统/etc专用备份命令etckeeper,也有类似于git一类的管理备份,其次备份的方式也有多种,如全备份,差异备份和增量备份.本文中将介绍rsync备份和其工作原理.
什么是rsync
rsync:(remote synchronize),是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。 rsync是用 “rsync 算法”提供了一个客户机和远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件,这样其保密性也非常好,其次它还是免费的软件。
rsync 包括如下的一些特性:
能更新整个目录和树和文件系统;
有选择性的保持符号链链、硬链接、文件属于、权限、设备以及时间等;
对于安装来说,无任何特殊权限要求;
对于多个文件来说,内部流水线减少文件等待的延时;
能用rsh、ssh 或直接端口做为传输入端口;
支持匿名rsync 同步文件,是理想的镜像工具;
安装&配置
安装
在debian、ubuntu 等在线安装方法;
sudo apt-get install rsync
源码包安装 (附下载链接: https://rsync.samba.org/)
tar xvf rsync-xxx.tar.gz cd rsync-xxx ./configure --prefix=/usr ;make; sudo make install 注:在用源码包编译安装之前,您得安装gcc等编译开具才行;
配置
rsync的配置牵扯到三个主配置文件:rsyncd.conf(主配置文件)、rsyncd.secrets(密码文件)、rsyncd.motd(rysnc服务器信息),(该文件默认不存在,可手动创建),且其配置牵扯到源服务器和备份服务器,配置相对较为麻烦,文中提供一种简单的配置方法.
注释:具体的配置可参考:https://rsync.samba.org/
http://www.cnblogs.com/itech/archive/2009/08/10/1542945.html
命令: rsync [-rltptPg] source_files username@IP:/path/to/file
eg1:例如我们需要将172.19.2.18(主服务器)上的文件file1,file2,file3,目录dir1,dir2,dir3 备份到172.19.2.152:/work/backup下面,我们可以直接在172.19.2.18主机上执行如下命令:
rsync -r file* dir* scm@172.19.2.152:/work/backup
eg2:同eg1,现我们需要添加如下要求 忽略所有*.txt文件:
rsync -r file* dir* scm@172.19.2.152:/work/backup --exclude "*.txt"
eg3:同eg1,现我们需要添加如下要求,因2.18服务器上删除了dir1/filetest文件,为保证文件的一致性,在同步代码时也删除2.18上对应的文件:
rsync -r file* dir* scm@172.19.2.152:/work/backup --delete dir1/filetest
eg4:同2,添加定时任务,并保持文件原有属性和相关软链接,修改时间等相关信息. 服务端:
vim rsync_source.sh #!/bin/bash date1=$(date +%Y%m%d) cd /home/workplace/source rm rsync*.txt echo "Start rsync source code" >> ~/rsync_${date1}.txt rsync -rlptPg file* dir* file* dir* scm@172.19.2.152:/work/backup --exclude "*.txt" >> ./rsync_${date1}.txt echo "End rsync source code" >> ./rsync_${date1}.txt
保存退出,设置文件可执行权并创建定时任务.
chmod u+x rsync_source.sh crontab -e H 4 * * * ./home/workplace/source/rsync_source.sh \\ 每天早上4:00 执行任务
然后将2.18服务器下该账户家目录下的.ssh/id_rsa.pub公钥添加到2.152的.ssh/authorized_keys中即可
rsync语法&工作原理
(以下内容来自网络相关文章)
rsync中的参数:
-r 是递归
l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件;
-z 传输时压缩;
-P 传输进度;
-v 传输时的进度等信息,和-P有点关系,自己试试。可以看文档;
-e ssh的参数建立起加密的连接。
-u只进行更新,防止本地新文件被重写,注意两者机器的时钟的同时
–progress是指显示出详细的进度情况
–delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致
–password-file=/password/path/file来指定密码文件,这样就可以在脚本中使用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可
rsync有六种不同的工作模式:
拷贝本地文件,当SRC和DEST路径信息都不包含有单个冒号“:“分隔符时就启动这种工作模式.
使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器,当DEST路径地址包含单个冒号”:“分隔符时启动该模式.
使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器,当SRC地址路径包含单个冒号”:“分隔符时启动该模式.
从远程rsync服务器中拷贝文件到本地机,当SRC路径信息包含”::“分隔符时启动该模式.拷贝本地文件,当SRC和DES路径信息都不包含有单个冒号”:“分隔符时就启动这种工作模式.
从本地机器拷贝文件到远程rsync服务器中,当DEST路径信息包含”::“分隔符时启动该模式.
列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可.
rsync有很多功能选项,下面就对介绍一下常用的选项:
rsync [OPTION]… SRC [SRC]… [USER@]HOST:DEST
rsync [OPTION]… [USER@]HOST:SRC DEST
rsync [OPTION]… SRC [SRC]… DEST
rsync [OPTION]… [USER@]HOST::SRC [DEST]
rsync [OPTION]… SRC [SRC]… [USER@]HOST::DEST
rsync [OPTION]… rsync:[USER@]HOST[:PORT]/SRC [DEST]
- 点赞
- 收藏
- 关注作者
评论(0)