文件查找&压缩

网友投稿 232 2022-11-07

文件查找&压缩

locate

文件查找:locate, fifind 非实时查找(数据库查找):locate 实时查找:fifind locate 查询系统上预建的文件索引数据库 /var/lib/mlocate/mlocate.db 索引的构建是在系统较为空闲时自动进行(周期性任务),执行updatedb可以更新数据库 索引构建过程需要遍历整个根文件系统,很消耗资源 工作特点: 查找速度快 模糊查找 非实时查找 搜索的是文件的全路径,不仅仅是文件名 可能只搜索用户具备读取和执行权限的目录 -i 不区分大小写的搜索 -n N 只列举前N个匹配项目 -r 使用基本正则表达式 #搜索名称或路径中包含“conf”的文件 locate conf #使用Regex来搜索以“.conf”结尾的文件 locate -r '\.conf$ [root@centos8 ~]#locate -n 10 -ir '\.CONF$' /boot/loader/entries/5b85fc7444b240a992c42ce2a9f65db5-0-rescue.conf /boot/loader/entries/5b85fc7444b240a992c42ce2a9f65db5-4.18.0-147.el8.x86_64.conf /etc/autofs.conf /etc/autofs_ldap_auth.conf /etc/dracut.conf /etc/fuse.conf /etc/host.conf /etc/idmapd.conf /etc/kdump.conf /etc/krb5.conf

[root@centos8 Test]#yum install mlocate -y [root@centos8 Test]#locate passwd locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory [root@centos8 Test]#updatedb 更新数据库 [root@centos8 Test]#locate passwd -r 正则表达式,搜索以某某后缀的 [root@centos8 Test]#locate -r '\.conf$' [root@centos8 Test]#touch abc.txt [root@centos8 Test]#locate 'abc.txt' [root@centos8 Test]#updatedb 更新数据库才可以搜索到 [root@centos8 Test]#locate 'abc.txt' /data/Test/abc.txt [root@centos8 Test]#rm -rf abc.txt 滞后性。删除了也可找到 [root@centos8 Test]#locate 'abc.txt' /data/Test/abc.txt -i 匹配时忽略大小写 -c 不显示匹配内容。只显示匹配到的行 --regex 支持扩展的正则表达式

find

