Loading... <h2>Rsync介绍</h2> rsync 可以实现全量及增量的本地或远程数据同步备份的优秀工具。 一个rsync相当于scp,cp,rm ,但是还优于他们每一个命令。 rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。 rsync的特性 支持拷贝特殊文件如链接文件,设备等。 可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。 可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变。 可以实现增量同步,即只同步发生变化的数据,因此数据传输效率很高。 可以使用rcp,rsh,ssh 等方式配合传输文件。(rsync本身对数据不加密) 可以通过socket(进程方式)传输文件和数据。 支持匿名的或认证的进程模式传输,可实现方便安全的进行数据备份及镜像。 <h3>语法</h3> rsync [OPTION]... SRC DESTrsync [OPTION]... SRC [USER@]<span class="external-link"><a class="no-external-link" href="http://man.linuxde.net/host" target="_blank">host<i data-feather='external-link'></i></a></span>:DESTrsync [OPTION]... [USER@]HOST:SRC DESTrsync [OPTION]... [USER@]HOST::SRC DESTrsync [OPTION]... SRC [USER@]HOST::DESTrsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST] 对应于以上六种命令格式,rsync有六种不同的工作模式: <ol> <li>拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。如:rsync -a /data /backup</li> </ol> 2.使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。如:rsync -avz *.c foo:src 3.使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。如:rsync -avz foo:src/bar /data 4.从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。如:rsync -av root@192.168.78.192::www /databack 5.从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。如:rsync -av /databack root@192.168.78.192::www 6.列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://192.168.78.192/www <h2>rsync的选项:</h2> <em> </em> <em>-v, --verbose </em><em>详细模式输出。</em> <em>-q, --quiet </em><em>精简输出模式。</em> <em>-c, --checksum </em><em>打开校验开关,强制对文件传输进行校验。</em> <em>-a, --archive </em><em>归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。</em> <em>-r, --recursive </em><em>对子目录以递归模式处理。</em> <em>-R, --relative </em><em>使用相对路径信息。</em> <em>-b, --backup </em><em>创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。</em> <em>--backup-dir </em><em>将备份文件(如~filename)存放在在目录下。</em> <em>-suffix=SUFFIX </em><em>定义备份文件前缀。</em> <em>-u, --update </em><em>仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件,不覆盖更新的文件。</em> <em>-l, --links </em><em>保留软链结。</em> <em>-L, --copy-links </em><em>想对待常规文件一样处理软链结。</em> <em>--copy-unsafe-links </em><em>仅仅拷贝指向SRC路径目录树以外的链结。</em> <em>--safe-links </em><em>忽略指向SRC路径目录树以外的链结。</em> <em>-H, --hard-links </em><em>保留硬链结。</em> <em>-p, --perms </em><em>保持文件权限。</em> <em>-o, --owner </em><em>保持文件属主信息。</em> <em>-g, --group </em><em>保持文件属组信息。</em> <em>-D, --devices </em><em>保持设备文件信息。</em> <em>-t, --times </em><em>保持文件时间信息。</em> <em>-S, --sparse </em><em>对稀疏文件进行特殊处理以节省DST的空间。</em> <em>-n, --dry-run</em><em>现实哪些文件将被传输。</em> <em>-w, --whole-file </em><em>拷贝文件,不进行增量检测。</em> <em>-x, --one-file-system </em><em>不要跨越文件系统边界。</em> <em>-B, --block-size=SIZE </em><em>检验算法使用的块尺寸,默认是700字节。</em> <em>-e, --rsh=command </em><em>指定使用rsh、ssh方式进行数据同步。</em> <em>--rsync-path=PATH </em><em>指定远程服务器上的rsync命令所在路径信息。</em> <em>-C, --cvs-exclude </em><em>使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件。</em> <em>--existing </em><em>仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件。</em> <em>--delete </em><em>删除那些DST中SRC没有的文件。</em> <em>--delete-excluded </em><em>同样删除接收端那些被该选项指定排除的文件。</em> <em>--delete-after </em><em>传输结束以后再删除。</em> <em>--ignore-errors </em><em>及时出现IO错误也进行删除。</em> <em>--max-delete=NUM </em><em>最多删除NUM个文件。</em> <em>--partial </em><em>保留那些因故没有完全传输的文件,以是加快随后的再次传输。</em> <em>--force </em><em>强制删除目录,即使不为空。</em> <em>--numeric-ids </em><em>不将数字的用户和组id匹配为用户名和组名。</em> <em>--timeout=time ip</em><em>超时时间,单位为秒。</em> <em>-I, --ignore-times </em><em>不跳过那些有同样的时间和长度的文件。</em> <em>--size-only </em><em>当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间。</em> <em>--modify-window=NUM </em><em>决定文件是否时间相同时使用的时间戳窗口,默认为0。</em> <em>-T --temp-dir=DIR </em><em>在DIR中创建临时文件。</em> <em>--compare-dest=DIR </em><em>同样比较DIR中的文件来决定是否需要备份。</em> <em>-P </em><em>等同于 --partial。</em> <em>--progress </em><em>显示备份过程。</em> <em>-z, --compress </em><em>对备份的文件在传输时进行压缩处理。</em> <em>--exclude=PATTERN </em><em>指定排除不需要传输的文件模式。</em> <em>--include=PATTERN </em><em>指定不排除而需要传输的文件模式。</em> <em>--exclude-from=FILE </em><em>排除FILE中指定模式的文件。</em> <em>--include-from=FILE </em><em>不排除FILE指定模式匹配的文件。</em> <em>--version </em><em>打印版本信息。</em> <em>--address </em><em>绑定到特定的地址。</em> <em>--config=FILE </em><em>指定其他的配置文件,不使用默认的rsyncd.conf文件。</em> <em>--port=PORT </em><em>指定其他的rsync服务端口。</em> <em>--blocking-io </em><em>对远程shell使用阻塞IO。</em> <em>-stats </em><em>给出某些文件的传输状态。</em> <em>--progress </em><em>在传输时现实传输过程。</em> <em>--log-format=formAT </em><em>指定日志文件格式。</em> <em>--password-file=FILE </em><em>从FILE中得到密码。</em> <em>--bwlimit=KBPS </em><em>限制I/O带宽,KBytes per second。</em> <em>-h, --help </em><em>显示帮助信息</em> <em> </em> <em> </em> <h2><em>应用实例:</em></h2> rsync有3种用法: 第一种是在本机器上进行 文件拷贝或同步 如下: rsync –avz –delete /tmp1/ /mnt/ 因为加入了 –delete参数, 使得 /tmp1有的, /mnt也会有, /tmp1没有的, /mnt中即使有的也要删掉。 两者保持一致。 第二种是借助 ssh通道从远端主机拉取数据的例子: 例如 把hosts备份到其他机器 rsync -avz /etc/hosts -e 'ssh -p 22' <a href="mailto:root@10.0.0.31:/mnt/">root@10.0.0.31:/mnt/</a> 第三种: 以守护进程 socket 方式传输数据: <ol> <li>部署环境 查看 rsync安装包 rpm –qa rsync</li> <li>添加rsync服务的用户,,管理本地目录的。</li> </ol> useradd –s /sbin/nologin –M rsync id rsync <ol start="3"> <li>生成conf配置文件</li> </ol> vi /etc/rsyncd.conf 放入事先准备的配置。man rsyncd.conf去查。 ##rsyncd.conf start## uid = rsync gid = rsync use chroot = no max connections = 200 timeout = 300 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log [backup] path = /backup ignore errors read only = false list = false hosts allow = 172.16.1.0/24 hosts deny = 0.0.0.0/32 auth users = rsync_backup secrets file = /etc/rsync.password #rsync_config_______________end 4、根据rsyncd.conf的auth users配置账号,,远程连接的。 并根据secrets file 参数生成密码文件。 echo “rsync_backup:oldboy”>/etc/rsync.password cat /etc/rsync.password 5、为密码文件配置权限 chmod 600 /etc/rsync.password ls –l /etc/rsync.password 6.创建共享的目录并授权rsync服务管理 mkdir /backup –p chown –R rsync.rsync /backup 如果没有/backup目录,,就会chdir failed 7、 启动rsync服务并检查 rsync –daemon ps –ef|grep rsync|grep –v grep lsof –I :873 因为rsync 服务的端口是873 8、加入开机自启动 echo “/usr/bin/rsync --daemon”>>/etc/rc.local tail –l /etc/rc.local 现在rsync就配置好了,,一般以上配置在backup备份服务器上,因为备份服务器只有一个,而nfs存储服务器会有多个。 先在 nfs 服务器上创建 rsync_backup的密码文件 echo “oldboy”>/etc/rsync.password [root@nfs01 backup]# rsync -avz /backup/ rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password 在存储服务器nfs上,这个命令是 把存储服务器本地/backup;/目录内文件推送到172.16.1.41 服务上。 其中rsync_backup 是设置在rsyncd.conf配置文件里面的auto users . ::backup 是配置文件里面的backup模块。 其中 /etc/rsync.passsword是需要在此nfs服务器上创建的. --exclude 用法: 排除单个文件: rsync -avz --exclude=a /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password 排除多个文件: rsync -avz --exclude={a,b} /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password rsync -avz --exclude=a --exclude=b /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password rsync -avz --exclude={a..g} /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password rsync -avz --exclude-from=paichu.log /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信