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之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

一文详解Java异常处理你都了解哪些知识

《一文详解Java异常处理你都了解哪些知识》:本文主要介绍Java异常处理的相关资料,包括异常的分类、捕获和处理异常的语法、常见的异常类型以及自定义异常的实现,文中通过代码介绍的非常详细,需要的朋... 目录前言一、什么是异常二、异常的分类2.1 受检异常2.2 非受检异常三、异常处理的语法3.1 try-

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

Linux ls命令操作详解

《Linuxls命令操作详解》通过ls命令,我们可以查看指定目录下的文件和子目录,并结合不同的选项获取详细的文件信息,如权限、大小、修改时间等,:本文主要介绍Linuxls命令详解,需要的朋友可... 目录1. 命令简介2. 命令的基本语法和用法2.1 语法格式2.2 使用示例2.2.1 列出当前目录下的文

Linux中的计划任务(crontab)使用方式

《Linux中的计划任务(crontab)使用方式》:本文主要介绍Linux中的计划任务(crontab)使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、前言1、linux的起源与发展2、什么是计划任务(crontab)二、crontab基础1、cro