文件同步工具rsync

| |

什么是rsync

rsync 是一个强大的文件同步工具,特别适合在不同计算机之间同步文件或备份数据,用于快速和灵活地同步文件和目录。它只会传输文件的差异部分,这使得它比传统的复制工具更高效。
rsync 是一个功能强大的工具,适用于备份、镜像和同步文件系统。了解并熟悉其选项和用法,可以大大提高文件传输和管理的效率。
rsync的优势:

  1. 高效传输rsync 只传输文件的更改部分,节省时间和带宽。
  2. 备份:可以轻松创建和维护本地和远程备份。
  3. 同步:保持多个位置的文件和目录内容一致。
  4. 灵活性:支持多种选项来满足不同的需求。

在大多数Linux发行版中,rsync 通常已经预装。如果没有,可以使用包管理器安装,例如:

bash

sudo apt-get install rsync  # 对于Debian/Ubuntu系统
sudo yum install rsync      # 对于CentOS/RHEL系统

rsync使用指南

基本命令结构

bash

rsync [OPTION]... SRC [SRC]... DEST

示例

  1. 本地同步

将源目录 /home/user/source/ 中的所有文件同步到目标目录 /home/user/destination/

bash

   rsync -av /home/user/source/ /home/user/destination/

将本地目录 /home/user/source/ 同步到远程主机 remotehost/home/user/destination/ 目录:

bash

   rsync -av /home/user/source/ user@remotehost:/home/user/destination/

将远程目录同步到本地目录:

bash

   rsync -avz user@remote:/remote/directory/ /local/directory/
  1. 排除特定文件

将本地目录同步到远程主机,但排除所有 .txt 文件:

bash

   rsync -av --exclude '*.txt' /home/user/source/ user@remotehost:/home/user/destination/
  1. 压缩传输

通过压缩传输文件,以节省带宽:

bash

   rsync -avz /home/user/source/ user@remotehost:/home/user/destination/
bash

   rsync -avz -e ssh /local/directory/ user@remote:/remote/directory/

删除目标目录中在源目录中不存在的文件:

bash

   rsync -avz --delete /local/directory/ user@remote:/remote/directory/

常用选项

bash

  rsync -avz --exclude '*.txt' --exclude '*.log' /local/directory/ user@remote:/remote/directory/
text

  *.txt
  *.log

然后在 rsync 命令中使用该文件:

bash

  rsync -avz --exclude-from='exclude-list.txt' /local/directory/ user@remote:/remote/directory/

关于-z参数

使用 -z 选项进行传输压缩是安全的,不会对文件造成损坏。它主要用于优化网络传输性能,特别是在低带宽环境中,可以显著减少传输时间。
这个选项的作用是在传输数据时进行压缩,从而减少网络带宽的使用量,并加快传输速度。文件在到达目标主机后,会自动解压缩,恢复为原始状态。

注意:
虽然 -z 选项本身是安全的,但在以下情况下需要注意: - 网络环境: 在低带宽或高延迟的网络环境中,使用 -z 选项可以显著提高传输效率。 - CPU开销: 压缩和解压缩过程需要消耗一些CPU资源。如果传输文件数量巨大或文件本身已经压缩(如 .zip.tar.gz 文件),压缩可能不会带来显著的优势,反而增加CPU负载。

在WSL中使用rsync

Windows本身没有内置的rsync工具,需要通过第三方工具来实现。
Windows Subsystem for Linux (WSL)允许你在Windows 10和Windows 11上运行Linux环境。你可以安装一个Linux发行版,并在其中使用rsync

安装WSL和Linux发行版(如Ubuntu):

powershell

    wsl --install
bash

    sudo apt update
    sudo apt install rsync