使用Rsync在 Linux 上传输文件的示例
sinye56 2024-11-16 00:24 3 浏览 0 评论
在 Linux 操作系统上,“rsync”代表远程同步同步。它是用于将文件和目录从源 (SRC) 同步(复制)到目标 (DEST) 的实用程序。
文件和目录可以在本地主机上同步,也可以在远程主机上同步。在 SRC 上,文件和目录将被同步。而在 DEST 上,将发生同步的文件和目录。
此外,rsync 命令可以递归地复制文件和目录,复制符号链接,保留(权限、组、修改时间和所有权)文件身份。
Rsync 可以使用两种不同的方式来同步/复制文件或目录:
- 使用远程 shell:ssh 或 rsh
- 直接通过 TCP 使用 rsync 守护进程
更重要的是,rsync 使用增量传输算法,它只在 SRC 和 DEST 之间复制/同步不同的数据。
本教程将通过动手实践和示例来介绍使用 rsync 命令的多种方法。我们还将详细解释 rsync 命令最常用的选项。
rsync 命令语法
在深入研究 rsync 命令的使用方法之前,让我们先看看它的语法:
rsync [options] <SRC_PATH> <DEST_PATH>
1.在本地机器上复制/同步文件
rsync 命令可用于在本地机器上复制/同步文件。
假设您要将名为“/home/linoxide”的用户“linoxide”的主目录中的文件复制到文件夹“/opt/test”。
$ sudo rsync -zvh /home/linoxide/computer-networking.pdf /opt/test/
computer-networking.pdf
sent 1.01K bytes received 35 bytes 2.10K bytes/sec
total size is 3.03K speedup is 2.89
参数说明:
-z: 压缩
-v: 详细输出
-h: 人类可读
2.在本地机器上复制/同步目录
要将所有文件从 SRC 本地目录传输到 DEST 目录,请运行带有选项的 rsync 命令-zavh。
假设您要将名为“/home/linoxide”的用户“linoxide”的主目录复制到文件夹“/opt/backup”。
$ sudo rsync -zavh /home/linoxide/ /opt/backup/
sending incremental file list
./
.bash_history
.bash_logout
.bashrc
.lesshst
.profile
.sudo_as_admin_successful
.viminfo
computer-networking.pdf
.ssh/
.ssh/known_hosts
sent 4.85K bytes received 198 bytes 10.10K bytes/sec
total size is 9.59K speedup is 1.90
参数说明:
-a:在复制/同步过程中存档数据
您可以验证 rsync 命令是否成功?运行以下命令:
$ ls /opt/backup/ -la
total 40
drwxr-xr-x 3 linoxide linoxide 4096 Thg 6 15 16:02 .
drwxr-xr-x 4 root root 4096 Thg 6 15 16:25 ..
-rw------- 1 linoxide linoxide 817 Thg 6 15 16:01 .bash_history
-rw-r--r-- 1 linoxide linoxide 220 Thg 6 11 15:58 .bash_logout
-rw-r--r-- 1 linoxide linoxide 3771 Thg 6 11 15:58 .bashrc
-rw-rw-r-- 1 linoxide linoxide 3028 Thg 2 25 2017 computer-networking.pdf
-rw------- 1 linoxide linoxide 40 Thg 6 15 15:51 .lesshst
-rw-r--r-- 1 linoxide linoxide 807 Thg 6 11 15:58 .profile
drwx------ 2 linoxide linoxide 4096 Thg 6 13 17:58 .ssh
-rw-r--r-- 1 linoxide linoxide 0 Thg 6 15 16:02 .sudo_as_admin_successful
-rw------- 1 linoxide linoxide 680 Thg 6 14 16:50 .viminfo
3. 使用特定端口通过 ssh 进行 Rsync
您可以使用 ssh(安全外壳)复制/同步数据,您的数据将通过加密的安全连接传输。在 Internet 上传输数据时,没有人可以读取您的数据。当您使用 rsync 命令时,您需要提供用户/root 密码来完成特定任务。使用 SSH 选项将以加密方式发送您的登录信息,以确保您的密码安全。
使用特定的 ssh 端口将文件从远程复制到本地。为了使用 rsync 命令指定协议,您需要使用-e带有您要使用的协议名称的选项。
例如,以下 rsync 命令将通过远程 shell 将文件“deploy.yaml”从远程计算机复制到用户“linoxide”的主目录。
$ rsync -avz -e "ssh -p 22" cas@10.9.8.41:/home/cas/deploy.yaml /home/linoxide/
cas@10.9.8.41's password:
receiving incremental file list
sent 20 bytes received 60 bytes 32.00 bytes/sec
total size is 239 speedup is 2.99
4.从本地机器复制/同步文件和目录到远程机器
假设您要将本地主机中用户“linoxide”的主目录中的文件夹“test-data”复制/同步到远程计算机“cas@10.9.8.41”的主目录,运行命令:
$ rsync -azrvh /home/linoxide/computer-networking.pdf cas@10.9.8.41:
cas@10.9.8.41's password:
sending incremental file list
computer-networking.pdf
sent 1.04K bytes received 35 bytes 430.80 bytes/sec
total size is 3.03K speedup is 2.81
参数说明:
-r: 递归复制
5.从远程机器复制/同步文件和目录到本地机器
rsync 命令可帮助您传输要复制到本地主机的远程目录“文档”。
假设您要将远程主机“cas@10.9.8.41”中的文件/目录复制/同步到用户“linoxide”的主目录。
例如:
$ rsync -zavhr cas@10.9.8.41:document /home/linoxide
cas@10.9.8.41's password:
receiving incremental file list
document/
document/kubernetes.txt
sent 47 bytes received 139 bytes 74.40 bytes/sec
total size is 0 speedup is 0.00
6. rsync -include 和 -exclude 选项
这两个选项允许我们通过指定参数来包含和排除文件,这些选项有助于我们指定您想要包含在同步中的文件或目录,并 排除 您不想传输的文件和文件夹。
在此示例中,rsync 命令将仅包含以“k”开头的文件和目录,并排除所有其他文件和目录。
$ rsync -avhz -e "ssh -p 22" --include 'k*' --exclude '*' cas@10.9.8.41: /home/linoxide
cas@10.9.8.41's password:
receiving incremental file list
./
k8s.yaml
kubernetes.yaml
kuber/
sent 88 bytes received 280 bytes 147.20 bytes/sec
total size is 73 speedup is 0.20
7.设置文件的最大大小
您可以指定要传输或同步的最大文件大小。您可以使用“--max-size”选项来做到这一点。
在以下示例中,最大文件大小为 200k,因此该命令将仅传输那些等于或小于 200k 的文件。
$ rsync -zavhr --max-size='200k' cas@10.9.8.41: /home/linoxide
cas@10.9.8.41's password:
receiving incremental file list
.bash_history
.bash_logout
.bashrc
.profile
.sudo_as_admin_successful
.viminfo
computer-networking.pdf
sent 2.58K bytes received 51.60K bytes 21.67K bytes/sec
total size is 113.24K speedup is 2.09
8.传输成功后删除源文件
现在,假设您有一个 Web 服务器和一个数据备份服务器,您创建了一个每日备份并将其与您的备份服务器同步,现在您不想将备份的本地副本保留在您的 Web 服务器中。那么,您会等待传输完成然后手动删除该本地备份文件吗?当然不。这种自动删除可以使用“--remove-source-files”选项来完成。
$ ls /home/directory
computer-networking.pdf deploy.yaml document k8s.yaml kuber kubernetes.yaml
------
$ rsync -azvh --remove-source-files /home/linoxide/deploy.yaml cas@10.9.8.41:
cas@10.9.8.41's password:
sending incremental file list
sent 70 bytes received 20 bytes 36.00 bytes/sec
total size is 239 speedup is 2.66
再次运行'ls'命令,你可以看到文件'deploy.yaml'在SRC上被删除了。
$ ls
computer-networking.pdf document k8s.yaml kuber kubernetes.yaml
9.查找SRC和DEST在文件和目录上的区别
为了找到 SRC 和 DEST 之间目录文件的任何差异,您可以使用 '-i' 选项运行 rsync 命令。
$ rsync -avzi /home/linoxide/cloud cas@10.9.8.41:
cas@10.9.8.41's password:
sending incremental file list
cd+++++++++ cloud/
<f+++++++++ cloud/computer-networking.pdf
<f+++++++++ cloud/k8s.yaml
<f+++++++++ cloud/kubernetes.yaml
cd+++++++++ cloud/document/
<f+++++++++ cloud/document/kubernetes.txt
cd+++++++++ cloud/kuber/
<f+++++++++ cloud/kuber/test.txt
sent 1,472 bytes received 127 bytes 1,066.00 bytes/sec
total size is 3,101 speedup is 1.94
10.限制带宽
您可以在运行 rsync 命令时使用 '--bwlimit=<KB/s>' 选项设置带宽限制。
假设您要将数据传输速率限制为 300KB/s,请运行以下命令:
$ rsync -avzh --bwlimit=300 /home/linoxide/coursera.png cas@10.9.8.41:
cas@10.9.8.41's password:
sending incremental file list
coursera.png
sent 2.93M bytes received 35 bytes 234.48K bytes/sec
total size is 3.00M speedup is 1.02
11. scp失败时恢复传输
有时,您必须通过 scp 命令传输一个非常大的文件,但在复制时出错,并且由于文件大小和时间消耗过大而无法再次使用 scp 命令开始传输。
在这种情况下,您可以使用 rsync 命令从出现错误的位置开始复制文件。例如,将主目录中的大型 ISO 文件复制到远程主机 'cas@10.9.8.41'
$ scp /home/linoxide/ubuntu-18.04.4-live-server-amd64.iso cas@10.9.8.41:
cas@10.9.8.41's password:
ubuntu-18.04.4-live-server-amd64.iso 32% 278MB 86.7MB/s 00:06 ETA
该进程已被用户杀死。当时,32% 的文件被传输。现在,您可以通过运行 rsync 继续当前的工作:
$ rsync -P -avzh ubuntu-18.04.4-live-server-amd64.iso cas@10.9.8.41:
cas@10.9.8.41's password:
sending incremental file list
ubuntu-18.04.4-live-server-amd64.iso
912.26M 100% 15.89MB/s 0:00:54 (xfr#1, to-chk=0/1)
sent 541.25M bytes received 132.44K bytes 9.25M bytes/sec
total size is 912.26M speedup is 1.69
rsync 命令恢复传输文件
12.传输数据时显示进度
如果您想在运行 rsync 命令时查看传输进度,可以使用“--progress”选项。
它将显示文件和完成复制的剩余时间。
例如:
$ rsync -avh --progress /home/linoxide/cloud/ cas@10.9.8.41:
cas@10.9.8.41's password:
sending incremental file list
./
computer-networking.pdf
3.03K 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=8/10)
coursera.png
3.00M 100% 114.38MB/s 0:00:00 (xfr#2, to-chk=7/10)
k8s.yaml
39 100% 1.52kB/s 0:00:00 (xfr#3, to-chk=6/10)
kubernetes.yaml
34 100% 1.33kB/s 0:00:00 (xfr#4, to-chk=5/10)
ubuntu-18.04.4-live-server-amd64.iso
912.26M 100% 89.60MB/s 0:00:09 (xfr#5, to-chk=4/10)
document/
document/kubernetes.txt
0 100% 0.00kB/s 0:00:00 (xfr#6, to-chk=1/10)
kuber/
kuber/test.txt
0 100% 0.00kB/s 0:00:00 (xfr#7, to-chk=0/10)
sent 915.49M bytes received 164 bytes 79.61M bytes/sec
total size is 915.26M speedup is 1.00
带有进度的 rsync 命令
结论
在本教程中,我们通过一些示例学习了如何使用 rsync 命令来复制或同步文件/目录。
我新建了个技术微信群,还原同行扫码进入 [不看][不看][不看]
喜欢的朋友记得给个关注~
相关推荐
- RHEL8和CentOS8怎么重启网络
-
本文主要讲解如何重启RHEL8或者CentOS8网络以及如何解决RHEL8和CentOS8系统的网络管理服务报错,当我们安装好RHEL8或者CentOS8,重启启动网络时,会出现以下报错:...
- Linux 内、外网双网卡路由配置
-
1.路由信息的影响Linux系统中如果有多张网卡的情况下,如果路由信息配置不正确,...
- Linux——centos7修改网卡名
-
修改网卡名这个操作可能平时用不太上,可作为了解。修改网卡默认名从ens33改成eth01.首先修改网卡配置文件名(建议将原配置文件进行备份)...
- CentOS7下修改网卡名称为ethX的操作方法
-
?Linux操作系统的网卡设备的传统命名方式是eth0、eth1、eth2等,而CentOS7提供了不同的命名规则,默认是基于固件、拓扑、位置信息来分配。这样做的优点是命名全自动的、可预知的...
- Linux 网卡名称enss33修改为eth0
-
一、CentOS修改/etc/sysconfig/grub文件(修改前先备份)为GRUB_CMDLINE_LINUX变量增加2个参数(net.ifnames=0biosdevname=0),修改完成...
- CentOS下双网卡绑定,实现带宽飞速
-
方式一1.新建/etc/sysconfig/network-scripts/ifcfg-bond0文件DEVICE=bond0IPADDR=191.3.60.1NETMASK=255.255.2...
- linux 双网卡双网段设置路由转发
-
背景网络情况linux双网卡:网卡A(ens3)和网卡B(...
- Linux-VMware设置网卡保持激活
-
Linux系统只有在激活网卡的状态下才能去连接网络,进行网络通讯。修改配置文件(永久激活网卡)...
- VMware虚拟机三种网络模式
-
01.VMware虚拟机三种网络模式由于linux目前很热门,越来越多的人在学习linux,但是买一台服务放家里来学习,实在是很浪费。那么如何解决这个问题?虚拟机软件是很好的选择,常用的虚拟机软件有v...
- 2023年最新版 linux克隆虚拟机 解决网卡uuid重复问题
-
问题描述1、克隆了虚拟机,两台虚拟机里面的ip以及网卡的uuid都是一样的2、ip好改,但是uuid如何改呢?解决问题1、每台主机应该保证网卡的UUID是唯一的,避免后面网络通信有问题...
- Linux网卡的Vlan配置,你可能不了解的玩法
-
如果服务器上连的交换机端口已经预先设置了TRUNK,并允许特定的VLAN可以通过,那么服务器的网卡在配置时就必须指定所属的VLAN,否则就不通了,这种情形在虚拟化部署时较常见。例如在一个办公环境中,办...
- Centos7 网卡绑定
-
1、切换到指定目录#备份网卡数据cd/etc/sysconfig/network-scriptscpifcfg-enp5s0f0ifcfg-enp5s0f0.bak...
- Linux搭建nginx+keepalived 高可用(主备+双主模式)
-
一:keepalived简介反向代理及负载均衡参考:...
- Linux下Route 路由指令使用详解
-
linuxroute命令用于显示和操作IP路由表。要实现两个不同子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是为了解决以下问题:该...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle忘记用户名密码 (59)
- oracle11gr2安装教程 (55)
- mybatis调用oracle存储过程 (67)
- oracle spool的用法 (57)
- oracle asm 磁盘管理 (67)
- 前端 设计模式 (64)
- 前端面试vue (56)
- linux格式化 (55)
- linux图形界面 (62)
- linux文件压缩 (75)
- Linux设置权限 (53)
- linux服务器配置 (62)
- mysql安装linux (71)
- linux启动命令 (59)
- 查看linux磁盘 (72)
- linux用户组 (74)
- linux多线程 (70)
- linux设备驱动 (53)
- linux自启动 (59)
- linux网络命令 (55)
- linux传文件 (60)
- linux打包文件 (58)
- linux查看数据库 (61)
- linux获取ip (64)
- linux进程通信 (63)