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

共 2728字,需浏览 6分钟

 ·

2023-09-26 23:17










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










rsync


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


不过与其他文件传输工具(如 FTPscp)不同,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 -r source1 source2 ./destination 效果如下,会将 source1source2 两个文件夹都同步到 destination 文件夹下面,如果只同步文件则可以使用  rsync -r source1/ source2/ ./destination 则只会同步文件到目标文件夹。








虽然说上面的命令可以正常的使用,但是在真正使用命令的时候,我们会将上面命令中的 -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




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





免密登录


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


先生成公钥和秘钥


ssh-keygen

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


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




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


扩展思考


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


总结


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


参考文章:https://www.ruanyifeng.com/blog/2020/08/rsync.html





END




关注 Stephen,一起学习,一起成长。







“在看”支持下吧




点 阅读原文 可优惠充值话费,流量,视频会员等。





浏览 86
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报