Linux入门真经-034文件系统知识与常用命令补充

2024-03-04 17:48

本文主要是介绍Linux入门真经-034文件系统知识与常用命令补充,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、df与du

df:显示已挂载磁盘设备的使用情况

常用选项:

-h:大小数值用更易于人理解的方式显示

-i:显示inode用量而非默认磁盘空间使用信息

 

du:显示目录空间的占用情况

常用选项:

-s查看目录内文件总共占了多大空间

-h使用合适的单位使得数据大小更易读

 

2、dd命令

 

dd可以从标准输入或文件中读取数据,在输出到指定的文件。乍一看有点像复制的作用,不过dd的功能不止于此,更多的时候dd可以做到块设备级别的备份。

 

提到dd命令,此处再介绍两个linux中比较奇特的设备文件:

/dev/null: 数据黑洞;任何数据传递到该设备下都会悄无声息地被吞噬。以后我们介绍脚本编程的时候会用到,我们可以将一些不需要的输出重定向到null设备中。

         /dev/zero:吐零机;存放了无数个0,常用于破坏分区。

dd用法:

dd if=/PATH/FROM/SRC of=/PATH/TO/DEST [bs=# count=#]

     bs=#:block size, 复制单元大小;

     count=#:复制多少个bs;

下面举一些例子来示范dd的妙用。

 

1、  在磁盘无法继续分区的情况下,扩展交换分区

我们可以用dd命令构建出一个大文件,用于交换分区的制作。

 

[root@localhost udev]# dd if=/dev/zero of=/tmp/swapblock bs=1M count=512

512+0 records in

512+0 records out

536870912 bytes (537 MB) copied, 21.3359 s,25.2 MB/s

[root@localhost udev]# cd /tmp/

[root@localhost tmp]# ll -h swapblock

-rw-r--r--. 1 root root 512M Aug 30 23:27swapblock

 

我们可以看到,一个512M的大文件就产生了,我们可以直接使用mkswap将其制作成交换分区

 

[root@localhost tmp]# mkswap swapblock

Setting up swapspace version 1, size =524284 KiB

no label,UUID=7dae028a-97cf-46f3-97ed-3d2e008bd189

[root@localhost tmp]# free -m | grep -i swap

Swap:          2047           0        2047

[root@localhost tmp]# swapon swapblock

swapon: /tmp/swapblock: insecurepermissions 0644, 0600 suggested.

[root@localhost tmp]# free -m | grep -i swap

Swap:          2559           0        2559

[root@localhost tmp]#

 

可以看到,swap从2G涨到了2.5G。(swapon时的警告是关于权限的,出于安全考虑,建议将其权限改为600)

 

2、  备份mbr

可以将磁盘的mbr进行备份

如:

 

[root@localhost tmp]# dd if=/dev/sdc of=/tmp/mbr.bak bs=512 count=1

1+0 records in

1+0 records out

512 bytes (512 B) copied, 0.000504673 s,1.0 MB/s

 

接下来我把sdc的mbr破坏掉,再进行还原。(此步骤危险,稍有不慎可能导致数据丢失。不要在有生产数据的机器上实验。数据无价,请勿玩火)

 

[root@localhost tmp]# dd if=/dev/zero of=/dev/sdc bs=1 count=512

512+0 records in

512+0 records out

512 bytes (512 B) copied, 0.00315667 s, 162kB/s

 

重启计算机之前我们先看看目前的分区情况:

 

[root@localhost tmp]# lsblk

...省略输出...

sdc                       8:32   0  20G  0 disk

├─sdc1                    8:33   0    5G  0part

│└─vgpool1-lvol0-real  253:3    0   25G  0lvm 

│   ├─vgpool1-lvol0      253:2   0   25G  0 lvm /mnt/lvmpool0_mount

│   └─vgpool1-snap_lv0   253:5   0   25G  0 lvm /mnt/snap_point

└─sdc2                    8:34   0    5G  0part

  └─vgpool1-snap_lv0-cow253:4    0    1G  0lvm 

    └─vgpool1-snap_lv0   253:5   0   25G  0 lvm /mnt/snap_point

 

重启虚拟机你会发现,sdc空空如也,什么也没有了

 

[root@localhost ~]# lsblk

NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT

sda               8:0    0  20G  0 disk

├─sda1            8:1    0   1G  0 part /boot

└─sda2            8:2    0  19G  0 part

  ├─centos-root253:0    0   17G  0lvm  /

  └─centos-swap253:1    0    2G  0lvm  [SWAP]

sdb               8:16  0   20G  0 disk

sdc               8:32   0  20G  0 disk

sr0              11:0    1 906M  0 rom 

[root@localhost ~]#

 

利用备份还原mbr

 

[root@localhost ~]# dd if=/tmp/mbr.bak of=/dev/sdc bs=512 count=1

1+0 records in

1+0 records out

512 bytes (512 B) copied, 0.032297 s, 15.9kB/s

 

重启虚拟机,再lsblk看看,你会发现恢复成功。

 

3、  整体磁盘拷贝

如:

dd if=/dev/sda of=/dev/sdb

你会得到两块内容一模一样的硬盘。


 

3、软硬链接

 

硬链接

一般来说,一个文件名有一个inode号,inode与文件一一对应。不过,在linux中是允许多个文件名同时指向同一个inode的。所以我们可以通过不同的文件名操纵同一个实际上的文件。而且,这种情况下,删除其中一个文件名,仍然可以通过另一个文件进行访问。

 

比如说张无忌又叫张公子又叫张教主,突然有一天他不叫张教主了,但是你还是能通过张无忌这个名字找到他,虽然称呼没有了,反正还有别的称呼指向这个人。

 

可以通过ln命令来创建硬链接

ln 源文件 目标文件

 

举个例子:

我们将/etc/fstab拷贝一份,然后用ls -i去查看他们的inode号码,发现不通同,所以虽然他们的内容一模一样,但是他们是两个文件,存于系统中的不同地方

 

[root@localhost opt]# cp /etc/fstab/tmp/fstab

[root@localhost opt]# ls -i /etc/fstab/tmp/fstab

16777289 /etc/fstab  16777282 /tmp/fstab

[root@localhost opt]#

 

为/tmp/fstab创建硬链接。

 

[root@localhost tmp]# ln fstab fstab.ln

[root@localhost tmp]# ls -i fstab fstab.ln

16777282 fstab  16777282 fstab.ln

[root@localhost tmp]#

 

可以看到,这两个文件虽然看上去是两个,但是inode号码相同,实际上是一个文件。

如何确定本文件是否有硬链接呢?

 

[root@localhost tmp]# ll fstab

-rw-r--r--. 2 root root 497 Aug 25 02:43fstab

 

如上,权限后面的数字就是链接数,2个代表有两个文件名指向这个inode。

每删除一个文件,链接数就减去1,为0的时候,inode被回收,文件也就真的被删除了。

 

到这里顺便提一句:目录创建时,会创建两个目录项:.和..

.表示本目录,是本目录的硬链接

..表示上一级目录,是上一级目录的硬链接

所以所有目录的链接数都是2+子目录数。

 

软链接

软链接可以理解为快捷方式。快捷方式删除时,原文件访问不受影响。但是原文件删除,快捷方式(软链接)则失效。

创建软链接:

ln -s 源文件 目标文件

如:

 

[root@localhost ~]# ln -s /etc/fstab/tmp/fstab_soft

[root@localhost ~]# ll /tmp/fstab_soft

lrwxrwxrwx. 1 root root 10 Sep  9 09:43 /tmp/fstab_soft -> /etc/fstab

[root@localhost ~]#

 

软链接的权限都是777,但是真正的权限还得看它指向文件的权限。

 

 系统中的文件多如牛毛,我们如何去查找我们需要的文件呢。比如,我看到某个文件有几个硬链接,我想把它彻底删掉,相关的文件又怎么找出来呢?下一节为大家介绍。

 

关注本公众号获取每日更新

这篇关于Linux入门真经-034文件系统知识与常用命令补充的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/773959

相关文章

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Linux samba共享慢的原因及解决方案

《Linuxsamba共享慢的原因及解决方案》:本文主要介绍Linuxsamba共享慢的原因及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux samba共享慢原因及解决问题表现原因解决办法总结Linandroidux samba共享慢原因及解决

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核

《新特性抢先看!Ubuntu25.04Beta发布:Linux6.14内核》Canonical公司近日发布了Ubuntu25.04Beta版,这一版本被赋予了一个活泼的代号——“Plu... Canonical 昨日(3 月 27 日)放出了 Beta 版 Ubuntu 25.04 系统镜像,代号“Pluc

Linux安装MySQL的教程

《Linux安装MySQL的教程》:本文主要介绍Linux安装MySQL的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux安装mysql1.Mysql官网2.我的存放路径3.解压mysql文件到当前目录4.重命名一下5.创建mysql用户组和用户并修

Linux上设置Ollama服务配置(常用环境变量)

《Linux上设置Ollama服务配置(常用环境变量)》本文主要介绍了Linux上设置Ollama服务配置(常用环境变量),Ollama提供了多种环境变量供配置,如调试模式、模型目录等,下面就来介绍一... 目录在 linux 上设置环境变量配置 OllamPOgxSRJfa手动安装安装特定版本查看日志在

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用