IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux基础(课内版)08(20210721笔记) -> 正文阅读

[系统运维]Linux基础(课内版)08(20210721笔记)

归档和传输文件

管理压缩的tar存档

打包和压缩

打包:也可以称为存档,将多个文档打包成一个文件进行存档。这个打包起来的文件是一个结构化的文件数据序列,有自己的索引,索引到里面的不同文件中。

压缩:压缩文件的本质是通过算法以一种更节省存储空间的方式来存储数据。

归档和压缩最常使用 tar 命令,可以通过 tar 命令将多个文件汇集成一个文件进行存档, 并且支持使用不同的压缩算法进行压缩。

打包

【例1】将整个 /etc 目录打包成 etc.tar 存储在当前用户家目录下

tar -cvf ~/etc.tar /etc #后缀名 .tar 仅用于方便辨识

【例2】将当前目录下的 1.txt,2.txt,3.txt 打包成 test.tar 存储在当前用户家目录下

tar -cvf ~/test.tar 1.txt 2.txt 3.txt #多个文件间使用空格分隔 

du -ms test.tar #查看文件总大小(并显示数据)

注意事项:

① -c 表示创建;-v 显示详细过程;-f 指定文件,必须在选项的最后一位。 (可以组合用)

在这里插入图片描述

② 用户需要具有读取权限,才能够通过 tar 命令进行打包,否则将被跳过。

③ 在归档过程中,tar 会存储文件的所有权及权限。

【例3】提取 test.tar 存档文件

mkdir test/backup 

cd test/backup 

tar -xvf ~/test.tar #将文件提取到当前目录

注意事项:

① 通常会提取到空目录下,以确保不会覆盖现有同名文件。

② 使用 root 用户提取将保留的所有权和权限;普通用户提取将归该用户所有。

③ 默认提取的权限将减去umask,可以用 -p 选项保留权限。

压缩

压缩算法

在这里插入图片描述

注意事项:

① 压缩的程度与数据类型有关,不能单纯考虑压缩算法。

② 压缩比越高的压缩算法,压缩时间越长,兼容性越差。

【例4】以不同的压缩算法打包并压缩 /etc 进行归档

tar -cvzf etc.gz /etc #使用 gzip 算法 

tar -cvjf etc.bz /etc #使用 bzip 算法 

tar -cvJf etc.xz /etc #使用 xz 算法 

du -ms  #依次查看压缩文件的大小(ms以兆为单位)

【例5】解压缩归档的文件 etc.gz

tar -tf etc.gz #列出压缩文件的内容 

tar -xf etc.gz #自动识别压缩算法进行解压,注意文件的覆盖

【例6】解压缩归档的文件 etc.gz 到 ~/test

mkdir ~/test  

tar -xvf etc.gz -C ~/test #使用 -C 选项指定解压缩的路径

**补充:zip 和 unzip **

示例:

zip -r -o test.zip test1.txt test2 #r 表示递归,o 指明输出包的名字 

unzip <文件>

在系统之间安全地传输文件

使用SCP传输文件

secure copy,使用ssh协议进行身份验证以及传输过程中的加密,可以在系统间安全的复制文件。

ssh 既能实现安全的远程运行 shell 命令,也能够实现文件的安全传输。使用 scp 时,会应用 ssh 的配置,例如 rsa 密钥等。

scp <source> <destination> #将某个文件传输到某个路径

【例7】将本地的 /test/etc.gz 复制到 servera 上的 /home/student 目录

scp /test/etc.gz servera:/home/student #从本地传输到远端 

默认使用当前用户进行传输,可以通过 user@host:dir 来指定用户。

在这里插入图片描述

参数:传输成功率、文件大小、传输速度

【例8】将 servera 的 /home/student/etc.gz 复制到本地的 /test 目录下

scp servera:/home/student/etc.gz /test #从远端复制到本地

【例9】将 servera 的整个 /var/log 目录都复制到本地的 /test 目录下

scp -r servera:/var/log /test #使用 -r 选项进行递归

使用sftp传输文件

scp:使用非常简单,但是要求管理员了解对端的文件结构。在实际使用的时候可能会带来一定的使用限制。

sftp:同样是基于 ssh 协议进行身份验证以及传输过程中的加密。它通过建立与远端主机的 sftp 连接进行交互式的文件传输。【交互式】

命令说明:

sftp <hostname/IP> #默认使用当前用户 

查看及跳转目录:cd、pwd、ls、mkdir、rmdir,本地操作需要在命令前上 l(local)。

