九、Linux系统中的文件传输

2023-10-27

九、Linux系统中的文件传输

实验准备:两台可以通信的主机
systemctl disable firewalld
systemctl stop firewalld

9.1、scp命令

上传:scp 本地文件 远程主机用户@远程主机ip:远程主机目录的绝对路径
下载:scp 远程主用户@远程主机ip:远程主机文件的绝对路径 本地文件

scp -r dir root@172.25.0.200:/root/Desktop # -r表示复制目录
scp -q file root@172.25.0.200:/root/Desktop # -q表示传输文件时不显示进度

实验素材:
fake主机ip:172.25.0.100
fake-node1主机ip:172.25.0.200

例:从fake主机上传文件到fake_node1主机
(1)在fake用户中新建文件file,执行systemctl status sshd开启sshd服务,然后执行scp file root@172.25.0.200:/root/Desktop(从当前位置上传文件file到fake_node1主机的root用户)
在这里插入图片描述
(2)切换到fake_node1主机,发现文件file传输到桌面。
在这里插入图片描述
例:用fake-node1主机从fake主机下载图片aa到fake-node1主机的桌面
执行scp root@172.25.0.100:/root/Pictures/aa.png .
在这里插入图片描述

例:从fake用户上传目录dir到fake_node1
执行scp -r dir root@172.25.0.200:/root/Desktop

9.2、scp和rsync的区别

9.2.1、rsync和scp命令的对比

实验:
1、完成免密认证,步骤:
(1)在faketest主机中执行ssh-keygen生成非对称加密密钥。
(2)复制公钥给远程主机root执行ssh-copy-id -i /home/faketest/.ssh/id_rsa.pub root@172.25.0.100以便远程主机用户faketest可以免密登陆另一台主机。具体过程参照8.3.2和8.3.3。

2、建立一个大文件
(1)执行dd if=/dev/zero of=bigfile bs=1M count=1000 (从/dev/zero截取一个指定大小的文件,每份1M,共1000份,文件累计大小1000M)
(2)执行du -sh bigfile查看文件
在这里插入图片描述
(3)若想复制大文件三次,则每次执行比较麻烦,可以创建一个脚本
执行vim test.sh输入内容为

time scp bigfile -q root@172.25.0.100:/root/Desktop
time scp bigfile -q root@172.25.0.100:/root/Desktop
time scp bigfile -q root@172.25.0.100:/root/Desktop

(4)执行脚本sh test.sh,可以看到使用scp复制三次的原理是三次完全备份的过程。
在这里插入图片描述
(5)若把test.sh的内容scp换成rsync

time rsync -aCq  bigfile -q root@172.25.0.100:/root/Desktop
time rsync -aCq  bigfile -q root@172.25.0.100:/root/Desktop
time rsync -aCq  bigfile -q root@172.25.0.100:/root/Desktop

a表示all,表示增量检测备份,q表示不显示内容。
在这里插入图片描述
可以看到rsync使用时间明显少于scp。

9.3、rsync命令的用法

rsync 文件 远程用户@远程主机ip:远程主机目录
rsync 远程用户@远程主机ip:远程主机目录 文件路径

rsync
-r # 复制目录
-l # 复制链接
-p # 复制权限
-t # 复制时间戳
-o # 复制拥有者
-g # 复制拥有组
-D # 复制设备文件

实验:
(1)在fake_node1主机中执行

  467  mkdir dir
  468  touch dir/file{1..5}
  469  ln -s /root/Desktop/dir/file1  dir/test   #建立链接
  470  ls -l dir/

