4.0 KiB
Rsync
Rsync是一个灵活的网络同步工具。其可以用于在多台unix机器间增量同步文件,也可以用于系统备份。
Syntax
在本地进行文件同步
当想要在本地目录之间进行文件同步时,可以调用如下形式的命令:
rsync -r dir1/ dir2
-r选项代表递归的对dir目录下的文件进行备份,当需要对目录进行同步时,该选项是必须的。
除了指定-r选项外,还可以指定--archive | -a选项,该选项是一个组合选项,archive mode代表-rlptgoD。指定-a选项后,该选项会递归的同步文件,并且保存符号链接、device文件、文件mtime、group信息、owner信息、权限信息。该选项比-r选项使用的更频繁,并且是推荐使用的选项。使用示例如下:
# 第一个目录参数中指定了`/`符号,如果没有指定该符号,那么dir目录本身
# 也会被放到dir2中,同步后dir2中文件结构则是dir2/dir1/[files]
rsync -a dir1/ dir2
另外,在使用rsync时,可以指定-n或是--dry-run选项,指定该选项后,执行命令时并不会实际执行修改操作,该选项只是执行一个trail run,通常和-v选项一起使用,查看实际执行时会造成那些修改。使用示例如下:
rsync -anv dir1/ dir2
同步到远程服务器
如果要通过rsync向远程服务器同步数据,只需要拥有远程服务器的ssh访问权限即可,同时需要本地和远程都安装有rsync。
当向远程服务器同步文件时,其语法如下:
rsync -a ~/dir1 username@remote_host:destination_directory
上述命令为push模式,其主动将本地文件同步到远程目录中。
还可以使用pull模式从远程服务器中同步文件到本地,其命令如下:
rsync -a username@remote_host:/home/username/dir1 place_to_sync_on_local_machine
使用Rsync的其他选项
-z
如果在通过rsync传输文件时,可以通过指定-z选项来在传输文件时添加对文件的压缩来减少传输带宽:
rsync -az source destination
--partial
默认情况下,当传输被中断时,rsync会删除只传输了部分的文件。当指定了--partial选项时,rsync会对部分传输的文件进行保留,下次传输时就只用传输缺失的部分,能够减少下次传输时间。
-P
-P选项组合了--progress和--partial两个选项。第一个选项提供了一个传输文件的进度条,而第二个选项则是允许对中断的传输进行恢复操作。
rsync -azP source destination
--delete
默认情况下,rsync在同步文件时,如果source目录中移除了某文件,同步文件后target目录中该文件并不会被同步移除。通过指定--delete选项,可以同步移除target目录中的文件。
--exclude
如果在同步文件时,想要抛出source目录内某些目录或是文件,可以在--exclude中指定排除的pattern。在想要排除多个路径时,既可以指定多个--exclude选项,也可以在一个--exclude选项中指定多个模式,多个pattern之间通过,分割,首尾符号为{和}:
rsync -aPznv --delete --exclude={"fiels0","fiels1"} dir1/ dir2
--include
可以使用--include来覆盖--exclude的排除操作,示例如下:
rsync -a --exclude=pattern_to_exclude --include=pattern_to_include source destination
--backup
rsync的--backup选项可以用于存储文件的备份。该选项和--backup-dir选项联合使用,用于指定备份文件的存储路径。
--backup选项会将文件备份在target根路径下backup-dir路径指定的位置。并且,只有本次rsync操作增量同步的文件才会存储在backup-dir中。
rsync -a --delete --backup --backup-dir=/path/to/backups /path/to/source destination
--link-dest
rsync的--link-dest选项可用于对内容进行增量同步