Rsync本地及远程同步工具

Rsync

  • 是一款开源的,快速的,多功能的m,可实现全量及增量的本地或者远程数据同步备份的优秀工具,rsync适用于window/unix/linux等多种操作系统平台;
  • 在同步备份数据时,默认情况下,rsync通过其独特的quick check 算法,
    • 它仅同步大小或者最后修改时间发生变化的文件或者目录,
    • 当然也可根据权限,属主等属性的变化同步,但需要指定相应的参数
    • 甚至可以实现只同步一个文件里有变化的内容部分,所以,可以实现快速的同步备份数据.

rsync与ssh的scp以及cp命令之间的对比

rsync

  • 可以是远程的全量及增量的复制数据
  • 可以是本地不同分区或者目录之间全量及增量的复制数据
  • 传输数据不是加密的
  • rsync还可以实现删除文件和目录的功能,相当于rm命令

ssh的scp

  • 每次都是远程的全量的复制数据
  • 传输数据是加密传输的

cp

  • 每次都是本地的全量的复制数据

rsync的特性

  • 可以更新整个目录树和文件系统
  • 支持拷贝特殊文件如链接文件,设备等
  • 可以选择保留符号链接、硬链接、文件所有权、权限、设备和时间(-p)
  • 可实现增量同步,即只同步发生变化的数据,因此数据传输效率很高,tar
  • 不需要特殊的特权来安装。
  • 内部管道可以减少多个文件的延迟。
  • 可以使用rsh、ssh、rcp等方式配合传输文件(rsync本身不对数据进行加密)
  • 可以通过socket(进程方式)传输文件和数据(服务端和客户端)
  • 支持匿名rsync或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像,这是镜像的理想选择。

rsync使用的场景

两台服务器之间数据同步

[老男孩linux实战培训初级第10次课后作业实战考试集群架构图-3]()

把所有客户服务器数据同步到备份服务器

生产场景集群架构服务器备份方案

rsync的工作方式

  • 单个主机本地之间的数据传输(此时类似于cp命令)
  • 借助rcp,ssh等通道来传输数据(此时类似于scp命令)
  • 以守护进程(socket)的方式传输数据(这是rsunc自身的重要功能)
rsync(1)                                                              rsync(1)

NAME
       rsync — a fast, versatile, remote (and local) file-copying tool

SYNOPSIS
       Local:  rsync [OPTION...] SRC... [DEST]

       Access via remote shell:
         Pull: rsync [OPTION...] [[email protected]]HOST:SRC... [DEST]
         Push: rsync [OPTION...] SRC... [[email protected]]HOST:DEST

       Access via rsync daemon:
         Pull: rsync [OPTION...] [[email protected]]HOST::SRC... [DEST]
               rsync [OPTION...] rsync://[[email protected]]HOST[:PORT]/SRC... [DEST]
         Push: rsync [OPTION...] SRC... [[email protected]]HOST::DEST
               rsync [OPTION...] SRC... rsync://[[email protected]]HOST[:PORT]/DEST

       Usages with just one SRC arg and no DEST arg will list the source files instead of copying.

rsync命令的使用

