03-Linux 文件管理和磁盘管理
文件管理
文件增删改查
# 创建文件和文件夹
touch 111.txt
touch myfile{1..5}.txt
mkdir mydir
mkdir -p /opt/demo
# 重命名
mv 111.txt 222.txt
mv mydir newdir
# 删除
rm -r 222.txt
rm -rf 222.txt
rm -rf * # 删除当前目录下所有文件和文件夹
# 输出当前目录下所有文件和文件夹,包括隐藏文件,并显示详细的文件信息
ls . -a -l
# 递归输出指定文件夹下的所有文件
ls /home -R
# 按时间排序(默认按字母顺序排序)
ls -l -t
# 按文件大小排序,并以易读的单位显示
ls -l -S -h
# 查看文件夹和文件的详细信息
ls -ld /opt/demo
ll /opt/demo/test.txt
# 查看文件夹和文件的大小
du -sh /opt
du -sh /opt/test.txt
# 在指定目录及其子目录中查找名称为 "test.txt“ 的文件
find /opt -name "test.txt"
# 在指定目录及其子目录中查找所有 temp_ 开头且扩展名为.txt 的文件
find /home/user -name "temp_*.txt"
# 查找当前目录下大于100KB的文件
find. -size +100k
# 查找当前目录下小于500KB的文件
find. -size -500k
# 查找在过去24小时内修改过的文件,24小时 * 60分钟 = 1440分钟
find. -mmin -1440
# 查找当前目录下的目标目录
find . -name "mydir" -type d
# 查找文件并对其执行命令
# 此命令会在当前目录及其子目录下所有扩展名为.log 的文件中查找包含 "error" 的行
# {} 是匹配文件的占位符,\; 表示命令结束
find. -name "*.log" -exec grep "error" {} \;
文件压缩和移动
# 压缩是对单个文件的操作,选择多少个文件进行压缩就会得到多少个压缩文件,且默认会把被压缩的原文件删除
gzip file.txt
gunzip file.txt.gz
bzip2 file.txt # bzip 压缩率更高
bunzip2 file.txt.bz2
# 归档和提取
tar -cf /opt/test.tar . /opt/demo # 将当前目录下所有文件和 /opt/demo/ 文件夹归档为 test.tar 文件
tar -xf /opt/test.tar # 提取文件
tar -tf /opt/test.tar # 查看但不提取
mkdir -p /opt/myfiles && tar -xf /opt/test.tar -C /opt/myfiles # 将文件提取到指定文件夹中
# 归档并压缩
tar -zcvf /opt/test.tar.gz /opt/demo # 使用 gzip, -v 参数会显示执行过程
tar -jcvf /opt/test.tar.bz2 /opt/demo # 使用 bzip
tar -zxvf /opt/test.tar.gz # 如果不指定解压的目的路径,则默认解压到当前目录
tar -jxvf /opt/test.tar -C /opt/myfiles
# 移动文件到 demo 文件夹,如果已有同名文件,先备份后覆盖
mv -b /opt/test.tar /opt/demo
# 将 source 文件夹下的所有文件和文件夹复制到 demo 中
cp -r /opt/source /opt/demo
# 复制的同时保留原文件夹的属性
cp -r -p /opt/source /opt/demo
解除系统创建进程和打开文件的限制
sed -i 's/1024/10240/g' /etc/security/limits.d/90-nproc.conf
sed -i '/End of file/i\* soft nproc 10240' /etc/security/limits.conf
sed -i '/End of file/i\* hard nproc 10240' /etc/security/limits.conf
sed -i '/End of file/i\* soft nofile 10240' /etc/security/limits.conf
sed -i '/End of file/i\* hard nofile 10240' /etc/security/limits.conf
文件权限设置
权限说明(drwx r-x r-x)
-
rwx的权限对应着数字 4、2、1,drwx r-x r-x的权限也可以表示为:755 -
第一个字符:
d 表示这是一个目录(directory)。如果是-,则表示普通文件;l 表示符号链接(软链接)等。 -
接下来三组字符:每组三个字符分别对应文件的所有者(user)、所属组(group)和其他用户(others)的权限。
- **所有者权限(第一组
rwx** ) :-r(read):所有者具有读取目录内容的权限,即可以使用ls 命令列出目录中的文件和子目录。 -w(write):所有者有权在目录中创建新文件和目录,也可以删除目录中的文件和子目录(前提是同时具备执行权限)。 -x(execute):所有者能够进入该目录的权限(使用cd 命令),如果是文件,则为可执行权限。 - **所属组权限(第二组
r - x** ) : -r:所属组的用户可以读取目录内容。 --:表示没有写权限,所属组用户不能在该目录下创建、删除文件或目录。-x:所属组用户可以进入该目录。 - **其他用户权限(第三组
r - x** ) : -r:其他用户可以读取目录内容。--:没有写权限,其他用户不能在该目录下创建、删除文件或目录。 -x:其他用户可以进入该目录。
- **所有者权限(第一组
# 案例展示
[root@controller opt]# ll
drwxr-xr-x. 8 root root 273 Apr 24 2024 build
-rw-------. 1 root root 520 Dec 4 03:41 web.tar
drwxrwxrwx. 4 root root 48 Apr 18 2024 demo
-rwxr-xr-x. 1 root root 0 Jan 13 01:00 test.sh
权限设置
# 创建文件和文件夹
touch 111.txt
mkdir myfile
# 取消所有权限
chmod -rwx 111.txt myfile
# 添加权限
chmod u = rw,go = r 111.txt # 所有者添加 rw,所属组和其他用户添加 r
chmod u +x 111.txt
chmod g +w 111.txt
chmod 755 myfile
# 更改所属
chown chrony:ftp 111.txt # 将文件111.txt的所有者更改为chrony,所属组更改为ftp
磁盘管理
格式化磁盘并挂载
# 查看磁盘列表
lsblk
# 查看分区类型
lsblk -f
# 查看磁盘容量
df -h
# 查看已分配和未分配的容量
parted /dev/sda print free
# 第一种情况:假设还有一个 sdb 硬盘未格式化,现在要将它格式化并分区
# 详细分区操作参考:https://www.cnblogs.com/renshengdezheli/p/13941563.html
fdisk /dev/sdb
# 格式化为 ext4 文件系统:mkfs.ext4 /dev/sdb
mkdir -p /mnt/sdb
mount /dev/sdb /mnt/sdb # 卸载是 umount
# 设置开机自动挂载
blkid /dev/sdb # 获取新分区的 UUID,假设 uuid 为 5e0ac3f5
cat >> /etc/fstab <<EOF
UUID=5e0ac3f5 /mnt/sdb1 ext4 defaults 0 0
EOF
# 第二种情况:假设使用 lsblk 查询后如下显示,78G 的存储只分配了39G,仍有39G 未使用
sda 8:0 0 80G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 78G 0 part
└─ubuntu--vg-ubuntu--lv 253:0 0 39G 0 lvm /
# 扩展逻辑卷到所有可用空间
lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
# 调整文件系统大小(如果是ext4)
resize2fs /dev/ubuntu-vg/ubuntu-lv
# 如果是xfs文件系统
xfs_growfs /