linux系统的rsync命令实现本机到远程主机之间目录的复制和同步

news2024/11/18 5:40:59

一、rsync命令介绍

        在Linux中,`rsync` 是一个强大的命令行工具,用于同步文件和目录。它可以在本地或通过网络在远程系统之间复制文件。

二、远程目录复制的条件

1、系统要已经安装rsync工具

        要使用 `rsync` 复制远程目录,需要确保系统上安装了 `rsync` ,并且具有相应的权限来执行数据传输。远程机器上也需要有 rsync 服务端(通常 rsync 会作为 SSH 的一部分一起安装)。

        在linux命令行直接输入:

                rsync

        出现类似下图的输出,表明 rsync 已经安装成功,可以使用了。

2、正确获得远程的端口号

        Rsync默认使用的 SSH 端口号22,若远程主机的端口号不是22,需要特别指定对应的端口号。命令要指明正确的端口号,如下命令:

rsync -avz -e 'ssh -p 2222' username@remote_host:/path/to/remote/directory/ /path/to/local/directory/

        其中 2222 是远程机器的 SSH 端口。

        实际操作如下:

[root@localhost ~]#
[root@localhost ~]# rsync -avz  root@192.168.1.109:/usr/java/jdk1.8.0_121/include /home/test-rsync1
ssh: connect to host 192.168.1.109 port 22: Connection refused
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: unexplained error (code 255) at io.c(226) [Receiver=3.1.2]
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# rsync -avz -e 'ssh -p 2222' root@192.168.1.109:/usr/java/jdk1.8.0_121/include /home/test-rsync1
root@192.168.1.109's password:
receiving incremental file list

sent 26 bytes  received 215 bytes  53.56 bytes/sec
total size is 191,947  speedup is 796.46
[root@localhost ~]#
[root@localhost ~]#

        可以看出,主机192.168.1.109的端口22不接受连接,改成2222端口后,可以正常执行命令。

三、命令实例和解释

1、目录复制命令

(1)本地目录复制到远程主机的命令

         以下是一个基本的 `rsync` 命令,用于远程复制目录:

rsync -avz --delete /path/source_directory user@remote_host:/path/to/destination_directory

        这里各选项的含义是:

         `-a`:归档模式,它保持符号链接、权限、时间戳、组和所有权信息。

         `-v`:详细模式,它输出同步过程中的详细信息。

         `-z`:压缩文件数据。

         `--delete`:在同步时删除那些只存在于目的目录中的文件。

        实际应用的时候,  需要将 `/path/source_directory` 替换为我们想要复制的本地目录的路径,将 `user@remote_host` 替换为远程服务器的用户名和主机名,将 `/path/to/destination_directory` 替换为远程服务器上的目标目录路径。

    例如,如果想要将本地的 `/home/user/source_dir` 目录复制到远程服务器 `remote.example.com` 上的 `/home/user/dest_dir` 目录,可以使用以下命令:

rsync -avz --delete /home/user/source_dir user@remote.example.com:/home/user/dest_dir

        在执行 `rsync` 命令之前,需要确保远程服务器上的用户具有足够的权限来接收文件,并且远程目录存在。如果不存在,`rsync` 会提示创建它。

(2)远程主机复制到本地目录的命令

        若想远程主机的某个目录复制到本地的某个目录,可以采用如下命令:

rsync -avz --delete user@remote_host:/path/source_directory /path/to/destination_directory

    实际应用,比如把192.168.1.109的目录 /usr/java/jdk1.8.0_121/include 复制到本地的/home/test-rsyn1目录下,可以采用如下命令:

rsync -avz  root@192.168.1.109:/usr/java/jdk1.8.0_121/include /home/test-rsyn1

        实际操作如下:

