Linux命令之文件同步 定时备份-rsync,cron,crontab

本文发布时间: 2019-Mar-22
一、rsync介绍(可忽略)Rsync(remote synchronize)是一个远程文件同步工具;Rsync使用“Rsync算法”来同步文件,该算法只传送两个文件的不同部分,因此速度相当快;Rsync是替代rcp的一个工具,目前由rsync.samba.org维护,因而rsync.conf文件的格式类似于samba的主配置文件;Rsync可通过rsh或ssh使用,也能以daemon模式运行,以daemon方式运行时,Rsync Server会打开一个873端口等待客户端连接.连接时,Rsync Server会检查口令是否相符,若口令相符,则进行文件传输.第一次会把整份文件传输一次,以后则为增量传输;Rsync支持大多数的类Unix系统(Linux、Solaris、BSD等);此外,在windows平台也有相应的版本,如cwRsync和Sync2NAS等工具;二、rsync安装(可忽略)Linux发行版默认已经安装rsync工具,如果想自行安装,可以参考如下安装步骤:#官网 http://rsync.samba.org/ 上下载 rsync-3.1.0.tar.gztar -zxvf rsync-3.1.0.tar.gzcd rsync-3.1.0./configure -prefix=/opt/app/rsyncmakemake install#此时,安装完成,需将 /opt/app/rsync/bin 增加到PATH中;三、rsync 一般使用命令行使用rsync的语法$ rsync <dir_name> <remote_ip>:<dir_name> 【实际使用中,根据不同的情况使用下面的格式】#同步文件夹到远程$ rsync -avI dir_name remote_ip:dir_name #同步文件夹到远程,传输时进行压缩$ rsync -avzI dir_name remote_ip:dir_name #同步文件夹到远程(保持严格同步,即本地删除,远程也同步删除)$ rsync -avzI –-delete dir_name remote_ip:dir_name #排除指定的文件或目录,可多次使用,支持通配符(比如.svn、.git等目录)$ rsync -avzI --exclude=/a/b/*.svn --exclude=/a/b/*.git dir_name remote_ip:dir_name #当排除的文件较多时,可将文件写到某文件中,同时使用 --exclude-from 指定该文件即可。$ rsync -avzI --exclude-from=/a/exclude_file_list.txt dir_name remote_ip:dir_name 以上使用的选项说明如下:-a, --archive 归档模式,等于-rlptgoD;-r, --recursive 递归模式;-l 保持符号连接;-p 保持文件原有权限;-t 保持文件原有修改时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D -devices -specials,保持块设备文件和特殊文件; -I 强制扫描,放弃“quick check”策略(quick check策略,通过查看文件的时间戳和文件大小,先排除一批认为相同的文件[rsync不会对文件夹本身做“quick check”]);-z, --compress 压缩,默认的压缩算法和gzip一样;-v, --verbose 显示进度详细信息;-q, --quiet 精简输出模式;-R, --relative 保持全路径;--progress 显示传输进度(百分百);--delete 本地删除某一文件,远程也同步的删除该文件,保持严格的一致(不加该参数,则表示只增不减);--exclude="*.tmp" 排除某些文件;--exclude-from=FILE 排除FILE中指定模式的文件;--port=PORT 指定其他的rsync服务端口; 注意:就路径格式而言,如果源路径末尾使用/,则rsync会将源路径尾端目录中的所有内容复制到目的端;如果没有使用/,rsync会将源路径尾端目录本身复制到目的端。$ rsync -av /home/test/ /home/backup; #将test目录中的内容备份;$ rsync -av /home/test /home/backup; #将test目录本身备份;如果目的路径末尾使用/,则rsync会将来自源端的内容复制到目的端的目录中;如果没有使用/,则rsync会在目的端路径尾部创建一个和目的端尾部目录同名的目录,并将源端内容复制到该目录中。$ rsync -av /home/test /home/backup/; #将源端内容复制到backup目录中;$ rsync -av /home/test /home/backup; #在/home/backup创建下级目录backup,并将源端内容复制到/home/backup/backup目录中; 该部分内容参考:http://roclinux.cn/?p=2643四、rsync结合crontab实现定时备份关于crontab的介绍和简单使用,可参考另一篇博文:http://blog.csdn.net/wangjunjun2008/article/details/19497803#创建crontab定时任务,调用rsync命令进行定时备份:$ crontab -e0 1 * * * rsync -avzI dir_name remote_ip:dir_name#每晚1点进行数据备份注意:需要建立本地服务器和远程服务器的信任,以便于实现免登录操作(相关内容可参考http://blog.csdn.net/wangjunjun2008/article/details/20037101)五、rsync高级用法(使用rsyncd服务进行定时备份)使用crontab的方式实现定时备份虽然可行,但却不是正统的方法;规范、流行的rsync定时备份方案是使用rsyncd服务实施定时备份策略.(此部分没有深入学习,未完待续)六、定时备份不能完成的任务定时备份虽好,却不能完成全部的备份任务:假如需要实时同步一些数据(即任意时间点,本地数据的改变,都能及时同步到远程服务器),使用定时备份的话,会存在”时间差”(即在这个时间段内,数据不同步),解决此类问题的方法是:结合 inotify 工具来实现实时备份策略。 (关于inotify的介绍和使用,会在其他博文中介绍,未完待续)


(以上内容不代表本站观点。)
---------------------------------
本网站以及域名有仲裁协议。
本網站以及域名有仲裁協議。

2024-Mar-04 02:10pm
栏目列表