在Linux上操作时,可能会有误删的情况,或者是我们在折腾了一顿(增删查改)之后有点小后悔,想对一个小时或者一天前的文件进行“回滚”恢复,那该怎么去做呢?rsync便是不二之选。
大家都知道,对文件的移动、复制常用的操作命令有mv、cp及scp。其中,mv是移动文件命令,将一个文件或文件夹从一个父目录移动到另一个父目录下,如果不改变父目录则起到的效果相当于重新名。cp是本地复制命令,scp则可以实现远程复制。相比之下,rsync实现的效果要比它们复杂的多,而且更有效率。在终端输入rsync命令可以看到它的简单介绍,rsync是一个文件同步工具,使用了高效的“rsync算法”,可以用于类unix系统下的数据镜像备份。
rsync命令介绍
rsync命令遵循如下格式:
rsync [option] source destination
其中,source和destination各自都可以分为local和remote形式,因此可以实现从本地到本地、从本地到远程(push模式)、从远程到本地(pull模式)。
从本地到本地:
rsync -a /src /dest
从本地到远程:
rsync -a /src user@remote:/dest
从远程到本地:
rsync -a user@remote:/src /dest
参数option有多种选择,常用的有以下几种,其他详见命令帮助:
-r:递归(recursive)备份所有子目录下的文件
-a:归档(archive)模式,相当于-rlptgoD,递归备份所有子目录下的文件,保留链接、档案的拥有者、群組、权限以及时间戳
-v:verbose模式,输出比较详细的信息
-z:启用压缩
rsync使用介绍
在使用rsync时,服务端和客户端都必须安装rsync服务。有两种模式:
- rsync-daemon认证模式,使用TCP直接连接,需要服务端启动rsync,同时配置rsync配置文件。客户端不需要启动rsync。
- ssh认证模式,使用远程shell程序(如ssh或rsh)进行连接,不需要双方配置rsync配置文件,并且也不需要双方启动rsync。
ssh认证模式操作较简单。
首先,需要配置ssh实现本地端免密码登录远程端,这样以后省去输入ssh登录远程端密码的步骤:
使用"ssh-keygen -t rsa"命令生成本地端公钥id_rsa.pub,将其上传到远程端并修改为authorized_keys。
然后,将你要备份的文件推送到远程机上:
rsync -avz /dir/ user@remote:/home/user/backup
举个例子:
转载请注明:宁哥的小站 » 文件同步利器:rsync