-maxdepth -mindepth [root@centos8 Test]#find /boot -maxdepth 1 #最大深度1级 [root@centos8 Test]#find /boot -mindepth 1 #最小深度1级 [root@centos8 Test]#find /boot -mindepth 1 -maxdepth 1 #只找一级 -depth 或者 -d 对每个目录先处理目录内的文件,再处理目录本身 [root@centos8 data]#find /data/test /data/test /data/test/f1.txt /data/test/f2.txt /data/test/test2 /data/test/test2/test3 /data/test/test2/test3/f3.txt /data/test/test2/test3/f4.txt [root@centos8 data]#find /data/test -depth /data/test/f1.txt /data/test/f2.txt /data/test/test2/test3/f3.txt /data/test/test2/test3/f4.txt /data/test/test2/test3 /data/test/test2 /data/test -name "文件名称":支持使用glob,如:*, ?, [], [^],通配符要加双引号引起来 -iname "文件名称":不区分字母大小写 -inum n 按inode号查找 -samefile name 相同inode号的文件 -links n   链接数为n的文件 -regex “PATTERN”:以PATTERN匹配整个文件路径,而非文件名称 -name 通配符的加双引号引起来 [root@centos8 Test]#find 不指定条件就全部搜索 [root@centos8 Test]#find /etc -name "*.txt" #加双引号 /etc/pki/nssdb/pkcs11.txt [root@centos8 Test]#find /etc/ -name *.txt #加双引号 [root@centos8 Test]#find /etc/ -name "*.txt" #加双引号 /etc/pki/nssdb/pkcs11.txt -iname 根据文件名查找,但是不区分大小写 [root@wang ~]# find ./ -name "anaconda-ks.cfg" ./anaconda-ks.cfg 支持glob通配符 ?任意单个字符 * 任意长度任意字符 [root@wang ~]# find ./ -name "*.cfg" ./anaconda-ks.cfg ./initial-setup-ks.cfg []匹配指定范围内的的任意单个字符 [root@wang ~]# find ./ -name " (0-9)*.cfg" ./anaconda-ks.cfg ./initial-setup-ks.cfg [^]匹配指定范围内的单个字符取反 遍历查找 find+option+查找路径+查找条件+处理动作 根据文件的属组和属主来查找 -inum 根据节点编号来搜索 [root@localhost ~]# find /etc -inum 16802309 /etc/yum.repos.d [root@localhost ~]# find /etc/ -regex .*\.conf$ [root@localhost ~]# find /etc/ -regex \.conf$ 第二种方法错误,因为regex匹配的要是全路径,而不是文件名 -type TYPE TYPE可以是以下形式: f: 普通文件 d: 目录文件 l: 符号链接文件 s:套接字文件 b: 块设备文件 c: 字符设备文件 p: 管道文件 #查看/home的目录 [root08:22 AMcentos8 /scripts]#find /home -type d -ls -user USERNAME:查找属主为指定用户(UID)的文件 -group GRPNAME: 查找属组为指定组(GID)的文件 -uid UserID:查找属主为指定的UID号的文件 -gid GroupID:查找属组为指定的GID号的文件 -nouser:查找没有属主的文件 -nogroup:查找没有属组的文件 -user [root@localhost ~]# find / -user wanghua -ls -ls 是find命令自带的处理动作 -regex #加 .* 因为匹配的是路径,而不是文件名 [root@localhost ~]# find /etc/ -regex ".*\.conf$" [root@localhost ~]# useradd xiaowang [root@localhost ~]# userdel xiaowang [root@localhost ~]# find / -nouser -ls 查找没有属主的文件 [root@localhost ~]# find / -nogroup -ls 查找没有属组的文件 -empty [root@localhost ~]# find /etc -empty -type f -ls #ls 相当于 ll #条件组合: -o 或者 -a 与 ! 或者 not 否定 #优先级问题: -a 的优先级比-o高 [root@localhost ~]# find /etc/ -empty -o -not -type d -ls |wc -l 917 [root@localhost ~]# find /etc/ -empty -o -not -type d |wc -l 988 因为:-not -type d -ls 被当做了一块来执行 [root@localhost ~]# find /etc/ \( -empty -o -not -type d \) -ls |wc -l 988 #找出/tmp目录下,属主不是root,且文件名不以f开头的文件 find /tmp ( -not -user root -a -not -name 'f*' ) -ls find /tmp -not ( -user root -o -name 'f*' ) –ls -ls 的前面一定要跟一个括号 #摩根定律: (非A)或(非B)==非(A且B) (非A)且(非B)==非(A或B) !A -a !B = !(A -o B) !A -o !B = !(A -a B) [root@localhost ~]# find /tmp \( -not -user root -a -not -name 'f*' \) -ls 101371615 0 -rw-rw-r-- 1 wanghua wanghua 0 Apr 11 06:57 /tmp/wanghua [root08:32 AMcentos8 /scripts]#find ! \( -type d -a -empty \)| wc -l 2 [root08:33 AMcentos8 /scripts]#find ! -type d -o ! -empty |wc -l 2 #文件夹的排除 #查找/etc/下,除/etc/sane.d目录的其它所有.conf后缀的文件 find /etc -path '/etc/sane.d' -a -prune -o -name "*.conf" #查找/etc/下,除/etc/sane.d和/etc/fonts两个目录的所有.conf后缀的文件 find /etc \( -path "/etc/sane.d" -o -path "/etc/fonts" \) -a -prune -o -name "*.conf" #排除/proc和/sys目录 find / \( -path "/sys" -o -path "/proc" \) -a -prune -o -type f -a -mmin -1 -size [root@centos8 Test]#find -size 6k -ls 201727784 8 -rw-r--r-- 1 root root 6144 Apr 11 19:29 ./f1 201727806 8 -rw-r--r-- 1 root root 6000 Apr 11 19:30 ./f3 201727817 8 -rw-r--r-- 1 root root 5121 Apr 11 19:35 ./f4 [root@centos8 Test]#find -size 6144c ./f1 [root@centos8 Test]#find -size -6k 表示0到6k的文件 [root@centos8 Test]#find -size +6k 表示6K以上的文件 . ./f6 #时间戳 根据文件的时间戳来查找 以天为单位: -atime 访问时间 -mtime 修改时间 -ctime 改变时间 以分钟为单位 -amin -mmin -cmin +3 访问时间距离现在已经超过了三天 -3 访问时间距离现在不足三天 3 距离今天正好达到三天的那一天 atime 以天为单位 [root09:14 AMcentos8 /scripts]#find / -mtime +10 # 11天以前的文件 [root09:17 AMcentos8 /scripts]#find /var -mtime -1 -ls #一天内的 [root09:19 AMcentos8 /scripts]#find /var -mmin -1 -ls #一分钟之内文件发生的变化 #权限来修改 -perm [/|-]MODE MODE: 精确权限匹配 /MODE:任何一类(u,g,o)对象的权限中只要能一位匹配即可,或关系,+ 从CentOS 7开始淘汰 -MODE:每一类对象都必须同时拥有指定权限,与关系 0 表示不关注 所以说-002 与 /002 等价,这类权限是要关注的,因为其他人有写权限 说明: find -perm 755 会匹配权限模式恰好是755的文件 只要当任意人有写权限时,find -perm /222就会匹配 只有当每个人都有写权限时,find -perm -222才会匹配 只有当其它人(other)有写权限时,find -perm -002才会匹配 #处理动作 -print:默认的处理动作,显示至屏幕 -ls:类似于对查找到的文件执行“ls -l”命令 -fls file:查找到的所有文件的长格式信息保存至指定文件中,相当于 -ls > file -delete:删除查找到的文件,慎用! -ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会 交互式要求用户确认 -exec COMMAND {} \; 批量,不回答就操作, 对查找到的每个文件执行由COMMAND指定的命令 {}: 用于引用查找到的文件名称自身 -fls 相当于重定向 [root@centos8 Test]#find -fls /root/find.log -delete [root@centos8 Test]#find -name "*.txt" -delete -ok [root@centos8 Test]#for i in `find -name "f*"`;do mv $i /opt;done [root@centos8 Test]#find -name "f*" -ok mv {} /opt \; < mv ... ./f1 > ? y < mv ... ./f2 > ? y < mv ... ./f3 > ? < mv ... ./f4 > ? < mv ... ./f6 > ? < mv ... ./f7 > ? -exec [root@centos8 Test]#find -name "f*" -exec mv {} /opt \; 无需要交互式,一次到位 #备份文件: [root10:15 AMcentos8 /data]#find /data -name "*.txt" -exec cp {} {}.bak \; #删除 此时的rm是动作,所以无须 rm -rf [root10:16 AMcentos8 /data]#find /data -name "*.txt" -exec rm {} \; #修改权限 [root@centos8 Test]#find -perm 644 -a -name "f*" -exec chmod 000 {} \; #备份配置文件,添加.orig这个扩展名 find  -name  ".conf"  -exec  cp {} {}.orig \; #提示删除存在时间超过3天以上的joe的临时文件 find /tmp -ctime +3 -user joe -ok rm {} \; #在主目录中寻找可被其它用户写入的文件 find ~ -perm -002  -exec chmod o-w {} \; #查找/data下的权限为644,后缀为sh的普通文件,增加执行权限 find /data –type f -perm 644  -name "*.sh" –exec chmod 755 {} \; xargs 解决命令不支持标准输入,将标准输出的内容作为命令的参数 -n# #行显示 [root@centos8 Test]#seq 3 |xargs 1 2 3 [root@centos8 Test]#seq 3 |xargs -n2 1 2 3 #删除和创建账户 [root@centos8 Test]#for i in {1..10};do useradd user$i;done 创建十个账户 [root@centos8 Test]#echo user{1..10} |xargs -n1 userdel -r 删除十个账户 删除账号只能一个一个的删除 或者: [root@centos8 Test]#for i in {1..10};do userdel user$i;done #删除文件名带空格的文件 [root@localhost ~]# find -type f -print0 | xargs -0 rm {} \; 1.查找/usr目录下不属于 root bin 或hadoop的所有文件或目录 find /usr -not -user root -a -not -user bin -a -not -user hadoop 或者 find /usr -not \(-user root -o -user bin -o -user hadoop\) 2.查找/etc目录下,一周内内容被修改过,属主不为root 也不为Hadoop的文件或目录 find -mtime -7 -a -not\(-user root -o -user hadoop\) find -mtime -7 -a -not -user root -a -not -user hadoop 3.查找当前系统上没有属主或属组且最近一周内被访问过的文件或目录 find / -nouser -a -nogroup -a -atime -7 没有属组且没有属主==没有属组或属主 4.查找/etc目录下所有用户没有写权限 find /etc -not -perm +222 或者/ 加号被替换了 find /etc -not -perm /222 摩根定律 +222 表示或逻辑 取反就是且 5.查找/etc目录下至少有一类用户没有写权限 find /etc -not -perm -222 6.查找/etc目录下所有用户都有执行权限,且其他用户有写权限的文件或目录 find /etc -perm -113

