❤Linux文件、目录与磁盘格式总结❤

文章目录

  • Linux文件、目录与磁盘格式总结
  • Linux文件权限
    • chgrp
    • chmod
    • chown
    • 文件种类
    • Linux文件扩展名
  • Linux文件与目录管理
    • 常用的目录解释
    • 目录树
    • 绝对路径与相对路径
    • cd(切换目录)
    • pwd(显示当前目录)
    • mkdir(建立一个新目录)
    • rmdir(删除空目录)
    • 执行文件路径变量$PATH
    • ls(文件与目录的查看)
    • cp(复制文件或目录)
    • rm(删除文件或目录)
    • mv(移动文件与目录,或重命名)
    • basename(获取文件名)
    • dirname(获取目录名称)
    • cat(显示文件内容)
    • tac(从最后一行开始显示文件内容)
    • nl(查看文件显示行号)
    • more(一页一页显示文件内容)
    • less(前后翻页显示文件内容)
    • head(只看开头几行)
    • tail(只看结尾几行)
    • od(以二进制的方式读取内容)
    • touch(创建新文件)
    • umask(文件默认权限)
    • chattr(配置文件隐藏属性)
    • lsattr(显示文件隐藏属性)
    • 文件特殊权限:SUID、SGID、SBIT
    • file(观察文件类型)
    • which(查找执行文件)
    • whereis(特定目录查找文件)
    • locate和updatedb(建立数据库查找文件)
    • find(指定目录查找文件)
  • Linux磁盘与文件系统管理
    • 磁盘的组成与分区表
    • df(列出文件系统的整体磁盘使用量)
    • du(查看文件系统的磁盘使用量)
    • ln(硬链接)ln -s (软链接)
    • lsblk(列出系统上的所有磁盘列表)
    • blkid(列出设备的UUID等参数)
    • fdisk(磁盘分区工具)
    • parted(磁盘分区工具)
    • mkfs(磁盘格式化)
    • xfs_repair文件系统校验
    • xfs_admin(修改XFS文件系统的UUID与Label name)
    • fsck.ext4处理ext4文件系统
    • tune2fs(修改ext4的label name和UUID)
    • mount(文件系统挂载)
    • umount(解除挂载)
    • /etc/fstab(开机自动挂载)
    • 使用物理分区创建内存交换分区(mkswap,free,swapon,swapoff)
    • 使用文件创建内存交换分区(dd,mkswap,swapon,swapoff)
  • Linux系统常见的压缩命令
    • gzip/zcat
    • bzip2/bzcat
    • xz/xzcat
    • zip/unzip
    • tar(打包命令)
    • xfsdump(XFS文件系统备份)
    • xfsrestore(XFS文件系统还原)
    • dd(随机数据生成,用法不止这个)
    • cpio(文件归档和备份工具)

Linux文件、目录与磁盘格式总结

Linux文件权限

chgrp

chgrp [选项] 新组名 文件名
-R :递归第修改目录及其下的所有文件和子目录的所属组
例如:
chgrp -R group file         # 将目录dir1及旗下所有文件和子目录所属组修改为group1

chmod

chmod [选项] 模式 文件名
选项:
-R:递归第修改目录及其下的所有文件和子目录的权限
模式:
r:4   w:2   x:1(字符数字两种都可)
例如:
chmod 777 wenjian.txt
chmod rwx wenjian.txt
chmod -r wenjian.txt

chown

chown [选项] 属主名 文件名
选项:
-R:递归第修改目录及其下的所有文件和子目录的所属主(属主是第一个,属组是第二个)
例如:
chown -R root csq

文件种类

  1. 常规文件分为:纯文本文件(*.txt),二进制文件(例如cat),数据文件(特点就是使用cat读取会乱码)

  2. 目录:第一个属性为【d】例如:drwxrwxrwx

  3. 链接文件:第一个属性为【l】例如:lrwxrwxrwx

  4. 设备文件:

  • ​ 区块设备文件:第一个属性为【b】
  • ​ 字符设备文件:第一个属性为【c】
  1. 数据接口文件:第一个属性为【s】

  2. 数据输送文件:第一个属性为【p】

Linux文件扩展名

  • *.sh , *.py:脚本或批处理文件
  • * Z , * . tar,*.zip 打包压缩文件
  • *.html *.php 网页相关文件
  • .txt 文本文件

Linux文件与目录管理

常用的目录解释

  • /:根目录,所有其他目录都是在根目录下的子目录。
  • /bin:二进制可执行文件目录,存放常用的命令。
  • /boot:系统引导文件目录,存放启动Linux系统所需的文件。
  • /dev:设备文件目录,包含系统中所有的设备文件。
  • /etc:系统配置文件目录,存放系统的配置文件。
  • /home:用户主目录,每个用户在此目录下都有一个以用户名命名的子目录,用于存放该用户的文件和数据。
  • /lib:系统库文件目录,存放系统和应用程序共享的库文件。
  • /media:可移动设备挂载目录,用于挂载可移动设备,如U盘、光驱等。
  • /mnt:挂载目录,用于临时挂载文件系统。
  • /opt:可选应用程序目录,用于存放第三方应用程序。
  • /proc:虚拟文件系统目录,包含系统和进程的信息,可通过此目录访问系统内核的运行状态。
  • /root:超级用户(root)主目录。
  • /sbin:系统二进制可执行文件目录,存放系统管理员使用的命令。
  • /tmp:临时文件目录,存放临时文件。
  • /usr:用户程序目录,存放系统和用户的应用程序、库文件、帮助文档等。
  • /var:可变数据目录,存放系统和软件运行过程中产生的变化数据,如日志文件、邮件、缓存等。