文件传输:put 上传文件;get 下载文件;-r 选项进行递归。

退出:exit

【例10】使用 sftp 向 servera 的 /home/student/test 上传输 etc.tar
在这里插入图片描述

pwd是被sftp连接的机子的当前路径,lpwd是本机的当前路径

在系统间安全地同步文件

使用rsync同步

rsync,remote synchronize 顾名思义是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。

【特性】

能更新整个目录树和文件系统

有选择性的保持符号链接、硬链接、文件所有者、权限、设备以及时间等

对于多个文件来说,内部机制减少文件等待的延时

能用 rsh、ssh 或直接端口做为传输入端口

支持匿名 rsync 同步文件,是理想的镜像工具

语法:rsync [option] <source> <destination> 

选项:

-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性

-r, --recursive 对子目录以递归模式处理

-l, --links 保留软链接

-p, --perms 保持文件权限

-t, --times 保持文件时间信息

-g, --group 保持文件属组信息

-n,执行空运行,针对真实情况进行模拟,以确保重要的文件不被覆盖或删除

-A,保留 ACL 权限

-X,用于保留 SELinux 上下文

【例11】使用 rsync 向 servera 的 /home/student 同步 ~/abc 目录 的文件
在这里插入图片描述

注意事项:

① rsync 默认只进行增量同步,不删除远端文件。假设本地删除了某文件,同步后不会删除对端的文件。添加参数 --delete 可以执行删除。

② 同步目录的写法:

/etc 同步/etc目录及以下目录

/etc/ 仅同步/etc目录以下的目录,不拷贝/etc

③ 为减少同步的时间,存档模式不会保留硬链接数,直接同步文件内容,或者说硬链接关系失效。如果要保留硬链接的话,需要使用 -H 选项。

安装和更新软件包

解释和调查RPM软件包

源码包和二进制包

源码包

1)不能直接使用,需要先进行编译

2)一般可以跨不同的系统版本使用,只要在相应的系统上进行相应的编译即可

3)使用高级语言,对阅读和修改友好

二进制包

1)直接复制到相应路径使用即可

2)一般不能在不同系统中使用

RPM软件包

RPM:Red Hat Package management,提供一种标准的方式打包软件,然后进行分发,与存档/提取软件相比,管理更简单、统一,例如提供跟踪软件包安装的文件等功能。

包在对应地官网上可以找到

所有已安装的软件包都会存储在系统本地的 RPM 数据库中。

RPM的软件包命名方式: name-version-release-architecture(名称-版本-版本号-架构环境)

【示例】httpd-tools-2.4.6-7.el7.x86_64.rpm

① httpd-tools就是描述这个软件的内容

② 2.4.6:原始软件的版本号

③ 7.el7:发行版号

④ x86_64:该软件的使用架构环境

【组成部分】

1)软件包的安装文件

2)与数据包相关的信息(元数据

3)在安装、更新或删除此软件包时,可能运行的脚本

除此以外,RPM 软件包通常都会有软件提供商使用 GPG 密钥对其做的数字签名以确保软件的完整性。

【其他事项】

a) 软件包的依赖关系

1——>2——>3

1依赖于2,2依赖于3,依次安装软件

1——>2——>3——>1

形成闭环的依赖关系,先忽视依赖关系,强行安装某一个,再执行后续安装

有时可以随便先装任一个,有时必须先启动特定一个(反关系)

b) 软件包的安装路径

一般情况下,二进制包不允许更改安装路径,必须安装在某个路径中。这样就能够快速定位查看相应位置。

最安全,可以看到整个安装过程,但应用场景不多

c) 软件包的管理工具

rpm 工具——手动管理软件包的低级工具。

yum 工具——软件包**自动管理(高级)**工具,可以自动解决依赖关系。

RPM实用程序

查看软件包的信息

rpm -qa #查看所有已经安装的软件包 

rpm -q  #查看软件包的版本信息 

rpm -qi  #查看软件包的详细信息 

查看软件包的文件

rpm -ql  #查看软件包安装的所有文件 

rpm -qc  #查看软件包安装的配置文件 

rpm -qd  #查看软件包安装的文档文件

【例1】查看 wonderwidgets 软件包安装后会包含哪些文件

rpm -qlp ~/wonderwidgets-1.0-4.x86_64.rpm 

使用 -p 选项在软件安装前查看其文件,需要使用本地包的完整路径

【例2】查看 /etc/selinux 文件来源于哪个软件

rpm -qf /etc/selinux 

使用 -f 选项,通过文件查询其软件

查看 shell 脚本和更改信息

