文章目录
- 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
- 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
文件种类
-
常规文件分为:纯文本文件(*.txt),二进制文件(例如cat),数据文件(特点就是使用cat读取会乱码)
-
目录:第一个属性为【d】例如:drwxrwxrwx
-
链接文件:第一个属性为【l】例如:lrwxrwxrwx
-
设备文件:
- 区块设备文件:第一个属性为【b】
- 字符设备文件:第一个属性为【c】
-
数据接口文件:第一个属性为【s】
-
数据输送文件:第一个属性为【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:可变数据目录,存放系统和软件运行过程中产生的变化数据,如日志文件、邮件、缓存等。
目录树
绝对路径与相对路径
相对路径:路径写法【不是由 / 写起的】,例如由【/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 10月 2 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 表示查找条件,可以是文件名、大小、权限等。
查找文件名包含指定字符串的文件
:
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磁盘与文件系统管理
磁盘的组成与分区表
- 圆形碟片(主要记录数据的部分)
- 机械手臂与在机械手臂上的磁头(可擦写碟片上的数据)
- 主轴马达可以转动碟片让机械手臂的磁头在碟片上读写数据
- 扇区:最小的物理存储单位
- 柱面:将扇区组成一个圆就叫柱面
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 12月 15 00:52 f1
-rw-r--r--. 2 root root 0 12月 15 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 12月 15 00:52 f1
-rw-r--r--. 2 root root 0 12月 15 00:52 f2
lrwxrwxrwx. 1 root root 2 12月 15 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)
- 先进行分区操作
[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
- 开始创建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"
- 开始观察与加载查看
[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)
- 使用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 4月 18 16:58 /tmp/swap
- 使用mkswap将/tmp/swap这个文件格式化为内存交换分区的文件格式
[root@localhost ~]# mkswap /tmp/swap
正在设置交换空间版本 1,大小 = 131068 KiB
无标签,UUID=07313d44-3844-46b0-809c-268f55f76e35
- 使用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
- 使用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
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 4月 18 20:30 /tmp/beifen.cpio
>>将他在/root/目录下解开<<
[root@localhost ~]# cpio -idvc < /tmp/boot.cpio # 首先你得在root目录下才行
[root@localhost ~]# du -h boot/
118M boot/