目录树

❤Linux文件、目录与磁盘格式总结❤_第1张图片

绝对路径与相对路径

相对路径:路径写法【不是由 / 写起的】,例如由【/usr/share/doc】要到【/usr/share/man】下面,可以执行【cd …/man】

绝对路径:路径写法【一定由根目录写起】例如:/etc/systemctl/selinux

cd      #切换目录命令
./      #当前目录
cd  ..  # 返回上一级目录

cd(切换目录)

cd  [相对路径或绝对路径]

pwd(显示当前目录)

例如:
[root@localhost /]# pwd
/

mkdir(建立一个新目录)

mkdir [-mp]  目录名称
选项:
-m:设置文件的权限
-p:递归创建
例如:
mkdir -m 711 test2
mkdir -p /test1/test2/test3  # 建立多层目录

rmdir(删除空目录)

rmdir [-p] 目录名称
选项:
-p:连接上层空的目录一起删除
例如:
rmdir -p /test1/test2/test3    # 如果三个目录里面都没东西就会全部删除

执行文件路径变量$PATH

$PATH是一个环境变量,用于指定系统可执行文件的路径。

[root@localhost sysconfig]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

ls(文件与目录的查看)

ls [-ahltSR]   文件名或目录名称
选项:
-a:全部的文件,连同隐藏文件(.开头的文件)一并列出来
-h:将文件容量以人类能看懂的方式展现出来
-l:详细信息显示,包含文件属性权限
-t:按时间排序,而不是文件名
-S:以文件容量大小排序
-R:连同子目录一起列出来
例如:
[root@localhost ~]# ls -a  /etc/yum.repos.d/
.  ..  aliyun.repo  local.repo

cp(复制文件或目录)

cp [-rfpv] 原文件   目标文件
选项:
-r:递归复制
-f:强制复制
-p:连同文件的属性(权限、用户、时间)一起复制过去,不是使用默认属性
-v:显示复制过程
例如:
[root@localhost ~]# cp -rvfp /etc/yum.repos.d/* /media/
"/etc/yum.repos.d/aliyun.repo" -> "/media/aliyun.repo"
"/etc/yum.repos.d/local.repo" -> "/media/local.repo"

rm(删除文件或目录)

rm [-rvf] 文件或目录
选项:
-r:递归删除
-f:不显示警告信息
-v:显示删除过程
例如:
[root@localhost ~]# rm -rvf /media/*
已删除"/media/aliyun.repo"
已删除"/media/CentOS-7-x86_64-DVD-2009.iso"
已删除"/media/local.repo"

mv(移动文件与目录,或重命名)

mv [-f]  文件或目录
选项:
-f:强制移动,不会询问
例如:
# 改名
[root@localhost ~]# mv anaconda-ks.cfg ppp
# 移动目录
[root@localhost ~]# mv csq  /etc/

basename(获取文件名)

[root@localhost ~]# basename /etc/yum.repos.d/
yum.repos.d

dirname(获取目录名称)

[root@localhost ~]# dirname /etc/sysconfig/
/etc

cat(显示文件内容)

cat [-n] 文件内容
选项:
-n:打印行号,连同空白行也会有行号
例如:
查看ppp文件,并显示行号
[root@localhost ~]# cat -n ppp
     1  #version=DEVEL
     2  # System authorization information
     ........
     ...

tac(从最后一行开始显示文件内容)

倒着显示ppp文件
[root@localhost ~]# tac ppp
%end
......
....

nl(查看文件显示行号)

查看ppp文件并显示行号
[root@localhost ~]# nl ppp
     1  #version=DEVEL
     2  # System authorization information
     3  auth --enableshadow --passalgo=sh

more(一页一页显示文件内容)

[root@localhost ~]# more /etc/man_db.conf 
怎么翻页?:
Enter  : (代表下一页)
/字符串 : 代表在这个显示内容中,向下查找字符串这个关键字
:f     : 立刻显示出文件名已经目前显示的行数
q      : 立刻离开more
b或ctrl + b :代表往前翻页

less(前后翻页显示文件内容)

[root@localhost ~]# less /etc/man_db.conf 
怎么翻页?:
[pagedown]:向下反动一页
[pageup]:向上翻动一页
/字符串:向下查找字符串
n:重复前一个查找(/字符串,和?字符串使用)
g:前进到数据的第一行
G:前进到数据的最后一行
q:离开less

head(只看开头几行)

head [-n]  [文件内容]
选项:
-n:后面接数字,代表显示几行的意思
例如:
查看man_db.conf文件的第一行内容
[root@localhost ~]# head -n 1 /etc/man_db.conf 

