03-Linux 文件管理

104 阅读5分钟

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)
  1. rwx​的权限对应着数字 4、2、1,drwx r-x r-x​的权限也可以表示为:755

  2. 第一个字符d​ 表示这是一个目录(directory)。如果是 -​,则表示普通文件;l​ 表示符号链接(软链接)等。

  3. 接下来三组字符:每组三个字符分别对应文件的所有者(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 /