Back
Featured image of post Linux rsync教程

Linux rsync教程

基本特征

  • 能够高效的从远程复制和同步文件
  • 支持复制 links,devices,owners,groups,permissions
  • 比 scp(Secure Copy)快,因为 rsync 可用差异同步,第一次复制整个内容,接下来只复制哪些改变了的文件
  • rsync 更高效的利用带宽,因为它在传送前压缩文件,在收到后解压文件

基础用法

$ rsync options source destination

常用命令

  • -v 可视化

  • -r 递归复制文件(但是在传送时不保留时间戳和权限信息)

  • -a 存档模式,可用递归的复制文件并且可用保持符号连接,文件权限信息,用户,组时间戳的信息

  • -z 压缩文件

  • -h 友好的输出模式

  • -progress 展示文件预计剩余的时间

  • -W 强制同步整个文件

  • –include 包含

  • –exclude 除去

  • –delete 删除目标目录无关的文件

  • –max-size 设置最大传送文件

  • –dry-run 试运行

  • –bwlimit 设置 socks I/O 带宽限制

在本地环境下复制同步文件

  • 复制同步文件在一台电脑上

    接下来的命令是同步一个单独的文件在一台机器上面,从一个目录到另一个目录,下面是一个例子,把 backup.tar 复制同步到/tmp/backups/目录下

    # rsync -zvf backup.tar /tmp/backups/
    

    如果目标文件夹不存在,它将会自动创建一个

  • 复制同步文件夹在一台电脑上

    以下的例子是把/root/rpmpkgs 下面的一些 rpm 包文件复制到/tmp/backups/目录下

    # rsync -avzh /root/rpmpkgs /tmp/backups/
    

将文件或目录复制同步到服务器或从服务器上复制同步文件或目录到本地

  • 从本地复制目录到远程服务器

    下面是个例子:把本地的 rpmpkgs 下的文件复制同步到远程服务器的/home/下

    # rsync -avhz rpmkgs/ [email protected]***.*.*.*:home/
    
  • 从远程服务器复制同步目录到本地

    下面是个例子,远程的/home/test 复制同步到本地的/tmp/mytmp 下

    # rsync -avzh [email protected]:/home/test /tmp/mytmp
    

通过 ssh 来进行同步

使用 ssh 协议传送数据可以更安全

  • 从远程服务器复制同步文件到本地

    rsync -avzhe ssh [email protected]:/root/install.log /tmp/
    

使用-include 和-exclude 选项

只同步复制那些 R 开头的文件和目录

rsync -avze ssh --include 'R*' --exclude '*' [email protected]:/var/ /root/

强制每次同步整个文件 -W

sync 默认只复制同步更改的文件块,如果想要同步更新整个文件可以使用-W

设置最大传送文件 –max-size

rsync -avzhe ssh --max-size='200k' /var/lib/ [email protected]:/root/

在传送完成后自动删除源文件 -remove-source-files

假设你有一台 web 服务器和一个数据备份服务器,每天你新建一个备份并且同步它到你的备份服务器上面,现在你不想保留 web 服务器上面的备份内容,所有你可以使用–remove-source-files 选项

# rsync --remove-source-files -zvh backup.tar /tmp/backups/192.168.0.100

试运行 –dry-run

如果你是一个新手,使用 rsync 不知道应该会发生什么,rsync 确实会弄乱文件夹中的内容,然后撤销操作会很麻烦.使用-dry-run 选项就可以试运行一下,如果符合预期,就可以去掉-dry-run 选项.

设置带宽限制 -bwlimit

可用限制 socket I/O 带宽,单位默认为 KBytes,也就是 KB

# 5000kb/s
--bwlimit=5000

注意事项

可以不用 root

comments powered by Disqus