tail(只看结尾几行)

选项:
-n:后面接数字,代表显示几行的意思
-f:表示持续刷新显示后面所接的文件中的内容,按ctrl + c结束
例如:
持续检测文件ppp的内容
[root@localhost ~]# tail -f ppp 

od(以二进制的方式读取内容)

od [-t] 文件
选项:
-t        :后面可以接各种【类型】的输出,如:
            a :利用默认的字符来输出
            c :使用ASCII输出
            d : 利用十进制输出
            f :利用浮点数输出
            o :利用八进制输出
            x :利用16进制输出
例如:
将 /bin/passwd的内容使用ASCII方式来显示
[root@localhost ~]# od -t c /bin/passwd 
0000000 177   E   L   F 002 001 001  \0  \0  \0  \0  \0  \0  \0  \0  \0
0000020 003  \0   >  \0 001  \0  \0  \0   H   2  \0  \0  \0  \0  \0  \0
.........
...
例如:
不想查找passwd的ASCII码可以使用一下操作
[root@localhost ~]# echo password | od -t c

touch(创建新文件)

touch  新文件名字

umask(文件默认权限)

[root@localhost ~]# umask 022
[root@localhost ~]# umask
0022

例如,如果umask的值为022,那么新创建的文件的权限掩码就是644(666减去022),新创建的目录的权限掩码就是755(777减去022)。

chattr(配置文件隐藏属性)

chattr [+-=] [ai] 文件或目录名称
选项:
a:当设置了a之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有root能设置这个属性。
i:可以让一个文件【无法删除,改名,以及设置链接】,对于系统安全有相当大的助益。
例如:
[root@localhost ~]# chattr +i ppp 
[root@localhost ~]# rm -rf ppp 
rm: 无法删除"ppp": 不允许的操作

lsattr(显示文件隐藏属性)

lsattr [-Ra] 文件或目录
选项:
-R:连同子目录的数据也一并列出来
-a:将隐藏文件的属性也显示出来
例如:
[root@localhost ~]# lsattr ppp
----i----------- ppp

文件特殊权限:SUID、SGID、SBIT

SUID权限表示当普通用户执行该文件时会以文件所有者的身份来运行该文件

SGID权限表示一个目录中创建的文件的所属组将会与该目录的所属组相同,这通常用于多个用户需要共享文件的情况下,可以将文件和目录的所属组设置为相同的组,以便多个用户进行文件共享

SBIT权限表示在一个目录中,只有文件的所有者、目录所有者或root用户才能够删除该文件

  • 4为SUID
  • 2为SGID
  • 1为SBIT

注意:SUID不是用在目录上,SBIT不是用在文件上

例如:

可以让普通用户能够执行yum这个命令

[root@localhost bin]# chmod 4755 yum ;ls -l yum
-rwsr-xr-x. 1 root root 801 102 2020 yum

file(观察文件类型)

file  文件名
例如:
查看/home是什么文件
[root@localhost bin]# file /home
/home: directory  # 是目录文件

which(查找执行文件)

which  执行文件(例如:cat,more)
例如:
查找cat命令在哪
[root@localhost bin]# which cat
/usr/bin/cat

whereis(特定目录查找文件)

whereis 文件名
例如:
查找ls命令在哪,以及他的说明文件
[root@localhost bin]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

locate和updatedb(建立数据库查找文件)

需要手动安装

yum install -y mlocate

安装完成输入updatedb更新数据库

locate [-ir] 文件名称
选项:
-i:忽略大小写
-r:后面可接正则表达式
例如:
[root@localhost bin]# locate ppp
/dev/ppp
/etc/ppp
/etc/ppp/ip-down
.......
...

find(指定目录查找文件)

find [path] [option] [action]
# path 表示要查找的起始路径,可以是绝对路径或相对路径;
# option 表示选项参数
# action 表示查找条件,可以是文件名、大小、权限等。
  1. 查找文件名包含指定字符串的文件
find /path/to/dir -name "*keyword*"

其中,/path/to/dir是指要查找的目录路径,*keyword*是指要查找的字符串,可以是部分字符串或完整字符串。
2. 查找指定类型的文件:

find /path/to/dir -type f -name "*.txt"

其中,-type f表示查找类型为文件的对象,*.txt表示查找扩展名为.txt的文件。
3. 查找指定时间范围内修改过的文件:

find /path/to/dir -type f -mtime -7

其中,-mtime -7表示查找最近7天内修改过的文件,可以根据需要修改时间范围。
4. 查找指定权限的文件:

find /path/to/dir -type f -perm 644

其中,-perm 644表示查找权限为644(即rw-r–r–)的文件,可以根据需要修改权限。
5. 查找指定大小的文件:

find /path/to/dir -type f -size +10M -size -100M

其中,-size +10M表示查找大小大于10MB的文件,-size -100M表示查找大小小于100MB的文件,可以根据需要修改文件大小范围。

Linux磁盘与文件系统管理

磁盘的组成与分区表

  1. 圆形碟片(主要记录数据的部分)
  2. 机械手臂与在机械手臂上的磁头(可擦写碟片上的数据)
  3. 主轴马达可以转动碟片让机械手臂的磁头在碟片上读写数据
  4. 扇区:最小的物理存储单位
  5. 柱面:将扇区组成一个圆就叫柱面

