用 rsync 工具实现本地和远程服务器文件同步 | 安装和基本操作指南

WilliamGates
发布于 2023-10-11 10:31
浏览
0收藏

日常工作和学习中我们经常需要将本地的文件同步到远程 ​​Linu​​​ 服务器中,或者要实现本地和服务器的文件同步。​​FTP​​​ 文件传输协议是大家都熟知的实现方案,今天给大家介绍一个很好用的工具 ​​rsync​​。

rsync

​rsync​​​ 是 ​​remote sync​​​ 的含义,表示远程同步,当时我们也可以同步两个本地的文件夹,此时命令的效果类型 ​​cp​​ 命令。

不过与其他文件传输工具(如 ​​FTP​​​ 或 ​​scp​​​)不同,​​rsync​​ 的最大特点是会检查发送方和接收方已有的文件,仅传输有变动的部分(默认规则是文件大小或修改时间有变动)。

这个特性对于我们经常写博客的朋友也很有帮助,因为我们经常会需要将博客进行备份。

安装

根据系统类型的不同,安装的命令也不相同

# Debian
$ sudo apt-get install rsync
# Red Hat
$ sudo yum install rsync
# Arch Linux
$ sudo pacman -S rsync
# macOS
brew install rsync

了不起这边是 ​​macOS​​ 系统,就直接选择最后一种方式进行安装了,当然远程的服务器也需要进行安装。

基操

本地同步

本地使用 ​​rsync​​​ 的命令为 ​​rsync -r source destination​​​,表示将 ​​source​​​ 位置的文件夹里面的内容全部同步到 ​​destination​​​ 文件夹里面,同时也支持多个 ​​source​​​ 位置,命令是这样的 ​​rsync -r source1 source2 destination​​。

其中需要注意的是 ​​-r​​​表示递归,即包含子目录,而且是必须的,否则 ​​rsync​​ 运行不会成功。

用 rsync 工具实现本地和远程服务器文件同步 | 安装和基本操作指南-鸿蒙开发者社区

执行命令 ​​rsync -r source1 source2 ./destination​​​ 效果如下,会将 ​​source1​​​ 和 ​​source2​​​ 两个文件夹都同步到 ​​destination​​​ 文件夹下面,如果只同步文件则可以使用  ​​rsync -r source1/ source2/ ./destination​​ 则只会同步文件到目标文件夹。

用 rsync 工具实现本地和远程服务器文件同步 | 安装和基本操作指南-鸿蒙开发者社区

用 rsync 工具实现本地和远程服务器文件同步 | 安装和基本操作指南-鸿蒙开发者社区

虽然说上面的命令可以正常的使用,但是在真正使用命令的时候,我们会将上面命令中的 ​​-r​​​ 参数替换成 ​​-a​​​ 参数,因为 ​​-a​​​ 参数不但可以递归同步同时也可以同步文件的元数据,比如创建时间,修改时间这些,所以 ​​-a​​​ 比 ​​-r​​ 参数更加实用。

同时为了让我们知道哪些文件被真正的同步了,我们还会实用 ​​-v​​​ 参数,​​-v​​ 参数会将真正同步了的文件在终端中输出出来,方便我们知晓,所以往往本地最终执行的命令是这样的。

rsync -av source destination

远程同步

上面的命令是在本地执行,如果想要将本地的文件同步到远程服务器,那我们就需要结合 ​​SSH​​ 协议来实现了,整体的命令是这样的

rsync -av source root@xxx.xxx.xxx.xxx:/destination

输入命令过后,在输入一下对应的 ​​root​​ 账号密码即可。

如果我们的 ​​SSH​​​ 的端口不是默认的​​22​​​ 端口,则需要使用 ​​-e​​ 参数来设置端口,命令如下

rsync -av  -e 'ssh -p 22222' source root@xxx.xxx.xxx.xxx:/destination

用 rsync 工具实现本地和远程服务器文件同步 | 安装和基本操作指南-鸿蒙开发者社区

可以看到服务器上面已经同步了对应的文件了

用 rsync 工具实现本地和远程服务器文件同步 | 安装和基本操作指南-鸿蒙开发者社区

免密登录

正常在使用上面远程同步命令的时候,都需要我们再次手动输入服务器账号对应的密码,我们都知道 ​​SSH​​ 是可以免密登录的,我们只需要生成一个公钥和私钥,然后将公钥发送到服务器上面,发送的时候输入一次密码,以后在执行远程同步命令的时候就可以免密登录不用输入密码了。

先生成公钥和秘钥

ssh-keygen

根据提示一步一步回车就行,最终会在 ​​.ss​​​h 目录中生成​​id_rsa​​​ 和 ​​id_rsa.hub​​ 两个文件,然后我们在通过下面的命令将公钥发送到远程服务器上面。

ssh-copy-id -i ./id_rsa.pub -p 22 root@xxx.xxx.xxx.xxx

用 rsync 工具实现本地和远程服务器文件同步 | 安装和基本操作指南-鸿蒙开发者社区

发送的时候会要求输入一次密码,成功以后我们再执行同步命令,就不会再需要密码了。

扩展思考

至此我们已经实现了本地和远程服务器的文件同步功能,那么我们完全可以再更进一步,在本地搞个定时器,定期的自动执行同步功能,而不是每次我们都手动同步,这个就交给大家自己去实践了,感兴趣的可以去研究一下。

总结

今天给大家介绍了一个好用的远程服务器同步命令,在我们日常工作和学习中都可以用起来,更多好玩好用的软件分享,欢迎根据下面提示加群,我们一起交流。


文章转载自公众号:Java极客技术

标签
已于2023-10-11 10:31:55修改
收藏
回复
举报
回复
    相关推荐