-002 与 /002 等价 但是/7000与-7000不等价

0 表示不关注 所以说-002 与 /002 等价

xargs

[root10:36 AMcentos8 /data]#find -name "*.bak" |xargs ls -Sl -rw-r--r--. 1 root root 29 Jun 5 10:16 ./t.txt.bak -rw-r--r--. 1 root root 25 Jun 5 10:16 ./f1.txt.bak -rw-r--r--. 1 root root 22 Jun 5 10:16 ./echo.txt.bak -rw-r--r--. 1 root root 21 Jun 5 10:16 ./seq.txt.bak -rw-r--r--. 1 root root 8 Jun 5 10:16 ./b.txt.bak

#显示10个数字 [root@centos8 ~]#seq 10 | xargs 1 2 3 4 5 6 7 8 9 10 [root10:57 AMcentos8 /data]#echo {1..10} 1 2 3 4 5 6 7 8 9 10 [root10:58 AMcentos8 /data]#echo {1..10} |xargs 1 2 3 4 5 6 7 8 9 10 [root10:58 AMcentos8 /data]#echo {1..10} |xargs -n1 1 2 3 4 5 6 7 8 9 10 [root10:58 AMcentos8 /data]#echo {1..10} |xargs -n2 1 2 3 4 5 6 7 8 9 10 #批量创建和删除用户 echo user{1..10} |xargs -n1 useradd echo user{1..10} | xargs -n1 userdel -r #查找有特殊权限的文件,并排序 find /bin/ -perm /7000 | xargs ls -Sl #并发执行多个进程 seq 100 |xargs -i -P10 wget -P /data   http://10.0.0.8/{}.html #并行下载视频 seq 199 | xargs -i -P3 you-get -print0 处理特殊文件