rsync选项

 -v, --verbose               显示详细信息
 -q, --quiet                 suppress non-error messages
     --no-motd               suppress daemon-mode MOTD (see manpage caveat)
 -c, --checksum              skip based on checksum, not mod-time & size
 -a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)
     --no-OPTION             turn off an implied OPTION (e.g. --no-D)
 -r, --recursive             递归的目录
 -R, --relative              use relative path names
     --no-implied-dirs       don‘t send implied dirs with --relative
 -b, --backup                make backups (see --suffix & --backup-dir)
     --backup-dir=DIR        make backups into hierarchy based in DIR
     --suffix=SUFFIX         set backup suffix (default ~ w/o --backup-dir)
 -u, --update                skip files that are newer on the receiver
     --inplace               update destination files in-place (SEE MAN PAGE)
     --append                append data onto shorter files
     --append-verify         like --append, but with old data in file checksum
 -d, --dirs                  transfer directories without recursing
 -l, --links                 copy symlinks as symlinks
 -L, --copy-links            transform symlink into referent file/dir
     --copy-unsafe-links     only "unsafe" symlinks are transformed
     --safe-links            ignore symlinks that point outside the source tree
 -k, --copy-dirlinks         transform symlink to a dir into referent dir
 -K, --keep-dirlinks         treat symlinked dir on receiver as dir
 -H, --hard-links            preserve hard links
 -p, --perms                 保存权限
 -E, --executability         preserve the file‘s executability
     --chmod=CHMOD           affect file and/or directory permissions
 -A, --acls                  preserve ACLs (implies --perms)
 -X, --xattrs                preserve extended attributes
 -o, --owner                 仅保留所有者(超级用户)
 -g, --group                 保留组
     --devices               preserve device files (super-user only)
     --copy-devices          copy device contents as regular file
     --specials              preserve special files
 -D                          same as --devices --specials
 -t, --times                 保存修改时间
 -O, --omit-dir-times        omit directories from --times
     --super                 receiver attempts super-user activities
     --fake-super            store/recover privileged attrs using xattrs
 -S, --sparse                handle sparse files efficiently
 -n, --dry-run               perform a trial run with no changes made
 -W, --whole-file            copy files whole (without delta-xfer algorithm)
 -x, --one-file-system       don‘t cross filesystem boundaries
 -B, --block-size=SIZE       force a fixed checksum block-size
 -e, --rsh=COMMAND           specify the remote shell to use
     --rsync-path=PROGRAM    specify the rsync to run on the remote machine
     --existing              skip creating new files on receiver
     --ignore-existing       skip updating files that already exist on receiver
     --remove-source-files   sender removes synchronized files (non-dirs)
     --del                   an alias for --delete-during
     --delete                delete extraneous files from destination dirs
     --delete-before         receiver deletes before transfer, not during
     --delete-during         receiver deletes during transfer (default)
     --delete-delay          find deletions during, delete after
     --delete-after          receiver deletes after transfer, not during
     --delete-excluded       also delete excluded files from destination dirs
     --ignore-errors         delete even if there are I/O errors
     --force                 force deletion of directories even if not empty
     --max-delete=NUM        don‘t delete more than NUM files
     --max-size=SIZE         don‘t transfer any file larger than SIZE
     --min-size=SIZE         don‘t transfer any file smaller than SIZE
     --partial               keep partially transferred files
     --partial-dir=DIR       put a partially transferred file into DIR
     --delay-updates         put all updated files into place at transfer‘s end
 -m, --prune-empty-dirs      prune empty directory chains from the file-list
     --numeric-ids           don‘t map uid/gid values by user/group name
     --timeout=SECONDS       set I/O timeout in seconds
     --contimeout=SECONDS    set daemon connection timeout in seconds
 -I, --ignore-times          don‘t skip files that match in size and mod-time
     --size-only             skip files that match in size
     --modify-window=NUM     compare mod-times with reduced accuracy
 -T, --temp-dir=DIR          create temporary files in directory DIR
 -y, --fuzzy                 find similar file for basis if no dest file
     --compare-dest=DIR      also compare destination files relative to DIR
     --copy-dest=DIR         ... and include copies of unchanged files
     --link-dest=DIR         hardlink to files in DIR when unchanged
 -z, --compress              在传输过程中压缩文件数据
     --compress-level=NUM    explicitly set compression level
     --skip-compress=LIST    skip compressing files with a suffix in LIST
 -C, --cvs-exclude           auto-ignore files the same way CVS does
 -f, --filter=RULE           add a file-filtering RULE
 -F                          same as --filter=‘dir-merge /.rsync-filter‘
                             repeated: --filter=‘- .rsync-filter‘
     --exclude=PATTERN       exclude files matching PATTERN
     --exclude-from=FILE     read exclude patterns from FILE
     --include=PATTERN       don‘t exclude files matching PATTERN
     --include-from=FILE     read include patterns from FILE
     --files-from=FILE       read list of source-file names from FILE
 -0, --from0                 all *-from/filter files are delimited by 0s
 -s, --protect-args          no space-splitting; only wildcard special-chars
     --address=ADDRESS       bind address for outgoing socket to daemon
     --port=PORT             specify double-colon alternate port number
     --sockopts=OPTIONS      specify custom TCP options
     --blocking-io           use blocking I/O for the remote shell
     --stats                 give some file-transfer stats
 -8, --8-bit-output          leave high-bit chars unescaped in output
 -h, --human-readable        output numbers in a human-readable format
     --progress              show progress during transfer
 -P                          same as --partial --progress
 -i, --itemize-changes       output a change-summary for all updates
     --out-format=FORMAT     output updates using the specified FORMAT
     --log-file=FILE         log what we‘re doing to the specified FILE
     --log-file-format=FMT   log updates using the specified FMT
     --password-file=FILE    read daemon-access password from FILE
     --list-only             list the files instead of copying them
     --bwlimit=KBPS          limit I/O bandwidth; KBytes per second
     --write-batch=FILE      write a batched update to FILE
     --only-write-batch=FILE like --write-batch but w/o updating destination
     --read-batch=FILE       read a batched update from FILE
     --protocol=NUM          force an older protocol version to be used
     --iconv=CONVERT_SPEC    request charset conversion of filenames
 -4, --ipv4                  prefer IPv4
 -6, --ipv6                  prefer IPv6
     --version               print version number
