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

一、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.gz

tar -zxvf rsync-3.1.0.tar.gz

cd rsync-3.1.0

./configure -prefix=/opt/app/rsync

make

make 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 -e

0 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的介绍和使用,会在其他博文中介绍,未完待续)

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

时间: 2024-08-24 14:17:08

Linux命令之文件同步、定时备份 -rsync,cron,crontab的相关文章

Linux&&Windows文件同步简单配置[rsync]

1.Windows to Windows 1.1.所需软件:cwRsyncServer_4.1.0_Installer.zip 1.2.安装: 解压后,直接双击安装 此步骤为设置同步的帐户和密码,该步骤会在操作系统层面创建一个用户:SvcCWRSYNC.当然,我们也可以修改这个用户,自己设置密码,都可以. 但是Windows下面可以不设置,全部默认即可. 1.3.配置服务端 编辑文件:rsyncd.conf use chroot = false strict modes = false host

shell脚本—根据文件个数定时备份

最近在了解Jenkins时,出现这样一个问题:linux ext3系统目录下的子目录个数不能超过31998个(参考:http://www.xshell.net/linux/1267.html),但jenkins在不停的编译版本时,有时候几个小时就创建了30000多个日志文件夹的目录,从而要随时的清理此文件夹下的目录.于是就写了个脚本来实现自动备份功能.由于很久没有接触过shell,所以花了一天来实现,比较汗颜!主要是对shell的格式,语法之类的不是很了解,在网上找了些资料,边写边调试!废话不多

linux命令---查找文件中的内容

linux命令---查找文件中的内容 [[email protected] ~]$ cat 1.txt |egrep '123456789|second'-------匹配123456789或者second的行 first line:123456789012345678901234567890123456789012345678901234567890 second line:one two three four five six seven eight nine ten [[email pro

Linux命令:修改文件权限命令chmod、chgrp、chown详解

Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权 限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容,而禁止对其做任何的更改操作.可执行权限表示允许将该文件作为一个程序执行.文 件被创建时,文件所有者自动拥有对该文件的读.写和可执行权限,以便于对文件的阅读和修改.用户也可根据需要把访问权限设置为需要的任何组合. 有三种不同类型的用户可对文件或目录进行访问:文件所有者,同组用户.其他用户.所有者一般是文

linux命令之——文件搜索命令

linux命令之——文件搜索命令 文件搜索命令:find 命令所在路径: /bin/find 执行权限 : find [搜索范围][匹配条件] 功能描述: 文件搜索 $find /etc -name init???  (相当于模糊搜素    *init*         *匹配任意字符   ?匹配单个字符) 在目录/etc中查找文件init -iname不区分大小写 $find / -size +204800 在根目录下查找大于100M的文件 +n 大于 -n 小于 n 等于 $find /ho

每天迈一步:linux命令查找文件

linux命令查找文件 有的文件很久不用就忘记名字了,只有一个模糊的印象,此时查找文件命令就显得尤其重要!相对于windows来说,linux提供了更强大的查找命令. (这里仅仅掌握一下常用的,因此不详细解释了~~~~) 1. find 命令格式: find <指定目录> <选项> <参数>  <指定动作> <指定目录> :一般是默认目录 <选项><参数> : -name    按照文件名查找 -iname   根据文件名

Linux命令之文件实时备份 -incron,rsync,inotify

一.rsync.incron简介 关于rsync工具的介绍和使用,以及其结合cron工具实现定时备份的功能,可参考博文:http://blog.csdn.net/wangjunjun2008/article/details/38658539; inotify 是一种文件变化通知机制,Linux内核2.6.13(2005/06/18)版本开始引入; inotify仅仅是一个API,需要通过开发应用程序进行调用; inotify-tools则是inotify的一种实现,它是一套组件,包括一个C库和几

linux下基于rsync + find命令实现文件同步机制

rsync和find是linux系统自带的命令,如果没有安装可以找到系统安装盘或者ISO文件,里面有rpm包,安装一下就可以了. 具体思路如下: 1)可以实现定时进行rsync.系统定时任务可以搞定这个事,具体可参见下面的网址: 例如: #crontab -e   0 17 * * 1-5 rsync -ave ssh 192.168.0.103:/my /my http://fenglingcorp.iteye.com/blog/1286102  2)可实现按指定文件夹同步数据.使用rsync

[rsync]——rsync文件同步和备份

实验环境 (1) Rsync服务器:10.0.10.158 (2) Rsync客户端:10.0.10.173 Rsync服务器端的配置 1. 安装xinetd和rsync # yum install xinetd # yum install rsync 2. 创建配置目录和文件 # mkdir /etc/rsync 该目录下包含3个文件: rsyncd.conf           # rsync主配置文件 rsyncd.secrets      # 密码文件 rsyncd.motd