一、要求:
查找/data/目录下的2019年修改过的以.yml结尾的文件,将这些文件保留文件的目录结构打包,然后拷贝到/home目录下
二、查找文件
1、查找以.sl结尾的文件:
find /data -name *.yml
2、查看这些文件的修改时间:stat命令
stat 文件名字
# stat deploy.yml File: ‘/data/deploy.yml’ Size: 347183 Blocks: 680 IO Block: 4096 regular file Device: fd03h/64771d Inode: 70479172 Links: 1 Access: (0744/-rwxr--r--) Uid: ( 0/ root) Gid: ( 1000/shareuser) Access: 2019-05-23 10:03:19.626759310 +0800 Modify: 2019-05-23 10:00:04.495621129 +0800 Change: 2019-05-23 10:00:04.495125281 +0800 Birth: -
3、拷贝文件(保留目录结构)
cp -r 目录 目录
如果没有对应的目录,需要使用命令“mkidr -p”来创建
三、打包
首先进入到文件目录保存的目录下,然后使用tar打包
tar -zcvf data.tar.xz *
四、使用shell脚本完成文件的查找及打包
#!/bin/bash for file in `find /data/ -name *.yml -type f` do if [[ `stat $file |awk -F[:,-] '/Modify/{print $2}' |sed 's/ //g'` -eq 2019 ]];then dir1=`echo $file |awk -F[/] '{print $3}'` dir2=`echo $file |awk -F[/] '{print $4}'` [ [ -e /data/scripts/tar/${dir1}/${dir2} ]] || mkdir -p /data/scripts/tar/${dir1}/${dir2} cp $file /data/scripts/tar/${dir1}/${dir2} fi done cd /data/scripts/tar tar -zcvf data.tar.xz * mv data.tar.xz /home