rpm -q --scripts #查看安装或删除软件包之前或之后运行的shell脚本 

在这里插入图片描述

查看软件包的更改信息

rpm -q --changelog   

rpm2cpio 实用程序

rpm2cpio <软件包全称> | cipo –id “<file>

rpm2cpio 程序可以将 rpm 包的文件传递到 cipo 归档工具,通过管道符后面的命令提取出软件包中的某个文件。适用于一些误删除场景。

安装软件

rpm -ivh <软件包全称> 

一般可能通过 wget 先下载软件包,再执行命令安装。

软件包的安装,除了内核以外,只能安装一个版本。不管是使用什么软件包管理 工具都一样,是系统决定的

启用Yum软件存储库

YUM软件包管理器

YUM:是一个在 RedHat、Fedora 以及 SUSE 中的 Shell 前端软件包管理器。

基于 RPM 包管理,能够从指定的软件仓库中自动下载 RPM 包并安装,并自动处理依赖性关系。

yum 仓库可以是 URL、文件服务器、光盘等所有能够提供软件包的角色。

yum 仓库

配置文件:/etc/yum.repos.d/XXX.repo

yum repolist #列出所有配置的 yum 仓库

在这里插入图片描述

配置 yum 仓库

配置 yum 仓库只需在 /etc/yum.repos.d 目录下新建一个后缀为 .repo 的配置文件。

a) 新建 .repo 文件直接编写

在这里插入图片描述

备份原镜像文件,以免出错后可以恢复

下载新的.repo文件到/etc/yum.repos.d

运行yum makeache

b) 使用命令配置

yum-config-manager --add-repo=<baseurl>

在 /etc/yum.repos.d 目录下创建一个新的 repo 文件

在这里插入图片描述

c) 其他方法

安装 yum 仓库的 rpm 包

一些第三方会提供 yum 仓库的 rpm 包,安装之后将会生成相应的 .repo 文件,即可使用。

【示例】

rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm 

使用 yum 仓库的 .repo 文件

一些第三方会提供封装成 .repo 文件的 yum 仓库,只需下载并导入至 /etc/yum.repos.d 目录下即可。

【示例】

wget -p /etc/yum.repos.d https://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo

使用 yum 命令查看

yum list #列出已安装的和可用的软件包 

yum list <package> #查看某个软件包 

yum info <package> #查看某个软件包的详细信息 

yum provides <file> #列出提供某文件的软件包信息

【例3】查看 httpd 软件包的信息

yum list *httpd* #查看关键词 httpd 的软件包信息 

yum list | grep httpd #通过 grep 命令筛选 

【例4】查看 /var/www/html 文件的软件包的信息

yum provides /var/www/html

使用 yum 命令管理软件

yum install <package> #安装软件包,并自动解决依赖关系

yum update <package> #获取并安装更新版本的软件包

yum remove <package> #删除已安装的软件包 

yum localinstall <package> #安装本地软件包,并自动解决依赖关系

yum list kernel #查看内核信息 

uname -r #查看内核版本,-a 选项可以查看详细版本信息 

查看软件安装、删除记录

yum history #查看事务历史记录 

yum history undo <X> #撤销某条记录的操作

yum 组管理

yum 管理工具有组的概念,是针对特定目的而一起安装的相关软件集合,可以实现统一的管理。

yum group list #查看 yum 组 

yum group list hidden #查看隐藏的 yum 组 

yum group info <group> #显示组的相关信息

yum group install <group> #安装 yum 组的软件

管理软件包模块流

YUM仓库类型

BaseOS 存储库:BaseOS 存储库以传统 RPM 包的形式提供底层核心 OS 内容, BaseOS 组件的生命周期与之前的 Red Hat Enterprise Linux 发行版中的内容相同。

AppStream 存储库:Application Stream 存储库提供用户可能需要的应用程序。

AppStream 允许您在独立的生命周期中安装其他版本的软件,并使您的操作 系统保持最新,同时拥有适合您的用例的正确版本的应用程序

在这里插入图片描述

访问Linux文件系统

识别文件系统和设备

硬盘分区

不同分区部分可以通过不同的文件系统进行格式化或用于不同途径

MBR:每个驱动器最多支持4个主分区,最多划分 2TB 的磁盘。

GPT:每个驱动器最多支持128个分区。可以对磁盘进行 18EB 的分区。

要让文件系统地内容在文件系统层次结构中可用。必须将它挂载到一个空目录(挂载点)上

在这里插入图片描述

分区表

在这里插入图片描述

文件系统

