[root@localhost data]# rm -rf /data /* #有空格删根
1,find | xargs
文件相关信息:metadata, data
每个文件有三个时间戳: access time 访问时间,atime,读取文件内容 modify time 修改时间,mtime,改变文件内容(数据) change time 改变时间,ctime,元数据发生改变 xargs是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。 由于很多命令不支持管道| 来传递参数,xargs用于产生某个命令的参数,xargs可以读入stdin的数据,并以空格符或回车符将stdin的数据分隔成为参数 许多命令不能接受过多参数,命令执行可能会失败,xargs可以解决 注意: 文件名或者其他意义的名词内含有空格符的情况 find / -name "*.txt" -delete root@ubuntu2004:~/data# find / -name “*.conf” -ok ls -l {} \; #注意{} 和\;之间有空格 find / -name “a.conf” -ok mv {} /data \; #每次询问 find -name "*.log" -exec mv {} /data \; #批量执行不再询问 find / -name "*.log" -mmin -10 -exec mv {} /opt \; #小于10分钟批量执行不再询问 find / -name "*.log" -mmin +10 -exec mv {} /data_bak \; #大于10分钟批量执行不再询问-name filename 查找名为filename的文件 -perm 按执行权限来查找 -user username 按文件属主来查找 -group groupname 按组来查找 -mtime -n +n 按文件更改时间来查找文件,-n指n天以内,+n指n天以前 -atime -n +n 按文件访问时间来查GIN: 0px"> -ctime -n +n 按文件创建时间来查找文件,-n指n天以内,+n指n天以前 -nogroup 查无有效属组的文件,即文件的属组在/etc/groups中不存在 -nouser 查无有效属主的文件,即文件的属主在/etc/passwd中不存 -newer f1 !f2 找文件,-n指n天以内,+n指n天以前 -ctime -n +n 按文件创建时间来查找文件,-n指n天以内,+n指n天以前 -nogroup 查无有效属组的文件,即文件的属组在/etc/groups中不存在 -nouser 查无有效属主的文件,即文件的属主在/etc/passwd中不存 -newer f1 !f2 查更改时间比f1新但比f2旧的文件 -type b/d/c/p/l/f 查是块设备、目录、字符设备、管道、符号链接、普通文件 -size n[c] 查长度为n块[或n字节]的文件 -depth 使查找在进入子目录前先行查找完本目录 -fstype 查更改时间比f1新但比f2旧的文件 -type b/d/c/p/l/f 查是块设备、目录、字符设备、管道、符号链接、普通文件 -size n[c] 查长度为n块[或n字节]的文件 -depth 使查找在进入子目录前先行查找完本目录 -fstype 查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到 -mount 查文件时不跨越文件系统mount点 -follow 如果遇到符号链接文件,就跟踪链接所指的文件 -cpio %; 查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到 -mount 查文件时不跨越文件系统mount点 -follow 如果遇到符号链接文件,就跟踪链接所指的文件 -cpio 对匹配的文件使用cpio命令,将他们备份到磁带设备中 -prune 忽略某个目录
[root@localhost ~]# stat /etc/passwd File: /etc/passwd Size: 2548 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 134840055 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2022-03-25 20:10:21.501147392 +0800 Modify: 2022-03-25 20:10:21.470146822 +0800 Change: 2022-03-25 20:10:21.471146841 +0800 Birth: 2022-03-25 20:10:21.470146822 +0800
find /data/ –name "*.jpg" -mtime +365 | xargs gzip find /data/ –name "*.jpg" -mtime +365 | xargs ls find /data/ –name "*.jpg" -mtime +365 | xargs rm -f find /data/* –name "*.txt" -mtime +30 | xargs gzip #文件经过gzip压缩后,文件会多出一个 .gz后缀。gzip命令对文本文件有60%~70%的压缩率 find /data/* –name "*.txt" -mtime +30 | xargs ls find /data/* –name "*.txt" -mtime +30 | xargs rm -f find /var/log/*.log |xargs gzip find /var/log/*.log.gz |xargs gunzip
管道符 前面的输出 是后面的输入
xargs 更像一个筛选器,将符合管道传递过来文件名的内容一并处理掉,这是一个极度高效的方法
2, copy scp -a 归档,相当于-dR --preserv=all,常用于备份功能 -r, -R 递归复制目录及内部的所有内容 3,文件元数据和节点表结构 每个文件的属性信息,比如:文件的大小,时间,类型等,称为文件的元数据(meta data)。这此元数据是存放在inode(index node)表中。inode 表中有很多条记录组成,第一条记录对应的存放了一个文件的元数据信息 每一个inode表记录对应的保存了以下信息: inode number 节点号 文件类型 权限 UID GID 链接数(指向这个文件名路径名称个数) 该文件的大小和不同的时间戳 指向磁盘上文件的数据块指针 有关文件的其他数据 mkdir /boot/test echo f{1..500000} | xargs touch #创建多文件,涉及管道 echo f{1..500000} | xargs rm -ftouch file1{1..100900} touch file2{1..100900} touch file3{1..100900} touch file4{1..100900} touch file5{1..100900}
[root@localhost test]# df -i /boot/ Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda1 524384 524384 0 100% /boot
[root@localhost test]# touch new1.txt touch: cannot touch 'new1.txt': No space left on device
清理大文件
[root@localhost test]# cp /dev/zero /boot/test/zero.bak
cp: error writing '/boot/test/zero.bak': No space left on device
vi zero.bak
错误方法
rf -f zer.bak 要等到文件不再被进程使用才释放,生产慎用,要重启服务才释放空间,或等到业务不繁忙执行
lsof |grep delete
vi 3539 root 5r REG 8,1 793378816 34668 /boot/test/zero.bak (deleted)
[root@localhost ~]# ps -ef|grep 3539 root 3539 2739 98 00:09 pts/1 00:02:47 vi zero.bak root 3593 3501 0 00:12 pts/3 00:00:00 grep --color=auto 3539 [root@localhost ~]# kill -9 3539
正确方法
[root@localhost test]# cat /dev/null > zero.bak
rm -f
4,硬链接和软连接
4.1 硬链接
硬链接本质上就给一个文件起一个新的名称,实质是同一个文件 硬链接特性: 创建硬链接会在对应的目录中增加额外的记录项以引用文件 对应于同一文件系统上一个物理文件 每个目录引用相同的inode号 创建时链接数递增 删除文件时:rm命令递减计数的链接,文件要存在,至少有一个链接数,当链接数为零时,该文件被删除 不能跨越驱动器或分区 不支持对目录创建硬链接[root@localhost data]# ln f1.txt f1.txt.link
[root@localhost data]# ll -i f1.txt
134840056 -rw-r--r-- 2 root root 697 Mar 26 18:15 f1.txt
[root@localhost data]# ll -i f1.txt.link
134840056 -rw-r--r-- 2 root root 697 Mar 26 18:15 f1.txt.link
挂盘
[root@localhost opt]# mount /dev/sdb1 /opt
不可跨分区创建硬链接
4.2 软连接
一个符号链接指向另一个文件,就像 windows 中快捷方式,软链接文件和原文件本质上不是同一个文件 软链接特点 一个符号链接的内容是它引用文件的名称 可以对目录创建软链接 可以跨分区的文件实现 指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数 在创建软链接时, 如果源文件使用相对路径,是相对于软链接文件的路径,而非相对于当前工作目录,但是软链接的路径如果是相对路径,则是相对于当前工作目录格式
ln -s filename [linkname][root@localhost opt]# ln -s /data/aa /opt/aaaa
[root@localhost opt]# rm -f aaaa #删除软连接
带-r / 误操作删除数据
[root@localhost opt]# ln -s /data/ cc #链接到文件夹
[root@localhost opt]# rm -rf cc/ #慎用-r / [root@localhost opt]# ll total 0 lrwxrwxrwx 1 root root 6 Mar 26 18:50 cc -> /data/ [root@localhost data]# ll total 0
[root@localhost opt]# rm -f cc/ #不加r不能删除目录 rm: cannot remove 'cc/': Is a directory [root@localhost opt]# rm -f cc #删除软链接
相对路径针对软连接
[root@localhost data]# ln -s appv1 /opt/app [root@localhost data]# ll drwxr-xr-x 2 root root 6 Mar 26 19:02 appv1 drwxr-xr-x 2 root root 6 Mar 26 19:02 appv2