[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# rsync -avz root@192.168.1.109:/usr/java/jdk1.8.0_121/include /home/test-rsync1
root@192.168.1.109's password:
receiving incremental file list
created directory /home/test-rsync1
include/
include/classfile_constants.h
include/jawt.h
include/jdwpTransport.h
include/jni.h
include/jvmti.h
include/jvmticmlr.h
include/linux/
include/linux/jawt_md.h
include/linux/jni_md.h

sent 192 bytes  received 31,339 bytes  9,008.86 bytes/sec
total size is 191,947  speedup is 6.09
[root@localhost ~]# ll /home/test-rsync1/include/
总用量 192
-rw-r--r-- 1 10 143 20128 12月 13 2016 classfile_constants.h
-rw-r--r-- 1 10 143  8690 12月 13 2016 jawt.h
-rw-r--r-- 1 10 143  6407 12月 13 2016 jdwpTransport.h
-rw-r--r-- 1 10 143 73701 12月 13 2016 jni.h
-rw-r--r-- 1 10 143  3774 12月 13 2016 jvmticmlr.h
-rw-r--r-- 1 10 143 77428 12月 13 2016 jvmti.h
drwxr-xr-x 2 10 143    39 12月 13 2016 linux
[root@localhost ~]#

        从操作结果中可以看出,命令执行成功,远程主机的目录及子目录和文件已经全部复制到本地的目录中了。

2、注意事项

        由于 `rsync` 默认是同步两个目录的内容,如果目的目录中不存在某些源目录中的文件,它们不会被自动创建。使用 `--delete` 选项可以确保在目的目录中,删除那些只存在于源目录中的文件。

        为了安全起见,`rsync` 传输的数据会通过 SSH 进行加密,因此需要有 SSH 密钥对,并且远程服务器上的用户需要配置好 SSH 免密登录。如果没有为 `rsync` 设置 SSH 密钥对,在执行命令时将被提示输入远程服务器的密码。


文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1637350.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高效率的做事方法?

高效率的做事方法可以帮助我们更好地管理时间和资源,以下是一些建议: 1.明确目标和计划: 在开始任何任务之前,先明确你的目标是什么。 制定一个详细的计划,包括步骤、时间表和预期结果。 将任务分解成小块&#xff0…

浅谈Agent AI智能体的未来

Agent AI智能体的未来非常广阔和潜力巨大。随着技术的发展和应用场景的不断拓展,我们可以期待以下几个方面的发展: 更加智能化:Agent AI智能体将会变得越来越智能,具备更强大的学习、推理和决策能力。它们可以通过大数据和机器学习…

修改word文件的创作者方法有哪些?如何修改文档的作者 这两个方法你一定要知道

在数字化时代,文件创作者的信息往往嵌入在文件的元数据中,这些元数据包括创作者的姓名、创建日期以及其他相关信息。然而,有时候我们可能需要修改这些创作者信息,出于隐私保护、版权调整或者其他实际需求。那么,有没有…

Linux系统启动Canal错误

说明:记录在Linux系统(Cent OS 7)中使用Canal的错误; 场景 将下载的Canal包解压,启动Canal时,Canal没有启动,如下: 分析:hs_err_pid13418.log是JVM运行异常生成的日志文…

SDKMAN!

概述 官网,SDKMAN是一款管理多版本SDK的工具,可以实现在多个版本间的快速切换。 其他特性: 易用:安装SDK不再需要去Google想安装的某个软件的官网的下载页,或找其他下载页面,然后下载安装包、解压、设置…

Apollo Dreamview+之播放离线数据包

前提条件 完成 Dreamview 插件安装,参见 Studio 插件安装 。 操作步骤 您可以通过包管理和源码两种方式快速体验离线数据包播放操作。其中进入 docker 环境和启动 dreamview 的命令有所区别,请您按照命令进行操作。 步骤一:启动并打开 Dr…

踏上R语言之旅:解锁数据世界的神秘密码(三)

多元相关与回归分析及R使用 文章目录 多元相关与回归分析及R使用一.变量间的关系分析1.两变量线性相关系数的计算2.相关系数的假设检验 二.一元线性回归分析的R计算三、回归系数的假设检验总结 一.变量间的关系分析 变量间的关系及分析方法如下: 1.两变量线性相关…

openlayer 使用ol-ext插件实现凸显区域

使用ol-ext插件实现凸显多变形 效果如图 1、创建openlayer var map; var view; var tileLayer, source, vector;function init() {tileLayer new ol.layer.Tile({source: new ol.source.TileArcGISRest({url: "http://map.geoq.cn/arcgis/rest/services/ChinaOnlineStr…

java 远程debug

java -agentlib:jdwptransportdt_socket,servery,suspendn,address50050 -Xmx1536m -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath./ -jar ${JAR_NAME} >/dev/null 2>&1 &参数说明 -agentlib:jdwptransportdt_socket,servery,suspendn,address50050: 这个参数…

Linux:使用匿名管道对进程池的模拟实现

目录 一、Makefile 二、processpool.cc 2.1创建通信管道和子进程 2.2控制子进程 2.3回收进程 三、task.hpp 四、完整代码 接下来我们将模拟实现一个进程池,进程池广泛应用与各个领域和方向,比如我们打开电脑后同时打开很多个进程(也就是软…

python公务用车医院校园企业车辆管理系统

本 Python版本:python3.7 前端:vue.jselementui 框架:django/flask都有,都支持 后端:python 数据库:mysql 数据库工具:Navicat 开发软件:PyCharm 公务用车管理智慧云服务监管平台有管理员和用户…

托普利兹矩阵(T矩阵)及其应用(Matlab demo测试)

托普利兹矩阵(T矩阵)及其应用(Matlab demo测试) 1. 概念2. Matlab简单测试2.1 生成测试2.2 基本性质及原理2.3 性质验证 3. 其他应用总结3.1 其他性质3.2 文献阅读看到的 参考资料 1. 概念 托普利兹矩阵,简称为T型矩阵…

O2OA开发平台前端源码级二次开发(Vue3,React)

在使用O2OA进行项目定制化开发时,我们可以开发新的前端组件(x_component)以扩展O2OA来实现更多的业务。这种新增前端组件或者前端业务的开发通常会配合后端自定义应用实现的服务来完成系统内数据的交互。在当系统默认的界面不符合系统UI/UE设…

Sentinel 控制台学习

引言 上篇文章已经讲过 SpringCloud Sentinel集成到微服务项目中,接下来我们继续学习怎么使用sentinel控制台对微服务进行限流,熔断,降级等一系列操作。 控制台 接下来我们单独讲解每一个菜单按钮 实时监控 实时监控: 可以看到…

Leetcode 145:二叉树的后序遍历(迭代法)

给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。 思路: 迭代法的思路是,使用栈,一层一层的将树节点遍历入栈。 比如下面这个树,使用迭代法,1)第一层,让根节点入栈。2&a…

2024深圳杯数学建模竞赛A题(东三省数学建模竞赛A题):建立火箭残骸音爆多源定位模型

更新完整代码和成品完整论文 《2024深圳杯&东三省数学建模思路代码成品论文》↓↓↓(浏览器打开) https://www.yuque.com/u42168770/qv6z0d/zx70edxvbv7rheu7?singleDoc# 2024深圳杯数学建模竞赛A题(东三省数学建模竞赛A题&#xff0…

2024五一杯数学建模A题思路分析-钢板最优切割路径问题

文章目录 1 赛题选题分析 2 解题思路3 最新思路更新 1 赛题 A题 钢板最优切割路径问题 提高钢板下料切割过程中的工作效率,是模具加工企业降低成本和增加经济效益的重要途径,其中钢板切割的路径规划是钢板切割过程的一个关键环节。 钢板切割就是使用特殊…

附录6-1 黑马优购项目-组件与过滤器

目录 1 过滤器-格式化价格 2 组件-搜索框 3 组件-数量框 4 组件-商品概况 4.1 格式化价格 4.2 选择性使用勾选框和数量框 4.3 源码 1 过滤器-格式化价格 这个项目中仅用到格式化价格这一种过滤器。过滤器文件位置为store/filter.wxs 文件内容是这样的&#xf…

【嵌入式DIY实例】-植物自动浇水机

DIY自动植物浇水机 文章目录 DIY自动植物浇水机1、硬件准备与接线2、代码实现智能灌溉系统是一种先进的、新技术的灌溉技术,可以减少人力、时间等。在本文中,将介绍如何实现一个植物自动浇水机。通过这个项目,可以给我们身边的一些植物,所有花盆都安装这一系统。这个系统由…

【JavaEE初阶系列】——理解tomcat 带你实现最简单的Servlet的hello world程序(七大步骤)

目录 🚩认识Tomcat 🚩运用Tomcat 🚩Servlet 🎓完成简单的Servlet的hello world程序 🎈创建项目Maven 🎈引入依赖 🎈创建目录 🎈编写代码 🎈打包程序 &#x1…