[root11:23 AMcentos8 /data]#ls a 'a b' b.log 'c d' [root11:23 AMcentos8 /data]#find |xargs ls -Sl ls: cannot access 'b': No such file or directory ls: cannot access './c': No such file or directory ls: cannot access 'd': No such file or directory -rw-r--r--. 1 root root 21 Jun 3 01:41 ./b.log -rw-r--r--. 1 root root 11 Jun 4 15:23 ./a -rw-r--r--. 1 root root 11 Jun 4 15:23 ./a -rw-r--r--. 1 root root 0 Aug 7 2019 ./.a -rw-r--r--. 1 root root 0 Aug 7 2019 ./.b -rw-r--r--. 1 root root 0 Aug 7 2019 ./.c -rw-r--r--. 1 root root 0 Aug 7 2019 ./.d .: total 12 -rw-r--r--. 1 root root 21 Jun 3 01:41 b.log -rw-r--r--. 1 root root 11 Jun 4 15:23 a -rw-r--r--. 1 root root 3 Jun 5 11:07 'a b' -rw-r--r--. 1 root root 0 Jun 5 11:05 'c d' [root11:23 AMcentos8 /data]#find -print0 |xargs -0 ls -Sl -rw-r--r--. 1 root root 21 Jun 3 01:41 ./b.log -rw-r--r--. 1 root root 11 Jun 4 15:23 ./a -rw-r--r--. 1 root root 3 Jun 5 11:07 './a b' -rw-r--r--. 1 root root 0 Aug 7 2019 ./.a -rw-r--r--. 1 root root 0 Aug 7 2019 ./.b -rw-r--r--. 1 root root 0 Aug 7 2019 ./.c -rw-r--r--. 1 root root 0 Jun 5 11:05 './c d' -rw-r--r--. 1 root root 0 Aug 7 2019 ./.d .: total 12 -rw-r--r--. 1 root root 21 Jun 3 01:41 b.log -rw-r--r--. 1 root root 11 Jun 4 15:23 a -rw-r--r--. 1 root root 3 Jun 5 11:07 'a b' -rw-r--r--. 1 root root 0 Jun 5 11:05 'c d' #删除特殊文件 [root11:23 AMcentos8 /data]# [root11:23 AMcentos8 /data]#find |xargs rm rm: cannot remove '.': Is a directory rm: cannot remove './a': No such file or directory rm: cannot remove 'b': No such file or directory rm: cannot remove './c': No such file or directory rm: cannot remove 'd': No such file or directory [root11:26 AMcentos8 /data]#find -print0 |xargs -0 rm rm: cannot remove '.': Is a directory