❤Linux文件、目录与磁盘格式总结❤_第2张图片

GPT分区表除了分区数量扩充较多之外,支持磁盘容量也可以超过2TB

MBR分区表中。第一个扇区最重要,里面有:主引导记录及分区表,其中MBR占有446B,分区表则占64B

df(列出文件系统的整体磁盘使用量)

df   [-hT] [目录或文件名]
选项:
-h:以人类能看得懂的方式展现内存使用量大小
-T:连同该磁盘分区的文件系统(xfs)名称也列出
例如:

>>查看系统中挂载情况及文件的特殊格式<<
[root@localhost ~]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  3.8G     0  3.8G    0% /dev
tmpfs                   tmpfs     3.9G     0  3.9G    0% /dev/shm
tmpfs                   tmpfs     3.9G   12M  3.8G    1% /run
........
...

du(查看文件系统的磁盘使用量)

du [-sh] 文件或目录名称
选项:
-s:仅列出当前文件或目录下的占用量
-h:以人类能看得懂的方式展现磁盘使用量
例如:

>>查看当前目录下每个目录所占用的容量<<
[root@localhost ~]# du -h
0       ./boot/efi/EFI/centos
0       ./boot/efi/EFI
0       ./boot/efi
2.4M    ./boot/grub2/i386-pc
3.2M    ./boot/grub2/locale
2.5M    ./boot/grub2/fonts
8.0M    ./boot/grub2
4.0K    ./boot/grub
118M    ./boot
118M    .

ln(硬链接)ln -s (软链接)

硬链接的作用是让多个文件名指向同一个数据块

软链接的作用是创建一个指向另一个文件或目录的指针

[root@linux csq]# touch f1    #创建一个f1文件
[root@linux csq]# ln f1 f2    #创建一个硬链接 f2
[root@linux csq]# ls
f1  f2
[root@linux csq]# ll
总用量 0
-rw-r--r--. 2 root root 0 1215 00:52 f1
-rw-r--r--. 2 root root 0 1215 00:52 f2
[root@linux csq]# ln -s f1 f3  #创建一个软链接(符号链接) f3
[root@linux csq]# ls
f1  f2  f3
[root@linux csq]# ll 
总用量 0
-rw-r--r--. 2 root root 0 1215 00:52 f1
-rw-r--r--. 2 root root 0 1215 00:52 f2
lrwxrwxrwx. 1 root root 2 1215 00:55 f3 -> f1
[root@linux csq]# echo "i love xuexi Linux" >> f1      #给f1文件写入一些字符串
[root@linux csq]# ls
f1  f2  f3
[root@linux csq]# cat f1    #查看f1
i love xuexi Linux
[root@linux csq]# cat f2    #查看f2
i love xuexi Linux
[root@linux csq]# cat f3    #查看f3
i love xuexi Linux 
# 删除f1之后,查看 f2 和 f3 的区别
# 删除f1查看链接情况
[root@linux csq]# rm -rf f1
[root@linux csq]# ls
f2  f3
[root@linux csq]# cat f3   # (软链接、符号链接)快捷方式失效了!
cat: f3: 没有那个文件或目录
[root@linux csq]# cat f2    # 硬链接还在
i love xuexi Linux

lsblk(列出系统上的所有磁盘列表)

lsblk [-fd] [device]
选项:
-f:同时列出该磁盘内的文件系统名称
-d:仅列出磁盘本身
例如:
[root@localhost ~]# lsblk -f
NAME            FSTYPE      LABEL           UUID                                   MOUNTPOINT
sda                                                                                
├─sda1          xfs                         12fbc8e4-fc2b-458d-87ad-15193057ca19   /boot
└─sda2          LVM2_member                 Og1mrC-J9QJ-pAWk-JoqC-TtQc-vgtG-N1TxSH 
  ├─centos-root xfs                         1206152a-83c1-491f-8532-0961a85b528c   /
  ├─centos-swap swap                        63e31067-fa5f-4db9-b699-b0a1f435ab69   [SWAP]
  └─centos-home xfs                         898bf541-3d93-485f-870d-ee678c593b15   /home
sdb                                                                                
└─sdb1          xfs                         a47cd75e-9efb-48d7-adcb-0e1fd3e7b3a2   
sr0             iso9660     CentOS 7 x86_64 2020-11-04-11-36-43-00    

blkid(列出设备的UUID等参数)

[root@localhost ~]# blkid
/dev/sdb1: UUID="a47cd75e-9efb-48d7-adcb-0e1fd3e7b3a2" TYPE="xfs" 
/dev/sda1: UUID="12fbc8e4-fc2b-458d-87ad-15193057ca19" TYPE="xfs" 
.........
...
# 这个标识符可以拿来作为挂载或是使用这个设备文件

fdisk(磁盘分区工具)

fdisk [选项] 磁盘
选项:
-l   列出所有硬盘的分区信息

交互式界面按键介绍:
d   删除一个分区
n   增加一个分区
p   打印分区表
q   不保存退出
w   保存退出