文件系统定义了数据存储的规则和方法,包含保存数据的文件和目录的有序结构。

常见的文件系统包括:ext3、FAT、NTFS、oracle。

在这里插入图片描述

挂载文件系统

挂载提供了系统访问存储介质的入口。(挂载点)

驻留于可移动存储设备上的文件系统需要挂载后才能访问。

挂载对象:文件系统(本地硬盘分区、光盘、网络文件系统)

常见的文件系统

移动设备:FAT

网络共享:NFS、Samba

本地硬盘文件系统:ext3、ext4、xfs

挂载方式

mount 命令

将挂载信息写入 /etc/fstab 配置文件

通过 autofs 自动挂载,一般用于光盘和网络文件系统

挂载和存储设备

存储设备主要指存储数据的块存储设备(block),保存在 /dev 目录下。

使用 lsblk 命令识别块存储设备

存储设备的命令方式

s:表示 SCSI、SATA/PATA(串行/并行ATA接口)盘等。

v:表示虚拟磁盘。 以小写字母表示磁盘编号,数字表示分区编号。

示例:

/dev/sda 系统第一块物理硬盘(或者没识别到是虚拟的)

/dev/vdb 系统第二块虚拟硬盘

/dev/sda2 系统第一块物理硬盘的第二个分区(或者没识别到是虚拟的)

挂载:mount命令

mount <dev> <dir> #将某个设备挂载到某个目录 

umount <dir> #解除挂载,需要所有进程都停止访问挂载点下的数据

【例1】在 Linux 中挂载新分区 /dev/sdb1(U盘)

mount /dev/sdb1 /mnt #也可以使用文件系统的唯一识别符UUID实现 

【例2】在 Linux 中插入光盘,然后进行挂载

mount /dev/cdrom /mnt 

【例3】解除光盘的挂载

umount /mnt
lsblk  #列出指定块设备或所有可用设备的详细信息

lsblk -fp  #列出设备的完整路径、UUID和挂载点,以及分区中文件系统类型

lsof <dir> #列出所给目录中所有打开的文件以及访问它们的进程

识别文件系统和设备

检查文件系统

df #查看文件系统状态 

df -m

du <file> #查看文件大小

常用选项:-m——以 m 为单位;-h——人性化显示大小

在这里插入图片描述

查找文件

locate #通过预生成数据库的文件名或文件路径搜索 

find #通过爬取整个文件系统来实时搜索文件系统 

which和whereis #用于查找命令的文件

locate

locate <keyword>

updatedb #更新检索数据库

根据关键字进行模糊搜索的手段,基于索引数据库进行定位。该索引非实时更新,可以使用命令 updatedb 手动更新。

常用选项:-i ===> 执行不区分大小写; -n X ===> 限制显示多少行。

示例

locate secure

find

find <dir> <condition> #根据条件在某个目录筛选文件(比locate慢,但准确度更高)

条件

size:大小(k千字节,M兆字节,G千兆字节)

user:所有者

group:所有组

name:名称

uid:用户 id

gid: 组 id

perm:权限

mmin:(以分钟表示的)时间

type:类型(f普通文件,d目录,l软链接,b设备)

-links +数字:具有特定硬链接数

【例1】查找 /etc 下大于 3M 的文件

find /etc -size +3M 

【例2】查找 .txt 后缀的文件

find / -name *.txt  

【例3】查找 /etc 下 root 用户的大小在 2-5M 的文件

find /etc -user root -size +2 -size -5M

【例4】查找并删除文件 1.txt 的所有的硬链接

find <dir> <condition> -exec <command> <option> {} \; 
_____________________  _____ __________________ __ __
  先进行查找 |  对结果执行命令  | 执行的命令 |find命令的结果,分号表示命令结束,\为转义符

ls -i 1.txt #查看 1.txt 的 inode number,用于筛选所有的硬链接 

find / -inum 34923782 -exec rm -f {} \;  

【例5】查找 /home 下权限为 764 的文件

find /home -perm 764
find /路径 -nouser #找无主文件

find /路径 -文件名 #找对应文件名的文件

find /路径 -size 0 #找空文件

find / -iname '*messages*' #不区分大小写搜索含messages文件

find /home -perm 764 #查找home下权限为764的文件

find /home -perm -764

find /home -perm /764

which和whereis

which <command> 

whereis <command>

用于对命令进行查找,查找出命令的文件。

在这里插入图片描述

教材总结

在这里插入图片描述

练习题

在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-07-22 23:07:26  更:2021-07-22 23:07:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/4 11:28:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码