rsync远程同步

痛点

在一些场景中,需要把一些大文件(几 GB 到 几十 GB)传输到服务器上,理论可用的方法有 通过 http 上传、ssh(scp) 等方法;但 http 上传的逻辑中,需要将文件拷贝至磁盘中某个缓冲区,如此一来不仅需要等待拷贝,还可能面临磁盘空间不足等问题;如果是使用 ssh 等软件,比如 tabby,长时间只传输文件不操作终端可能会被服务器自动断开连接;同时如果传输过程中断开,需要从头开始,不能断点续传

一种解决方案

Rsync 是一个能够在 本地 与 本地或远程 之间同步文件与目录的软件;
Rsync 支持文件元数据同步,支持同步时排除某些文件,每次同步只传输修改的部分(即可断点续传);

Windows 下安装 Rsync

版本参考:

  1. 安装 git
    git for windows: https://git-scm.com/download/win

  2. 下载 zstd
    zstd github release: https://github.com/facebook/zstd/releases

  3. 在 msys2 仓库下载 libxxhash、rsync
    msys2 repo: https://repo.msys2.org/msys/x86_64/

下载完后把这两个 .zst 文件放到 zstd 目录下,用 zstd.exe 解压

./zstd.exe -d 文件名

解压完得到 tar 包,继续解压,进入这两个包的目录,能看到 usr 文件夹,直接复制到 git 安装目录下

  1. 打开 git bash,键入 rsync,出现帮助则说明安装完成
    版本参考
app 版本
git 2.42.0
zstd 1.5.5
libxxhash 0.8.2
rsync 3.2.7

Linux 安装

# Debian
apt install rsync
# CentOS
yum install rsync

使用

# 在需要传输的文件目录下,右键,git bash here
# -a 表示递归同步和同步文件元信息
# -v 表示显示更详细数据
# -e 表示 ssh 参数
# -P 表示显示传输进度
rsync -av -e 'ssh' {source} {destination} -P
# 例:将本地一个大文件传输至远程服务器
rsync -av -e 'ssh' ./TCS-time20230828200420-size30793922560Bytemd52f9089eca7e7a32e5e462e3cfb0c620a.
tar.gz appdeploy@10.207.8.247:/app/tmp/ -P
posted @ 2023-12-27 14:43  醒日是归时  阅读(73)  评论(0编辑  收藏  举报