例如:

>>把sdb分为2个主分区,每个主分区5G<<
[root@localhost ~]# fdisk /dev/sdb
命令(输入 m 获取帮助):n
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-104857599,默认为 2048)# 回车
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-104857599,默认为 104857599):+5G  # +5G
分区 1 已设置为 Linux 类型,大小设为 5 GiB

命令(输入 m 获取帮助):n
Select (default p): p
分区号 (2-4,默认 2):
起始 扇区 (10487808-104857599,默认为 10487808)# 回车
将使用默认值 10487808
Last 扇区, +扇区 or +size{K,M,G} (10487808-104857599,默认为 104857599):+5G # +5G
分区 2 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):w   # 保存退出
[root@localhost ~]# lsblk /dev/sdb
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb      8:16   0  50G  0 disk 
├─sdb1   8:17   0   5G  0 part 
└─sdb2   8:18   0   5G  0 part 

parted(磁盘分区工具)

parted的操作是即刻生效的,和fdisk不太一样,所以要想好怎么分

parted  [选项]  磁盘
选项:
-l  列出系统系统中所有的磁盘设备,和fdisk -l命令的作用差不多

交互式界面按键介绍:
mkpart: 创建一个分区
rm :删除分区
print:打印分区表
quit:退出程序

例如:

>>对磁盘 /dev/sdb分区<<
[root@localhost ~]# parted /dev/sdb 
(parted) mkpart primary 0 1000       #给主分区1 分配1000MB
警告: The resulting partition is not properly aligned for best performance.
忽略/Ignore/放弃/Cancel? Ignore                                           
(parted) print       # 打印分区表                                                     
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 53.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start  End     Size    Type     File system  标志
 1      512B   1000MB  1000MB  primary#(主分区)
(parted) q 

mkfs(磁盘格式化)

[root@localhost ~]# mkfs.   # 按两下tab可以列出系统支持的格式化文件系统有哪些
mkfs.btrfs   mkfs.cramfs  mkfs.ext2    mkfs.ext3    mkfs.ext4    mkfs.minix   mkfs.xfs 

语法:
mkfs.xxx  [选项] 磁盘名称
选项:
-f:如果设备已有文件系统,则需要使用这个-f来强制格式化
例如:

>>强制将/dev/sdb1格式化为xfs文件系统<<
[root@localhost ~]# mkfs.xfs -f /dev/sdb1 
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=61035 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=244140, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

xfs_repair文件系统校验

xfs_repair [-fn] 设备名称
选项:
-f:后面的设备其实是个文件不是实体设备
-n:单纯检查并不修改文件系统的任何数据
-L:选项用于为修复后的文件系统命名,修复可能需要一些时间,具体时间取决于文件系统的大小和损坏程度。
例如:

>>检查一下/dev/sdb1的文件系统<<
[root@localhost ~]# xfs_repair /dev/sdb1
Phase 1 - find and verify superblock...
Phase 2 - using internal log
Phase 3 - for each AG...
Phase 4 - check for duplicate blocks...
Phase 5 - rebuild AG headers and trees...
Phase 6 - check inode connectivity...
Phase 7 - verify and correct link counts...
done
# 总共有七个检查流程

xfs_admin(修改XFS文件系统的UUID与Label name)

xfs_admin [-lu] [-L label] [-U uuid] 设备文件名
选项:
-l:列出这个设备的label name
-u:列出这个设备的UUID
-L:设置这个设备的Label name
-U:设置这个设备的UUID
例如:

>>设置/dev/sdb1的label name 为 sdb1_xfs 并测试挂载<<
[root@localhost ~]# xfs_admin -L sdb1_xfs /dev/sdb1 
writing all SBs
new label = "sdb1_xfs"
[root@localhost ~]# xfs_admin -l /dev/sdb1
label = "sdb1_xfs"
[root@localhost ~]# mount LABEL=sdb1_xfs /mnt/
[root@localhost ~]# df -hT /mnt/
文件系统       类型  容量  已用  可用 已用% 挂载点
/dev/sdb1      xfs   951M   33M  919M    4% /mnt

fsck.ext4处理ext4文件系统

fsck.xxx [-f] [-b 超级区块] 设备名称
选项:
-f:强制检查
-b:后面接超级区块的位置,如果超级区块损坏时,可以使用这个选项一般来说,超级区块备份在:1K区块放在8193,2K区块放在16384,4K区块放在32768
例如:

>>强制检查一次/dev/sdb1<<
[root@localhost ~]# fsck.xfs /dev/sdb1 
If you wish to check the consistency of an XFS filesystem or
repair a damaged filesystem, see xfs_repair(8).

tune2fs(修改ext4的label name和UUID)

tune2fs [-l] [-L Label] [-U uuid] 设备名称
选项:
-l:将superblock内的数据读出来
-L:修改LABEL name
-U:修改UUID
例如:

>>列出/dev/sdb2的label name之后,将他改成 sdb2_ext4<<
[root@localhost ~]# tune2fs -l /dev/sdb2 |grep name
Filesystem volume name:   <none>
[root@localhost ~]# tune2fs -L sdb2_ext4 /dev/sdb2 
tune2fs 1.42.9 (28-Dec-2013)
[root@localhost ~]# tune2fs -l /dev/sdb2 |grep name
Filesystem volume name:   sdb2_ext4