在这里插入图片描述
(2)在fake主机中开始监控:watch -n 1 ls -lR /mnt/
(3)在fake_node1主机中执行rsync -r dir root@172.25.0.100:/mnt/
(4)读取fake主机中的监控信息发现目录和文件均已传输至/mnt/但是链接没有送达。在这里插入图片描述
(4)远程删文件,在fake_node1主机中执行
ssh root@172.25.0.100 “rm -fr /mnt/*”
(5)若执行rsync -r dir/ root@172.25.0.100:/mnt/表示只传输目录里的内容,目录本身不传输。
在这里插入图片描述
(6)若传输时候不想忽略链接,执行
rsync -lr dir/ root@172.25.0.100:/mnt/
(7)若在fake_node1更改文件权限,传输过去的文件并不会更改权限,若想附带权限传输,执行rsync -plr dir/ root@172.25.0.100:/mnt/

注:同理,若要复制时候附带拥有人加o,附带组加g,附带时间加t,附带设备文件加D。

9.4、文件归档命令的使用

tar cf etc.tar /etc/ #etc目录下文件归档
tar tf etc.tar #查看归档
在这里插入图片描述
tar Pcf aa.tar /etc/ #注意归档后文件的区别(加P保留根)
tar tf aa.tar
在这里插入图片描述
tar cvf etc.tar /etc/ #c表示创建,v表示显示过程,f表示指定文件名称
tar xf etc.tar #解档

例:如何把文件把文件加入归档文件
在这里插入图片描述
执行tar rf etc.tar file然后执行tar tf etc.tar查看发现file文件加入归档etc.tar
在这里插入图片描述

例:从etc.tar中解档指定文件
执行tar f etc.tar --get file
在这里插入图片描述

例:删除归档文件etc.tar中的指定文件file命令为:
tar f etc.tar --delete file

例:解档到指定路径
tar xf etc.tar -C /root/

9.5、文件压缩

Liunux中四种压缩文件类型:gz、bz2、zip、xz

9.5.1、zip格式

zip -r etc.tar.zip etc.tar   #把etc.tar文件压缩成zip格式

在这里插入图片描述
压缩后执行du -sh etc.tar.zip查看压缩后文件大小
zip格式解压指令为

unzip etc.tar.zip

9.5.2、gz格式

gzip etc.tar      #gz格式压缩
gunzip etc.tar    #gz格式解压

9.5.3、bz2格式

bzip2 etc.tar   
bunzip2 etc.tar.bz2

9.5.4、xz格式

xz etc.tar
unxz etc.tar.xz

9.5.5、打包压缩一步完成

tar zcf etc.tar.gz /etc/   #打包并压缩成gz格式
tar jcf etc.tar.bz2 /etc/  #打包并压缩成bz2格式
tar Jcf etc.tar.xz /etc/   #打包并压缩成xz格式

tar zxf etc.tar.gz         #解压gz格式
tar jxf etc.tar.bz2        #解压bz2格式
tar Jxf etc.tar.xz         #解压xz格式
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

九、Linux系统中的文件传输 的相关文章

  • 尝试安装 LESS 时出现“请尝试以 root/管理员身份再次运行此命令”错误

    我正在尝试在我的计算机上安装 LESS 并且已经安装了节点 但是 当我输入 node install g less 时 出现以下错误 并且不知道该怎么办 FPaulMAC bin paul npm install g less npm ER
  • 无法使用 wget 在 CentOS 机器上安装 oracle jdk

    我想在CentOS上安装oracle java jdk 8 我无法安装 java jdk 因为当我尝试使用命令安装 java jdk 时 root ADARSH PROD1 wget no cookies no check certific
  • Linux 内核标识符中前导和尾随下划线的含义是什么?

    我不断遇到一些小约定 比如 KERNEL Are the 在这种情况下 是内核开发人员使用的命名约定 还是以这种方式命名宏的语法特定原因 整个代码中有很多这样的例子 例如 某些函数和变量以 甚至 这有什么具体原因吗 它似乎被广泛使用 我只需
  • Linux 中什么处理 ping?

    我想覆盖 更改 linux 处理 ping icmp echo 请求数据包的方式 这意味着我想运行自己的服务器来回复传入的 icmp 回显请求或其他 数据包 但为了使其正常工作 我想我需要禁用 Linux 的默认 ping icmp 数据包
  • 多处理:仅使用物理核心?

    我有一个函数foo它消耗大量内存 我想并行运行多个实例 假设我有一个有 4 个物理核心的 CPU 每个核心有两个逻辑核心 我的系统有足够的内存来容纳 4 个实例foo并行但不是 8 个 此外 由于这 8 个核心中的 4 个是逻辑核心 我也不
  • 查找哪些页面不再与写入时复制共享

    假设我在 Linux 中有一个进程 我从中fork 另一个相同的过程 后forking 因为原始进程将开始写入内存 Linux写时复制机制将为进程提供与分叉进程使用的不同的唯一物理内存页 在执行的某个时刻 我如何知道原始进程的哪些页面已被写
  • ftrace:仅打印trace_printk()的输出

    是否可以只转储trace printk 输出于trace文件 我的意思是过滤掉函数跟踪器 或任何其他跟踪器 中的所有函数 一般来说 您可以在选项目录中关闭选项 sys kernel debug tracing options Use ls显
  • 查找哪个程序运行另一个程序

    我有一个 NAS 运行在 Redhat Linux 的有限版本上 我按照指示破解了它 这样我就可以访问 shell 这很有帮助 我还做了一些修改 其他人也做过修改 除了一个问题之外 它们似乎都工作得很好 不知何故 每隔 22 天 系统就会关
  • 在脚本内使用不带密码的 sudo

    由于某种原因 我需要作为用户在没有 sudo 的情况下运行脚本 script sh 该脚本需要 root 权限才能工作 我认为将 sudo 放入 script sh 中是唯一的解决方案 让我们举个例子 script sh bin sh su
  • 是否可以创建一个脚本来保存和恢复权限?

    我正在使用 Linux 系统 需要对一组嵌套文件和目录进行一些权限实验 我想知道是否没有某种方法可以保存文件和目录的权限 而不保存文件本身 换句话说 我想保存权限 编辑一些文件 调整一些权限 然后将权限恢复到目录结构中 将更改的文件保留在适
  • 如何在基于 Linux 的系统上的 C 程序中使用 mqueue?

    如何在基于 Linux 的系统上的 C 程序中使用 mqueue 消息队列 我正在寻找一些好的代码示例 可以展示如何以正确且正确的方式完成此操作 也许是一个操作指南 下面是一个服务器的简单示例 该服务器接收来自客户端的消息 直到收到告诉其停
  • 进程退出后 POSIX 名称信号量不会释放

    我正在尝试使用 POSIX 命名信号量进行跨进程同步 我注意到进程死亡或退出后 信号量仍然被系统打开 在进程 打开它 死亡或退出后是否有办法使其关闭 释放 早期的讨论在这里 当将信号量递减至零的进程崩溃时 如何恢复信号量 https sta
  • 如果在等待“read -s”时中断,在子进程中运行 bash 会破坏 tty 的标准输出吗?

    正如 Bakuriu 在评论中指出的那样 这基本上与BASH 输入期间按 Ctrl C 会中断当前终端 https stackoverflow com questions 31808863 bash ctrlc during input b
  • C++ Boost ASIO 简单的周期性定时器?

    我想要一个非常简单的周期性计时器每 50 毫秒调用我的代码 我可以创建一个始终休眠 50 毫秒的线程 但这很痛苦 我可以开始研究用于制作计时器的 Linux API 但它不可移植 I d like使用升压 我只是不确定这是否可能 boost
  • Fortran gfortran linux 中的“分段错误(核心转储)”错误

    我正在创建一个程序 该程序将分析目录中的文件 fits 然后它将在另一个目录中创建另一个文件 txt 它只是一个转换器 当我尝试执行该程序 编译正常 时 它给了我一条错误消息 程序收到信号 SIGSEGV 分段错误 无效的内存引用 此错误的
  • Windows CE 与嵌入式 Linux [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 现在我确信我们都清楚 Linux 与 Windows 桌面的相对优点 然而 我对嵌入式开发世界的了解却少得多 我主要对行业解决方案感兴
  • 高效的内存屏障

    我有一个多线程应用程序 其中每个线程都有一个整数类型的变量 这些变量在程序执行期间递增 在代码中的某些点 线程将其计数变量与其他线程的计数变量进行比较 现在 我们知道在多核上运行的线程可能会无序执行 一个线程可能无法读取其他线程的预期计数器
  • 如何查询X11显示分辨率?

    这似乎是一个简单的问题 但我找不到答案 如何查询 通过 X11 存在哪些监视器及其分辨率 查看显示宏 http tronche com gui x xlib display display macros html and 屏幕宏 http
  • 捕获实时流量时如何开启纳秒精度?

    如何告诉 libpcap v1 6 2 将纳秒值存储在struct pcap pkthdr ts tv usec 而不是微秒值 捕获实时数据包时 Note This question is similar to How to enable
  • 为什么C Clock()返回0

    我有这样的事情 clock t start end start clock something else end clock printf nClock cycles are d d n start end 我总是得到输出 时钟周期是 0

随机推荐

  • 回归分析结果表格怎么填_回归分析表怎么看懂?

    展开全部 我给你解读一份stata的回归表格吧 应该有标准表格的所有内容了 因为你没有给范62616964757a686964616fe4b893e5b19e31333332643336例 不过我们考试基本就是考stata或者eview的输
  • AD7606调试过程与源码

    公司有一个项目用到了AD7606 控制器用的STM32 使用的模式是并行16位模式 程序刷好之后发现读取的AD数据乱码 结果发现是因为AD7606的接地不对 当然这个问题是我师傅找出来的 查找的过程如下 用示波器看了BUSY线 转换线等各种
  • Python的request库应用

    我是精神抖擞王大鹏 不卑不亢 和蔼可亲 计算机硕士 目前小米大数据开发 日常会分享总结一些自己面试实际问题的回答 欢迎一起讨论 公众号 diting dapeng Requests是一常用的http请求库 它使用python语言编写 可以方
  • matlab 批量读取execl(csv)文件

    一直没时间整理自己写的垃圾代码 如今代码乱的一团糟 今天把matlab读取excel文件拿出来 需要根据数据格式稍作修改就可以用 读取核心的语句莫过这两句 dir csvread 文件下载 read csvdata author enjoy
  • NoSQL和关系型数据库的区别和使用场景

    NoSQL和关系型数据区别 文章目录 NoSQL和关系型数据区别 一 关系型数据库遵循ACID规则 1 A Atomicty 原子性 2 C Consistency 一致性 3 I Isolation 独立性 4 D Durability
  • Linux笔记

    命令 提供一定功能的工具 ssh 提供远程登录功能 参数 命令的作用对象 193 3 3 3 远程登录的作用主机 选项 命令作用的方式 p 22 通过22端口登录到主机 电脑 外壳shell 内核 输入输出设备 用户 提供意愿 转化为命令与
  • nestjs:Cannot read property ‘retryAttempts‘ of undefined

    描述 Cannot read property retryAttempts of undefined 解决 检查数据库的配置是否有问题
  • 日期格式化方法

    时间格式化 有时候我们会用到时间的展示 时间的展示种类也是各种各样 对于不用的产品需要不同的样式 这时候就需要我们做一下时间的格式化处理 下面是一种常见的日期显示方式 代码如下 格式化时间 param String date 原始时间格式
  • 23种设计模式(七) —— 手写实现 Builder 模式 (组装复杂实例)

    文章目录 一 Builder 模式 二 示例 2 1 示例实现功能 2 2 具体实现 2 3 运行结果 三 Builder 模式中登场的角色 四 原文链接 Author Gorit Date 2021 10 24 2021年发表博文 22
  • 你还不知道的简历准备及面试技巧

    最近已经不止听到一位朋友吐槽工作不好找了 一波又一波的裁员潮 ChatGPT 等人工智能工具的爆火 1158 万的应届毕业生 都让今年 IT 行业的就业状况雪上加霜 面对愈加激烈的求职竞争 作为程序员 应该掌握哪些面试技巧 本文邀请了 2
  • Internet的路由选择协议(RIP、OSPF)

    有关路由选择协议的几个概念 1 理想的路由算法 路由选择协议的核心就是路由算法 即路由器通过算法来获得路由 一个理想的路由算法应该具有以下的特点 算法必须是正确和完整的 算法在计算上应简单 算法应能适应通信量和网络拓扑的变化 算法应具有稳定
  • OSG仿真案例(9)——JY61陀螺仪控制飞机姿态

    前言 在调试osg中模型运动姿态时 总觉得直观性不够强 所以有了想买个硬件陀螺仪 当时并不知道这个硬件应该叫什么名字 在淘宝搜索角度传感器的 几个驱动 1 CH340驱动 这个驱动在自带资源包里面 但是不可以用 只能自己在网上找 发现是型号
  • 数据库JDBC --- Java Database Connectivity

    数据库JDBC Java Database Connectivity 关于JDBC 什么是JDBC JDBC的组成 JDBC API JDBC的数据类型 创建JDBC的步骤 常用属性 Result Set ResultSetMetaData
  • Oracle使用IN 不能超过1000问题

    1 美图 2 背景 是写代码的是遇到问题 ORA 01795 列表中的最大表达式数为 1000 虽然使用了 批量处理解决了问题 但是因为是使用了myIbatis spring boot oracle 我不太想 直接改代码 想通过修改myIb
  • 25行jQuery代码实现轮播图

    对于刚刚学习前端的同学来说 做一个轮播图是非常不容易的 今天我就将自己的心得跟和大家分享一下 实现轮播图有很多方法 今天我们就讲其中一种方法 让图片显示在一行内 然后让图片有规律的向左移动 大家可以先看看效果http www shareko
  • sqli-labs (less-24)

    sqli labs less 24 进入24关 输入用户名和密码 登入后会显示你的用户名 下面的输入框就是改密码 我在输入用户名和密码的位置试了很多次 发现用户名和密码的位置是没有注入点的 这里我们先点击右下角的 New User clic
  • Flutter-设置分割线Divider

    Divider height 1 0 indent 0 0 color MyColors color gray 150
  • PowerBI开发 第十八篇:行级安全(RLS)

    PowerBI可以通过RLS Row level security 限制用户对数据的访问 过滤器在行级别限制数据的访问 用户可以在角色中定义过滤器 通过角色来限制数据的访问 在PowerBI Service中 workspace中的memb
  • uniapp getUserProfile:fail invalid session

    uniapp uni getUserProflie 部分安卓手机调不起来弹窗 错误原因 应该在uni getUserProflie之前调用uni login 但是直接在uni login的成功回调里面调用uni getUserProflie
  • 九、Linux系统中的文件传输

    九 Linux系统中的文件传输 实验准备 两台可以通信的主机 systemctl disable firewalld systemctl stop firewalld 9 1 scp命令 上传 scp 本地文件 远程主机用户 远程主机ip