(-h) --help                  show this help (-h works with no other options)

rsync的使用

  • 本地同步

    rsync avz /etc/hosts /tmp/
  • 删除文件(相当于rm)
rsync -r --delete /null/ /data/ # 比较null目录,与null目录保持一致,null目录什么都没有,data目录就会删除所有

[[email protected] ~]# mkdir null
[[email protected] ~]# mkdir data
[[email protected] ~]# ls
data  null  release  semaphore  test.sh  testsource.sh
[[email protected] ~]# touch data/index
[[email protected] ~]# ls
data  null  release  semaphore  test.sh  testsource.sh
[[email protected] ~]# #rsync -r --delete ./null/ ./data/
[[email protected] ~]# ls ./null/
[[email protected] ~]# ls ./data/
index
[[email protected] ~]# rsync -r --delete ./null/ ./data/
[[email protected] ~]# ls ./null/
[[email protected] ~]# ls ./data/
#=======================================================
[[email protected] ~]# mkdir null/ddd
[[email protected] ~]# rsync -r --delete ./null/ ./data/
[[email protected] ~]# ls ./null/
ddd
[[email protected] ~]# ls ./data/
ddd
  • 指定通道进行同步数据(注意权限问题)

    rsync -avz /etc/hosts -e ‘ssh -p 22‘ 192.168.0.101:/tmp/ # push
    rsync -avz -e ‘ssh -p 22‘ 192.168.0.101:/tmp/hosts $HOME # pull
    rsync -vzrtopg --progress -e ssh --delete [email protected]:/www/* /databack/experiment/rsync
  • 使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器
    rsync -avz 192.168.1.100:/tmp/hosts /data
  • 使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器
    rsync -avz *.c [email protected]:/tmp
  • ==从远程rsync服务器中拷贝文件到本地机==
    rsync -av [email protected]::www /databack
  • ==从本地机器拷贝文件到远程rsync服务器中==
rsync -av /databack [email protected]::www
  • 列远程rsync服务器文件列表
rsync -av /databack [email protected]::www

rsync后台服务的方式同步

配置服务

vi /etc/xinetd.d/rsync
# default: off
# description: The rsync server is a good addition to an ftp server, as it #       allows crc checksumming etc.
service rsync
{
        disable = no
        flags           = IPv6
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
}

服务启动

/etc/init.d/xinetd restart

配置rsync的配置文件

/etc/rsyncd.conf ==需要手动创建==

vi /etc/rsyncd.conf

uid=root
gid=root
max connections=4
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
secrets file=/etc/rsyncd.passwd # 同步时需要认证
hosts deny=172.16.78.0/22

[dockerimages]
comment= backup web
path=/home/xue.long/dockerimages
read only = no
exclude=test
auth users=marion

配置认证文件

认证文件中的用户建议不要使用系统上的用户,保证系统的安全

echo "work:abc123" > /etc/rsyncd.passwd
chmod 600 /etc/rsyncd.passwd

开始备份

rsync -avz --progress --delete [email protected]::www /databack/experiment/rsync

恢复

rsync -avz --progress /databack/experiment/rsync/ [email protected]::www

原文地址:http://blog.51cto.com/bkmaster/2090926

时间: 2024-08-30 12:21:36

Rsync本地及远程同步工具的相关文章

rsync - 远程同步工具

一直没有对这个命令太有深入的理解 简介 rsync 即 remote sync,一个远程与本地文件同步工具.rsync 使用的算法能够最小化所需复制的数据,因为它只移动那些修改了的文件. rsync 是一个非常灵活的同步工具,它也是一种使用该工具的网络协议名称.本文中所说的 rsync 都是指同步工具,而非网络协议.由于它在类 Unix 系统中广为流行,它也是大多数 Linux 发行版的默认自带工具. 基本语法 rsync 的基本语法非常简单,类似于 ssh, scp 和 cp 命令的语法. 例

Rsync远程同步工具

Rsync远程同步工具1配置rsync源服务器(http://rsync.samba.org/)(1)建立配置文件vim /etc/rsyncd.confuid = nobody //指定运行程序的用户gid = nobody //指定运行程序的组use chroot = yes //禁锢在源目录,指只能访问我指定的目录不允许访问其他目录,类似以vsftpd的禁锢address = 192.168.1.20 //指定监听的地址port 873 //指定监听的端口log file = /var/l

二十九、rsync+inotity实时监控同步工具

一.场景应用:                                    客户通过url访问资源(查询,下载等),并发量是非常高的,所以运用负载均衡分担web服务器的压力,在后端连接不同的NFS备份服务器,同样也是分担压力:那么在同步nfs服务器上的资源的时候,我们需要实时的同步到备份服务器上,这样用户才能使用这些资源,传统的定时任务,我们知道最快1分钟,同步一次,这是无法忍受的,所以我们用inotity进行实时的同步. 二.inotify+rsync组合的起源 Rsync远程同步工

rsync+inotify实现远程同步

rsync介绍 rsync,英文全称是remote synchronize,是一款实现远程同步功能的免费软件,它在同步文件的同时,可以保持原来文件的权限.时间.软硬链接等附加信息. rsync提供了一个客户机和远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件.甚至还可以实现只同步一个文件里有变化的内容部分,所以可以实现快速的同步备份数据.同时,rsync还可以实现同步本地数据.删除文件和目录的功能. inotify介绍 Inotify 是一个 Linux 内核特性,它监控文件

linux rsync 远程同步工具

从 192.168.1.101 copy 数据到 192.168.1.102 rsync -rvl abc.txt  [email protected]:/opt/ 编写xsync 脚本 集群分发脚本小功能 //执行下面操作 xsync /opt/software 原文地址:https://www.cnblogs.com/developer-ios/p/12230805.html

十八、Rsync 远程同步数据

在linux系统下数据备份的工具.Rsync不仅可以远程同步数据(类似于scp [1]),当然还可以本地同步数据(类似于cp),但不同于cp或scp的一点是,rsync不像cp/scp一样会覆盖以前的数据(如果数据已经存在),它会先判断已经存在的数据和新数据有什么不同,只有不同时才会把不同的部分覆盖掉.如果你的linux没有rsync命令请使用 yum install -y rsync 安装. 下面阿铭先举一个例子,然后再详细讲解rsync的用法: [[email protected] ~]#

12,RSYNC远程同步复制服务

1,Rsync介绍 rsync:是一个远程同步传输工具,可通过LAN/WAN快速通过多台主机之间的文件 rsync通过"rsync算法"来远程同步传输两个主机之间不同的文件.而不需要传输已经有的文件来达到快速传输同步文件的目的 端口:873 模式:C/S 2,应用场景 备份方式: 全量备份: 备份所有的文件 增量备份: 备份与上一次备份增加的文件 应用场景: 1)本端传输到对端 2)对端传输到本端 3)分层模式 4)云服务器中转 rsync与cp命令和scp命令的区别? cp:在一个主

Rsync(远程同步): inux中Rsync命令的实际示例

rsync的 ( 远程同步 )为在Linux / Unix系统局部 拷贝和同步文件和目录远程以及一个最常用的命令. 随着rsync命令的帮助,您可以复制并在目录中远程和本地同步数据,在磁盘和网络,进行数据备份和两台Linux机器之间的镜像. Rsync本地和远程文件同步 本文介绍rsync命令的10个基本和高级的用法在基于Linux的机器远程和本地传输文件. 你并不需要以root用户运行rsync命令. Rsync命令的一些优点和功能 它有效地将文件复制到远程系统或从远程系统同步. 支持复制链接

文件同步工具 lsyncd2.1.6 安装使用问题

项目有文件实时同步备份的需求,做了一下调查,比较好的解决方法是使用lsyncd工具.这里主要记录一下遇到的问题及解决方法. lsyncd 的相关介绍和对比可见: lsyncd实时同步搭建指南--取代rsync+inotify Linux下同步工具inotify+rsync使用详解 lsyncd官方文档: Lsyncd - Live Syncing (Mirror) Daemon 1.安装问题 安装时需要先安装 lua和cmake,可直接使用apt-get: apt-get install lua