mount(文件系统挂载)

mount [-l] 
mount [-t 文件系统] LABEL='' 挂载点
mount [-t 文件系统] UUID=''  挂载点
mount [-t 文件系统] 设备文件名 挂载点
选项:
-l:单纯输入mount会显示目前挂载信息,加上-l可显示Label名称
-t:可以加上文件系统种类来指定欲挂载的类型,常见类型有:xfs、ext4
-o:后面可以接一些挂载时额外加上的参数。比如账号、密码、读写权限等
    ro,rw:挂载文件系统改成ro(只读),rw(可读可写)
    exec,noexec:是否允许此文件系统上拥有可执行的二进制文件
    defaults:默认值为:rw、suid、dev、exec、auto、nouser、and async
    remount:重新挂载
    loop:挂载镜像文件
    
例如: 

>>使用 UUID 的方式挂载/dev/sdb1设备<<
[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="64db34dd-5bd5-49bb-93bb-cbe906de100b" TYPE="xfs" 
[root@localhost ~]# mount UUID="64db34dd-5bd5-49bb-93bb-cbe906de100b" /mnt/
[root@localhost ~]# df -hT /mnt/
文件系统       类型  容量  已用  可用 已用% 挂载点
/dev/sdb1      xfs   951M   33M  919M    4% /mnt

umount(解除挂载)

umount [-fl] 设备文件或挂载点
选项:
-f:强制卸载
-l:立刻卸载文件系统,比-f还强
例如:

>>解除刚刚挂载的/dev/sdb1设备文件<<
[root@localhost ~]# umount /mnt/

/etc/fstab(开机自动挂载)

vi /etc/fstab
[设备名称/UUID等]     [挂载点]   [文件系统参数]   [dump(该参数默认为0)]  [fsck(该参数默认为0)]

使用物理分区创建内存交换分区(mkswap,free,swapon,swapoff)

  1. 先进行分区操作
[root@localhost ~]# fdisk /dev/sdb
命令(输入 m 获取帮助):n
Select (default p): 
Using default response p
分区号 (3,4,默认 3):
起始 扇区 (1953126-104857599,默认为 12439552):
将使用默认值 12439552
Last 扇区, +扇区 or +size{K,M,G} (12439552-104857599,默认为 104857599):+5G
分区 3 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):W
[root@localhost ~]# lsblk |grep sdb3
└─sdb3            8:19   0     5G  0 part 
  1. 开始创建swap格式
# 创建swap格式
[root@localhost ~]# mkswap /dev/sdb3 
正在设置交换空间版本 1,大小 = 5242876 KiB
无标签,UUID=45f20c37-5e6f-491c-9e9b-bb2310ded78b
[root@localhost ~]# blkid /dev/sdb3 
/dev/sdb3: UUID="45f20c37-5e6f-491c-9e9b-bb2310ded78b" TYPE="swap" 
  1. 开始观察与加载查看
