以前在清理缓存时遇到写缓存命令sync,今天来看看同步命令rsync 。
使用man rsync来查看命令的说明信息:rsync - a fast, versatile, remote (and local) file-copying tool,即“一个快速、多功能、远程(和本地)文件复制工具” 。这里的r指的是 remote, rsync即remote sync,与其他文件传输工具(如 FTP 或 scp)不同,rsync 的最大特点是会检查发送方和接收方已有的文件,仅同步大小或者最后修改时间发生变化的文件或目录。总的来说 ,rsync就是实现增量备份。
rsync使用方法有三种:
使用rsync --help查看参数的含义,在此罗列几个。源路径如果是一个目录的话,带上尾随斜线和不带尾随斜线是不一样的,不带尾随斜线表示的是整个目录包括目录本身,带上尾随斜线表示的是目录中的文件,不包括目录本身。
递归 ,对子目录进行递归,即目录下的所有目录都同样传输。
-r, --recursive recurse into directories
归档模式,大圣文库下载器以递归方式传输文件,并保持所有文件属性。
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
详细模式,显示输出详细,传输时的进度等信息。
-v, --verbose increase verbosity
传输时进行压缩以提高传输效率。
-z, --compress compress file data during the transfer
模拟命令执行的结果,并不真的执行命令。
-n, --dry-run perform a trial run with no changes made
将删除只存在于目标目录、不存在于源目录的文件。
1、本地同步
rsync -av shells/ shells.bak/ 将本地shells/ 目录中的文件备份到 shells.bak/,不包含目录。
修改一下mtime后,再来同步一下,发现mtime修改后也会同步。
2、远程同步,rsync 默认使用 SSH 进行远程登录和数据传输。那么可以使用cron做定时任务来完成数据备份了。
远程同步至本地,目标文件是原文件的镜像
rsync -av --delete shells lighthouse@IP地址:/home/lighthouse/dest
本地文件同步至远程,目标文件是原文件的镜像
rsync -av --delete lighthouse@IP地址:/home/lighthouse/myshells/ myshells
3、rsync daemon模式
以daemon方式运行时Rsync server会打开一个873 端口,等待客户端去连接。目前这个功能没啥需求,暂时不测试了。
需要注意的是,rsync里面有个参数--bwlimit十分重要,限制传输速度,防止在远程备份时把宽带占满。参数的默认单位是KiB 。还有,出于向后兼容的原因,速率限制将四舍五入到最近的KiB单位,因此速率不可能小于1024字节/秒。
另外,rsync有另外一个作用。cp复制大文件时,无法知道进度以及速率,rsync -av --progress 可以解决这个问题。