练习

1、查找/var目录下属主为root,且属组为mail的所有文件

[root09:53 AMcentos8 /scripts]#find /var -user root -group mail -ls

2、查找/var目录下不属于root、lp、gdm的所有文件

方法一: [root11:42 AMcentos8 /data]#find /var/ -not \( -user root -o -user lp -o -user gdm \) 方法二: [root11:42 AMcentos8 /data]#find /var/ ! -user root ! -user lp ! -user gdm

3、查找/var目录下最近一周内其内容修改过,同时属主不为root,也不是postfifix的文件

方法一 [root11:46 AMcentos8 /data]#find /var/ -mtime -7 ! -user root ! -user postfifix 方法二 [root11:46 AMcentos8 /data]#find /var/ -mtime -7 -not \( -user root -o -user postfifix \) 方法三 [root11:47 AMcentos8 /data]#find /var/ -mtime -7 ! \( -user root -o -user postfifix \)

4、查找当前系统上没有属主或属组,且最近一个周内曾被访问过的文件

[root11:55 AMcentos8 /data]#find / \( -nouser -o -nogroup \) -mtime -7

5、查找/etc目录下大于1M且类型为普通文件的所有文件

[root11:57 AMcentos8 /data]#find /etc -size +1M -type d -ls

6、查找/etc目录下所有用户都没有写权限的文件

[root12:00 PMcentos8 /data]#find /etc ! -perm /222 -ls

7、查找/etc目录下至少有一类用户没有执行权限的文件

[root12:02 PMcentos8 /data]#find /etc ! -perm -111 -ls

8、查找/etc/init.d目录下,所有用户都有执行权限,且其它用户有写权限的文件

[root07:21 AMcentos7 ~]#find /etc/init.d/ -perm -111 -a -perm -002

压缩和解压缩及打包

