网站地图    收藏   

主页 > 系统 > linux系统 >

Linux中远程同步命令rsync详解

来源:未知    时间:2024-05-13 19:08 作者:小飞侠 阅读:

[导读] Linux中远程同步命令rsync详解 源自专栏《 SparkML:大数据运维之常用linux命令系列目录》 https://zhuanlan.zhihu.com/p/690059861/ 1. 由来 名称 Rsync是一个开源的、功能强大的文件同步工具,可以在...


Linux中远程同步命令rsync详解

源自专栏《SparkML:大数据运维之常用linux命令系列目录》

https://zhuanlan.zhihu.com/p/690059861/

1. 由来

名称

Rsync是一个开源的、功能强大的文件同步工具,可以在本地或远程系统之间同步和备份文件。它最初由Andrew Tridgell开发,并于1996年发布。

2. 原理

Rsync 是一个在 Linux 系统中常用的文件同步和备份工具。它通过比较源文件和目标文件之间的差异来进行高效的文件传输。以下是 Rsync 的工作原理:

  1. 文件差异算法:Rsync 使用一种称为 "增量递归差异"(Incremental Recursive Diff,简称IRD)的算法来确定源文件和目标文件之间的差异。这个算法会分析文件的内容和元数据,找到两个文件之间的不同之处。

  2. 数据块划分:Rsync 将文件划分为固定大小的数据块。默认情况下,块的大小为 2048 字节。然后,每个数据块都被计算出一个唯一的校验和值,该值用于识别相同块和不同块。

  3. 传输方式:首先,Rsync 会将源文件中的所有数据块的校验和与目标文件进行比较,以确定哪些块需要传输。然后,只有那些在源文件中存在但在目标文件中不存在的数据块会被传输到目标端。

  4. 增量传输:对于目标文件中已存在的数据块,Rsync 可以使用增量传输技术,仅传输源文件中已更改的部分。这减少了需要传输的数据量,提高了传输效率。

  5. 文件元数据:除了文件的内容,Rsync 还会传输文件的元数据,如权限、所有权和时间戳等。这确保目标文件与源文件在属性上保持一致。

  6. 递归处理:Rsync 可以递归地处理目录结构,即对于源目录中的每个子目录和文件,它都会在目标目录中创建相应的子目录和文件。

  7. 增量备份:由于 Rsync 的增量传输功能,它非常适合用于备份任务。每次运行 Rsync 时,只有发生更改的文件或块会被传输,从而减少了备份时间和网络带宽的使用。

总之,Rsync 是一种高效的文件同步和备份工具,通过比较差异并只传输变化的部分来实现快速且节省资源的文件传输。它广泛应用于数据备份、文件同步和远程文件传输等场景。

3.选项


参数选项说明
--verbose, -v增加输出的详细程度,显示更多的信息
--archive, -a启用归档模式,相当于使用 -rlptgoD 选项组合(不包括 -A、-X、-U、-N、-H)
--checksum, -c通过校验和进行文件比较,而不仅仅依赖于修改时间和大小
--recursive, -r递归地复制目录及其内容
--delete删除目标目录中不存在于源目录中的文件
--exclude=PATTERN排除与指定模式匹配的文件和目录
--include=PATTERN只包含与指定模式匹配的文件和目录
--backup, -b创建备份文件而不是覆盖目标文件
--compress, -z在传输过程中对文件数据进行压缩
--progress显示传输的进度信息
--dry-run, -n进行试运行,不实际执行任何操作,只显示将要执行的动作
--exclude-from=FILE从指定文件中读取要排除的模式列表
--include-from=FILE从指定文件中读取要包含的模式列表
--bwlimit=RATE限制传输速率,以字节为单位(例如 50K、2M)


请注意,在使用这些参数选项时,可以根据需要组合和调整,以满足特定的需求。

4.用法示例

以下是Rsync命令的十种主要用法及其代码示例:

1.同步本地文件夹到远程服务器:

 rsync -avz /path/to/local/folder user@remote:/path/to/remote/folder

2.同步远程服务器文件夹到本地:

rsync -avz user@remote:/path/to/remote/folder /path/to/local/folder

3.同步本地文件夹到远程服务器并保持权限:

rsync -avz --chmod=ugo=rwX /path/to/local/folder user@remote:/path/to/remote/folder

4.同步远程服务器文件夹到本地并保持权限:

rsync -avz --chmod=ugo=rwX user@remote:/path/to/remote/folder /path/to/local/folder

5.同步文件夹并排除指定文件或文件夹:

rsync -avz --exclude='file.txt' /path/to/source/folder /path/to/destination/folder

6.压缩传输文件:

 rsync -avz /path/to/source/file user@remote:/path/to/destination/folder

7.按时间戳同步文件夹:

rsync -avz --update /path/to/source/folder /path/to/destination/folder

8.删除目标文件夹中不存在于源文件夹的文件:

rsync -avz --delete /path/to/source/folder /path/to/destination/folder

9.显示同步过程中的详细信息:

rsync -avz --progress /path/to/source/folder /path/to/destination/folder

10.同步文件夹并保留所有文件的属性:

rsync -avz --preserve /path/to/source/folder /path/to/destination/folder

5.其他类似命令

除了Rsync命令外,还有一些类似的文件同步工具可以选择:


工具描述
SCPSecure Copy,用于在本地和远程系统之间安全地复制文件。
FTPFile Transfer Protocol,用于在网络上传输文件。
SFTPSSH File Transfer Protocol,通过SSH通道进行安全的文件传输。


6.CP vs Rsync详细区别

cp和rsync都是用于复制文件和目录的命令行工具,但它们在功能和用途上有一些关键区别。以下是cp和rsync之间的主要区别:

1.复制机制

  • cp:cp命令只是将文件从源目录复制到目标目录。它不执行任何高级的同步或比较操作。

  • rsync:rsync专门设计用于高效的文件同步。它比较源文件和目标文件,并仅传输它们之间的差异部分。这使得它非常适合备份和同步大型目录。

2.增量传输

  • cp:使用cp时,无论目标目录中是否已存在文件,它总是会将所有文件从源复制到目标。对于大文件或目录,这可能耗时且效率低下。

  • rsync:rsync使用增量传输方法。它只传输文件发生变化的部分,减少了传输的数据量。这使得rsync更快且更高效,尤其对于大文件或目录而言。

3.网络支持

  • cp:cp没有内置的网络传输支持。它只能在本地目录之间复制文件。

  • rsync:rsync专门为网络文件传输而设计。它可以使用SSH或其他协议安全地在不同的计算机之间复制文件。这使得它非常适用于远程备份和服务器之间的文件同步。

4.高级选项

  • cp:cp对于控制复制过程的选项有限。它主要支持保留权限和所有权等选项。

  • rsync:rsync提供了广泛的选项来定制同步过程。您可以控制文件权限、所有权、时间戳,处理符号链接,排除特定文件或目录等。

5.使用场景

  • 如果您只需要在同一台机器上或本地目录之间复制文件,则cp足够完成任务。

  • 如果您想在不同的机器之间同步文件、进行增量备份或高效地传输大型目录,则推荐使用rsync。

总结起来,虽然cp适用于基本的文件复制任务,但rsync是一个强大的工具,提供高级的同步功能、增量传输、网络支持以及广泛的选项来微调复制过程。

7.官方链接

了解更多关于Rsync命令的信息,请访问官方文档: - 

官方网站 - https://link.zhihu.com/?target=https%3A//rsync.samba.org/

官方文档 - https://link.zhihu.com/?target=https%3A//download.samba.org/pub/rsync/rsync.html


自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论