[root@localhost ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           7.6G        440M        6.9G         11M        266M        6.9G
Swap:          7.9G          0B        7.9G
# 我有7.6G的物理内存,使用了440M,剩余6.9G
# 266M被缓存使用,内存交换分区已经有了 7.9G
[root@localhost ~]# swapon /dev/sdb3 
[root@localhost ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           7.6G        442M        6.9G         11M        266M        6.9G
Swap:           12G          0B         12G     # 看到增加了吗
[root@localhost ~]# swapon -s  # 列出内存交换分区的设备有哪些
文件名                          类型            大小    已用    权限
/dev/dm-1                               partition       8257532 0       -2
/dev/sdb3                               partition       5242876 0       -3
[root@localhost ~]# swapoff /dev/sdb3   # 关闭内存交换分区
[root@localhost ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           7.6G        437M        6.9G         11M        267M        6.9G
Swap:          7.9G          0B        7.9G

使用文件创建内存交换分区(dd,mkswap,swapon,swapoff)

  1. 使用dd这个命令在/tmp下面增加一个128MB文件
[root@localhost ~]# dd if=/dev/zero of=/tmp/swap bs=1M count=128
记录了128+0 的读入
记录了128+0 的写出
134217728字节(134 MB)已复制,1.25053 秒,107 MB/秒
[root@localhost ~]# ll -h /tmp/swap 
-rw-r--r--. 1 root root 128M 418 16:58 /tmp/swap
  1. 使用mkswap将/tmp/swap这个文件格式化为内存交换分区的文件格式
[root@localhost ~]# mkswap /tmp/swap 
正在设置交换空间版本 1,大小 = 131068 KiB
无标签,UUID=07313d44-3844-46b0-809c-268f55f76e35
  1. 使用swapon将/tmp/swap启动
[root@localhost ~]# mkswap /tmp/swap 
正在设置交换空间版本 1,大小 = 131068 KiB
无标签,UUID=07313d44-3844-46b0-809c-268f55f76e35
[root@localhost ~]# swapon /tmp/swap 
swapon: /tmp/swap:不安全的权限 0644,建议使用 0600。
[root@localhost ~]# swapon -s # 列出内存交换分区的设备有哪些
文件名                          类型            大小    已用    权限
/dev/dm-1                               partition       8257532 0       -2
/tmp/swap                               file    131068  0       -3
  1. 使用swaoff关闭swap file,并设置自动启用
[root@localhost ~]# swapoff /tmp/swap 
[root@localhost ~]# swapon -s
文件名                          类型            大小    已用    权限
/dev/dm-1                               partition       8257532 0       -2

Linux系统常见的压缩命令

gzip/zcat

gzip [-dv]  文件名
选项:
-d:解压缩
-v:可以显示源文件/压缩文件的压缩比等信息
-1:压缩的更快
-9:压缩的更好
例如:

>>压缩文件ppp<<
[root@localhost ~]# gzip ppp

>>解压缩ppp<<
[root@localhost ~]# gzip -d ppp

>>查看压缩比<<
[root@localhost ~]# gzip -v ppp
ppp:     64.9% -- replaced with ppp.gz
zcat 文件名.gz
例如:
[root@localhost ~]# zcat ppp.gz   # 查看.gz压缩文件的内容
csq1 csq2 csq3 csq4 csq5 csq6

bzip2/bzcat

bzip2 [-dv] 文件名
选项:
-d:解压缩
-v:可以显示源文件/压缩文件的压缩比等信息
-1:压缩的更快
-9:压缩的更好
例如:

>>压缩文件ppp<<
[root@localhost ~]# bzip2 ppp

>>解压缩文件ppp<<
[root@localhost ~]# bzip2 -d ppp.bz2 

>>查看压缩比<<
[root@localhost ~]# bzip2 -v ppp 
  ppp:      2.969:1,  2.694 bits/byte, 66.32% saved, 291 in, 98 out.
bzcat 文件.bz2
例如:
[root@localhost ~]# bzcat ppp.bz2 
csq1 csq2 csq3 csq4 csq5 csq6 

xz/xzcat

xz [-dl] 文件名
选项:
-d:解压缩
-l:列出压缩文件的相关信息
-v:可以显示源文件/压缩文件的压缩比等信息
-1:压缩的更快
-9:压缩的更好
-k:保留原本的文件不删除
例如:

>>压缩文件ppp<<
[root@localhost ~]# xz ppp

>>解压缩ppp<<
[root@localhost ~]# xz -d ppp.xz

>>查看压缩比<<
[root@localhost ~]# xz -v ppp  # 压缩比很好,但是压缩的时间很慢
ppp (1/1)
  100 %               152 B / 291 B = 0.522 
xzcat 文件名.xz
例如:
[root@localhost ~]# xzcat ppp.xz 
csq1 csq2 csq3 csq4 csq5 csq6 

zip/unzip

zip [选项] [压缩文件名] [文件或目录名]
选项:
-r:递归压缩子目录中的文件。
-q:安静模式,不输出任何消息。
-m:压缩后删除原文件。
-j:仅压缩文件,不包括目录。
-u:更新压缩文件,仅添加新文件和已修改的
例如:
>>"directory/" 和 “csq”及其所有子目录和文件压缩成一个名为"compressed.zip"的zip文件。<<
zip -r compressed.zip directory/  csq/
unzip [选项] 文件名.zip [-d 目标目录]
选项:
-q:安静模式,不输出任何信息。
-o:覆盖已有的文件。
-j:只解压缩文件,不创建目录。
-d 目标目录:指定解压缩后的文件存放的目录,默认为当前目录。
例如:
>>将文件file.zip解压缩到目录/home/user/下<<
unzip file.zip -d /home/user/

tar(打包命令)

选项:
-j:通过bzip2的支持进行压缩/解压缩,解压缩时文件最好为* . tar.bz2
-J:通过xz的支持进行压缩/解压缩,解压缩时文件最好为* . tar.xz
-z:通过gzip的支持进行压缩/解压缩,解压缩时文件最好为* . tar.gz
-c:建立打包文件,可以搭配-v来显示被打包的文件名
-t:查看打包文件的内容
-x:解包或压缩的功能,可以搭配-C指定解压在特定目录

压缩:tar -jcv -f filename.tar.bz2   要被压缩的文件或目录
查询:tar -jtv -f filename.tar.bz2  
解压缩:tar -jxv -f filename.tar.bz2  -C 欲解压缩目录

xfsdump(XFS文件系统备份)

xfsdump [-L S_label] [-M M_label]  [-l] [-f 备份文件] 待备份的文件
选项:
-L label:为备份文件添加标签
-M : xfsdump可以记录存储媒介的标头,这里可以填写此媒介的简易说明
-l level:指定备份级别,支持0-9级别
-f file:指定备份文件的路径和名称
-I:列出目前备份的信息状态
例如:

>>将完整备份的文件名记录成为 /srv/boot.dump<<
[root@localhost ~]# xfsdump -l 0 -L boot_all -M boot_all -f /srv/boot.dump /boot
[root@localhost ~]# du -h /srv/boot.dump /boot/
118M    /srv/boot.dump
....
..
118M    /boot/

>>在boot里面添加一个大小为20M的文件再次备份一下<<
[root@localhost ~]# dd if=/dev/zero of=/boot/xinjia.dump bs=1M count=20
记录了20+0 的读入
记录了20+0 的写出
20971520字节(21 MB)已复制,0.208884 秒,100 MB/秒
[root@localhost ~]#  xfsdump -l 1 -L boot_all1 -M boot_all1 -f /srv/boot.dump1 /boot
[root@localhost ~]# du -h /boot  /srv/boot.dump1 
138M    /boot
21M     /srv/boot.dump1   # 第二次备份只备份了新添加的那个20MB大小的文件

xfsrestore(XFS文件系统还原)

xfsrestore [ -f 备份文件]  [ -L label ] [ -s ] 待恢复目录
选项:
选项于参数:
-I   跟xfsdump相同的输出,可查询备份数据,包括Label名称与备份时间等。
-f   指定备份数据的存储位置;
-L   就是session的Label name,可以用 -I查询到
-s   需要接某特定目录,就是仅恢复某一个文件或目录的意思
例如:
>>>简单恢复level 0 的文件系统到/tmp/boot目录下  (如果不知道-L的参数可以使用-I查看)<<<
[root@localhost ~]# mkdir /tmp/boot
[root@localhost ~]# xfsrestore -f /srv/boot.dump -L boot_all /tmp/boot/
>>>恢复level 1 的文件系统到 /tmp/boot2目录下<<<
[root@localhost ~]# xfsrestore -f /srv/boot.dump1 -L boot_all1 /tmp/boot2
[root@localhost ~]# du -h /tmp/boot2
20M     /tmp/boot2

dd(随机数据生成,用法不止这个)

dd if="input_file"  of="output_file"  bs="block_size" count="number"
选项:
if:就是输入文件 也可以是设备
of:就是输出文件 也可以是设备
bs:设置一个block的大小,若为指定则默认是512Bytes(一个扇区大小)
count:多少个bs的意思
例如:
>>>生成一个大小为1MB的随机数据文件,并将其保存到/home/csq/suijifile文件<<<
[root@localhost ~]#  dd if=/dev/random of=/home/csq/cuijifile bs=1M count=1
记录了0+1 的读入
记录了0+1 的写出
115字节(115 B)已复制,0.00060674 秒,190 kB/秒

>>>生成一个大小为1MB的空文件,并将其保存为/home/csq/kongfile文件<<<
[root@localhost ~]#  dd if=/dev/random of=/home/csq/kongfile bs=1M count=1
记录了0+1 的读入
记录了0+1 的写出
88字节(88 B)已复制,0.000269978 秒,326 kB/秒

>>>将sda1磁盘内容复制到sdb4总并挂载出来<<<
[root@localhost ~]# dd if=/dev/sda1 of=/dev/sdb4 
记录了2097152+0 的读入
记录了2097152+0 的写出
1073741824字节(1.1 GB)已复制,70.3215 秒,15.3 MB/秒
[root@localhost ~]#  xfs_repair -L /dev/sdb4   # 修复文件系统
[root@localhost ~]# uuidgen
5194e776-4295-4785-a433-fd7078feea2f
[root@localhost ~]# xfs_admin -U 5194e776-4295-4785-a433-fd7078feea2f /dev/sdb4  # 将修复后的文件系统重命名为指定的UUID
[root@localhost ~]# mount /dev/sdb4  /mnt/
[root@localhost ~]# xfs_growfs /mnt/    # 对/mnt目录下的文件系统进行扩容
[root@localhost ~]# df -h /mnt/
文件系统        容量  已用  可用 已用% 挂载点
/dev/sdb4       5.0G  171M  4.9G    4% /mnt
[root@localhost ~]# umount  /mnt/

cpio(文件归档和备份工具)

cpio -ovcB   > [ file | device ]               <== 备份
cpio -ivcd  < [ file | device ]               <== 还原
cpio -ivct   < [ file | device ]               <== 查看
选项与参数:
-i:解包文件,即将打包文件还原成原始的文件和目录。
-o:打包文件,即将多个文件和目录打包成一个单独的文件。
-B:让默认的blocks可以增加到5120字节,默认是512字节,这样做的好处就是可以让大文件的存储速度加快
-d:自动创建目录,即在解包时自动创建目标目录。
-v:显示详细信息,即在打包或解包时显示更多的信息。
-t:列出文件列表,即显示打包文件中包含的文件和目录列表。
-c:一种较新的 portable format 方式存储
例如:
>>将/boot备份到/tmp/beifen.cpio文件中<<
[root@localhost tmp]# find /boot |cpio -ovcB > /tmp/beifen.cpio
[root@localhost tmp]# ll -h /tmp/beifen.cpio 
-rw-r--r--. 1 root root 138M 418 20:30 /tmp/beifen.cpio

>>将他在/root/目录下解开<<
[root@localhost ~]# cpio -idvc  < /tmp/boot.cpio  # 首先你得在root目录下才行
[root@localhost ~]# du -h boot/
118M    boot/

你可能感兴趣的:(#,Linux文件,目录与磁盘格式,linux,服务器,运维)