#compress [root@centos8 data]#dd if=/dev/zero of=f bs=1M count=10 [root@centos8 data]#yum install ncompress -y [root@centos8 data]#compress f 压缩文件 [root@centos8 data]#uncompress f.Z 解压缩 参数 -c 压缩保留文件 [root@centos8 data]#compress -c f >f.z [root@centos8 data]#ll total 10252 -rw-r--r-- 1 root root 10485760 Apr 11 22:19 f -rw-r--r-- 1 root root 6612 Apr 11 22:26 f.z drwxr-xr-x 2 root root 95 Apr 11 21:40 Test drwxr-xr-x 2 root root 45 Apr 11 11:57 testdir -rw-r--r-- 1 root root 1281 Apr 11 10:50 user.log -dc 解压缩 compress -dc f.z >f #解压缩保留原来的文件 # zcat 不解压直接看文件 [root@centos8 data]#zcat f.z gzip 和ungzip ~]# gzip m 直接压缩删除原文件 -d 解压缩文件,丢失源文件 [root@centos8 data]#gzip -d -k 压缩以后不丢失原文件 (centos8的功能) [root@centos8 data]#gzip -k [root@centos8 data]#gzip -k -5 #加上数字表示压缩比 [root@centos8 data]#ll total 66504 drwxr-xr-x 86 root root 8192 Apr 11 22:34 etc -rw-r--r-- 1 root root 6612 Apr 11 22:26 f.z -rw-r--r-- 1 root root 42301440 Feb 2 18:16 httpd-2.4.46.tar -rw-r--r-- 1 root root 9424017 Feb 2 18:16 httpd-2.4.46.tar.gz #标准输出以后重定向 [root@centos8 data]#cat user.log |gzip > user.log.gz #bzip2 bunzip2 #压缩的比例比gz格式更高 [root@centos8 data]#yum install bzip2 -y bzip2 -k xx #压缩保留原文件 bzcat 不解压查看里面的内容 cat xx |bzip -9 >x.bz2 #xz 和 unxz 压缩更多,但是花的时间也多 xzcat 不解压就可以查看 #zip unzip 支持压缩文件夹 zip 可以实现打包目录和多个文件成一个文件并压缩,但可能会丢失文件属性信息,如:所有者和组信 息,一般建议使用 tar 代替 #打包并压缩 zip –r /backup/sysconfig.zip /etc/sysconfig/ #不包括目录本身,只打包目录内的文件和子目录 cd /etc/sysconfig; zip -r /root/sysconfig.zip * #默认解压缩至当前目录 unzip /backup/sysconfig.zip   #解压缩至指定目录,如果指定目录不存在,会在其父目录(必须事先存在)下自动生成 unzip /backup/sysconfig.zip  -d /tmp/config   cat /var/log/messages | zip messages  - #-p 表示管道 unzip -p message.zip   > message -r 压缩文件夹 [root@centos8 data]#zip -r etc.zip etc -rw-r--r-- 1 root root 7.6M Apr 11 23:24 etc.zip [root@centos8 data]#du -sh /etc 22M /etc 加密: [root@centos8 data]#zip -h2 |grep pass -e use standard (weak) PKZip 2.0 encryption, prompt for password #输密码 -P pswd use standard encryption, password is pswd [root@centos8 data]#zip -e -r etc2.zip /etc/ Enter password: Verify password: 压缩加密 [root@centos8 opt]#unzip /data/etc2.zip #解压到当前的目录下 [root@centos8 opt]#unzip -P 123456 etc3.zip #非交互式解压缩 非交互式输入密码

tar(压缩文件夹)

