Linux基础(课内版)08(20210721笔记)
归档和传输文件
管理压缩的tar存档
打包和压缩
打包:也可以称为存档,将多个文档打包成一个文件进行存档。这个打包起来的文件是一个结构化的文件数据序列,有自己的索引,索引到里面的不同文件中。
压缩:压缩文件的本质是通过算法以一种更节省存储空间的方式来存储数据。
归档和压缩最常使用 tar 命令,可以通过 tar 命令将多个文件汇集成一个文件进行存档, 并且支持使用不同的压缩算法进行压缩。
打包
【例1】将整个 /etc 目录打包成 etc.tar 存储在当前用户家目录下
tar -cvf ~/etc.tar /etc
【例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
tar -cvjf etc.bz /etc
tar -cvJf etc.xz /etc
du -ms
【例5】解压缩归档的文件 etc.gz
tar -tf etc.gz
tar -xf etc.gz
【例6】解压缩归档的文件 etc.gz 到 ~/test
mkdir ~/test
tar -xvf etc.gz -C ~/test
**补充:zip 和 unzip **
示例:
zip -r -o test.zip test1.txt test2
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
使用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
查看软件包的更改信息
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 仓库只需在 /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*
yum list | grep httpd
【例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
查看软件安装、删除记录
yum history
yum history undo <X>
yum 组管理
yum 管理工具有组的概念,是针对特定目的而一起安装的相关软件集合,可以实现统一的管理。
yum group list
yum group list hidden
yum group info <group>
yum group install <group>
管理软件包模块流
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
【例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>
条件
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
find / -inum 34923782 -exec rm -f {} \;
【例5】查找 /home 下权限为 764 的文件
find /home -perm 764
find /路径 -nouser
find /路径 -文件名
find /路径 -size 0
find / -iname '*messages*'
find /home -perm 764
find /home -perm -764
find /home -perm /764
which和whereis
which <command>
whereis <command>
用于对命令进行查找,查找出命令的文件。
教材总结
练习题
|