Rsync的简单应用

举报
烟花易冷 发表于 2018/12/27 22:50:39 2018/12/27
【摘要】 在linux/Unix系统中为我们提供了众多的备份方式和备份命令,例如归档与压缩命令tar,gzip,文件系统/etc专用备份命令etckeeper,也有类似于git一类的管理备份,其次备份的方式也有多种,如全备份,差异备份和增量备份.本文中将介绍rsync备份和其工作原理.什么是rsync  rsync:(remote synchronize),是一款实现远程同步功能的软件,它在同步文件...

在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中的参数:

  1. -r 是递归

  2. l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件;

  3. -z 传输时压缩;

  4. -P 传输进度;

  5. -v 传输时的进度等信息,和-P有点关系,自己试试。可以看文档;

  6. -e ssh的参数建立起加密的连接。

  7. -u只进行更新,防止本地新文件被重写,注意两者机器的时钟的同时

  8. –progress是指显示出详细的进度情况

  9. –delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致

  10. –password-file=/password/path/file来指定密码文件,这样就可以在脚本中使用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可


rsync有六种不同的工作模式:

  1. 拷贝本地文件,当SRC和DEST路径信息都不包含有单个冒号“:“分隔符时就启动这种工作模式.

  2. 使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器,当DEST路径地址包含单个冒号”:“分隔符时启动该模式.

  3. 使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器,当SRC地址路径包含单个冒号”:“分隔符时启动该模式.

  4. 从远程rsync服务器中拷贝文件到本地机,当SRC路径信息包含”::“分隔符时启动该模式.拷贝本地文件,当SRC和DES路径信息都不包含有单个冒号”:“分隔符时就启动这种工作模式.

  5. 从本地机器拷贝文件到远程rsync服务器中,当DEST路径信息包含”::“分隔符时启动该模式.

  6. 列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可.


rsync有很多功能选项,下面就对介绍一下常用的选项:

  1. rsync [OPTION]… SRC [SRC]… [USER@]HOST:DEST

  2. rsync [OPTION]… [USER@]HOST:SRC DEST

  3. rsync [OPTION]… SRC [SRC]… DEST

  4. rsync [OPTION]… [USER@]HOST::SRC [DEST]

  5. rsync [OPTION]… SRC [SRC]… [USER@]HOST::DEST

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


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。