不带横线:bsb分格 -- GUN分格 - UNIX分格 #拷贝: [root@centos8 data]#tar c /etc |tar x -C /opt z gzp c 创建tar包 v 显示详细过程 f 指定压缩文件名字 t 不解压就看里面的内容 p 保持文件的原有属性,但是acl权限无法保存 x 解开包 C 指定解压的目标路径 --exclude=PATTEND 打包时候排除不需要处理的文件和目录 -h 打包软链接文件指向真实源文件 组合解压缩 xf 组合打包压缩 zcf gz bz2 j xz J 安装了xz命令才能调用J ========================================================================== [root01:40 PMlocalhost /opt]#ll /etc/rc.local lrwxrwxrwx. 1 root root 13 Apr 15 08:42 /etc/rc.local -> rc.d/rc.local [root01:41 PMlocalhost /opt]#tar zcf ./rc.local.tar.gz /etc/rc.local #要用相对路径 tar: Removing leading `/' from member names [root01:42 PMlocalhost /opt]#ll total 4 -rw-r--r--. 1 root root 116 Apr 19 13:42 rc.local.tar.gz [root01:42 PMlocalhost /opt]#tar xf rc.local.tar.gz [root01:43 PMlocalhost /opt]#ll total 4 drwxr-xr-x. 2 root root 21 Apr 19 13:43 etc -rw-r--r--. 1 root root 116 Apr 19 13:42 rc.local.tar.gz [root01:43 PMlocalhost /opt]#ll etc total 0 lrwxrwxrwx. 1 root root 13 Apr 15 08:42 rc.local -> rc.d/rc.local #是个链接文件 [root01:45 PMlocalhost /opt]# #加 h [root01:50 PMlocalhost /opt]#ll /etc/rc.local lrwxrwxrwx. 1 root root 13 Apr 15 08:42 /etc/rc.local -> rc.d/rc.local [root01:50 PMlocalhost /opt]#cd /etc [root01:52 PMlocalhost /etc]#tar hzcf /opt/rc.local.tar.gz rc.local#这样打包的才不是链接文件 [root01:53 PMlocalhost /etc]#cd /opt/ [root01:53 PMlocalhost /opt]#ll total 4 -rw-r--r--. 1 root root 429 Apr 19 13:53 rc.local.tar.gz [root01:53 PMlocalhost /opt]#tar xf rc.local.tar.gz [root01:54 PMlocalhost /opt]#ll total 8 -rw-r--r--. 1 root root 473 Nov 19 2015 rc.local -rw-r--r--. 1 root root 429 Apr 19 13:53 rc.local.tar.gz [root01:54 PMlocalhost /opt]# #当前目标的所有文件打包 [root01:09 PMlocalhost /data]#tar zcvf data.tar.gz ./* 进入不到这个目录里面,只打包目录里面的文件,不打包目录 ./1.txt ./2.txt ./3.txt ./4.txt ./5.txt [root01:09 PMlocalhost /data]#ls 1.txt 2.txt 3.txt 4.txt 5.txt data.tar.gz #查看里面的内容 [root01:11 PMlocalhost /data]#tar -tf data.tar.gz ./1.txt ./2.txt ./3.txt ./4.txt ./5.txt #解压 文件解压出来是文件 [root01:20 PMlocalhost /data]#ls data.tar.gz [root01:20 PMlocalhost /data]#tar xf data.tar.gz [root01:21 PMlocalhost /data]#ls 1.txt 2.txt 3.txt 4.txt 5.txt data.tar.gz 目录解压出来就是目录: [root01:23 PMlocalhost /data]#ls data1.tar.gz data.tar.gz [root01:23 PMlocalhost /data]#tar xf data1.tar.gz [root01:23 PMlocalhost /data]#ls data1.tar.gz data.tar.gz txt --exclude [root01:58 PMlocalhost /opt]#ls 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt rc.local rc.local.tar.gz [root01:58 PMlocalhost /opt]#tar zcf wanghua.tar.gz ./* --exclude=4.txt --exclude=5.txt [root01:59 PMlocalhost /opt]#tar tf wanghua.tar.gz ./1.txt ./2.txt ./3.txt ./6.txt ./rc.local ./rc.local.tar.gz #利用 tar 进行文件复制 [root02:09 PMcentos8 /data]# tar c /var/ |tar x -C /data

split

split 命令可以分割一个文件为多个文件

范例

#分割大的 tar 文件为多份小文件 split -b Size –d tar-file-name prefix-name split -b 1M mybackup.tgz mybackup-parts #切换成的多个小分文件使用数字后缀 split -b 1M –d mybackup.tgz mybackup-parts

将多个切割的小文件合并成一个大文件

cat mybackup-parts* > mybackup.tar.gz

范例:

#切割文件 [root02:15 PMcentos8 /data]#split -b 1M var.tar.gz /data/var_zip 将 var.tar.gz 切割为大小1M的文件,文件的后缀是字母 [root02:19 PMcentos8 /data]#split -b 1M -d var.tar.gz /data/dig_zip 将 var.tar.gz 切割为大小1M的文件,文件的后缀是数字 #合并文件 [root02:28 PMcentos8 /data]#cat /data/var_zip* > /data/var_zip

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:PLL芯片接口方面最常见的11个问题
下一篇:mybatis调用mysql存储过程(返回参数,单结果集,多结果集)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~