7.find与tar的基本使用

1
2
3
du # 查看文件或目录大小
du -s # 查看目录的话只显示目录大小
du -h # 以人类方便读的方法显示

find

find + 文件路径(默认 .) + [-选项 参数]

按照文件类型查找

文件类型:

  • f :普通文件 -

  • d:目录

  • l :软连接

  • c:字节设备

  • b:块设备

1
find . -type f
1
find /dev -type c
1
find . -type d

按照文件名称查找

1
find . -name "*.txt"

按照文件名称查找不区分大小写

1
find . -iname "*.txt"

按照文件的inode号查找

1
find . -inum 67144904

按照大小查找文件

单位类型(不写默认M)

  • c
  • k
  • M
  • G

范围:

  • 10M:等于10M

  • -10M:小于10M

  • +10M:大于10

逻辑:

  • -and:同时成立(默认是-and)
  • -or:或者
1
find ./ -size 10M -or -size +15M # 查找10M或者大于15M的文件

按照指定深度查找文件

1
find ./ -maxdepth 1 -tyep f

按照时间查找

1
2
3
find ./ -mtime +7 # 7天前被修改过的文件
find ./ -mtime -7 # 7天内被修改过的文件
find ./ -mtime 7 # 前第7天内
1
2
3
find ./ -mmin 120 # 前第120分钟内修改
find ./ -mmin -120 # 120分钟之内修改
find ./ -mmin +120 # 120分钟之前修改

按照文件所有者或组查找

  • -user:指定拥有的文件
  • -group:指定拥有组的文件
  • -uid:指定UID的文件
  • -gid:指定GID的文件
1
find . -uid 1000 

按文件特定权限

  • 准确权限
  • -:至少拥有的权限(-324),三个&操作
  • /:至少满足其中之一的权限(/442),三个|
1
find /home -perm -664 -ls # 查找至少有664权限的文件或目录并进行ls显示详细信息

将find结果处理

|方式

删除

1
find ./data -mtime +7 |xargs rm

查看

1
find . -name "*.txt" |xargs ls -l

复制

1
2
find ./ -name "*.txt" |xargs -i cp {} /opt/ 
# -i 插入到{}

移动

1
find ./ -type f|xargs -i mv {} /opt/

-exec方式

复制

1
find . -name "*.txt" -exec cp -a {} /opt \; # 默认;是命令分割符,所以要\区分

删除

1
find . -name "*.txt“ -exec rm {} \;

$()或者``方式:

1
rm -r $(find . -name "*.txt")
1
rm -r `$(find . -name "*.txt")`

压缩

为什么要压缩?

    1. 节省空间
    1. 备份,传到备份服务器
    1. 节省网络流程
    1. 减少磁盘IO

什么时间压缩?占用CPU非常高,业务的低谷期压缩,避免影响。

  • 游戏:5-7点
  • 电商:5点
  • 外卖:4-5点
  • 小说:4-5点
  • 企业:流量监控

zip

压缩

1
zip tt.zip test1.txt test2.txt test3.txt # 将test{1..3}.txt压缩为tt.zip

解压

1
unzip tt.zip
1
unzip tt.zip -d /tmp # 指定解压到tmp目录

tar

  • c:create创建一个新档
  • x:extract从现有归档提取
  • t:list列出归档内容
  • f:file执行创建或者提前的文档
  • v:verbose过程显示

注意:为保护系统问题默认tar会移除文件路径/,变为当前路径,避免解压覆盖了

创建归档

1
tar -cvf test.tar {1..5}.txt

查看归档

1
tar -tf test.tar

解压归档

1
tar -xvf test.tar

排查除要tar的文件

1
tar cvf test.tar *.txt --exclude={1..2}.txt # 排除1.txt和2.txt这两个文件
  • z:gzip压缩
  • j:bzip2压缩
  • J:xz压缩

gzip

压缩

1
tar czvf test.tar.gz *.txt # 创建归档并gzip压缩
1
gzip test.tar.gz test.tar # 归档gzip压缩

查看

1
tar tzf test.tar.gz # 查看gzip压缩的归档内的文件

解压

1
tar xzvf test.tar.gz # 解压gzip压缩的归档
1
gunzip test.tar.gz # 解压gzip,不会解压tar归档

bzip2

压缩

1
tar cjvf test.tar.bz2 *.txt # 创建归档并bzip2压缩
1
bzip2 test.tar.bz2 test.tar # 归档bzip2压缩

查看

1
tar tjf test.tar.bz2 # 查看bzip2压缩的归档内的文件

解压

1
tar xjvf test.tar.bz2 # 解压bzip2压缩的归档
1
bunzip2 test.tar.bz2 # 解压gzip,不会解压tar归档

xz

压缩

1
tar cJvf test.tar.xz *.txt # 创建归档并gzip压缩
1
xz test.tar.xz test.tar # 归档gzip压缩

查看

1
tar tJf test.tar.xz # 查看gzip压缩的归档内的文件

解压

1
tar xJvf test.tar.xz # 解压gzip压缩的归档
1
unxz test.tar.xz # 解压gzip,不会解压tar归档

链接

软链接

1
ln -s test.txt lnstest # 创建test.txt的符号(symbolic)链接,名字为lnstest,独立inode,存放链接的名称,字符大小是text.txt字符长度

作用:

  • 保存文件路径不变,解决硬盘不够用问题
  • 代码上线
  • 去版本号

硬链接

目录不可以做硬链接

1
ln test.txt lntest # 创建硬链接,同inode
  • 目录默认两个硬链接:一个自己 .,一个上一级到这里的路径

  • 文件默认一个硬链接

查看文件详细信息

1
stat test.txt # 查看文件详细信息

access:最近查看文件的时间

change:修改权限的时间

modify:修改内容时间