用shell脚本写一个循环遍历出某个目录下的子目录或子文件并将它们打包压缩到某个路径下
就是先遍历它下面的目录还是文件,文件都是日志类的,然后将当前系统时间的前一天的打包压缩,目录就接着遍历直到都是文件。#!/bin/shfunctionergodic(){...
就是先遍历它下面的目录还是文件,文件都是日志类的,然后将当前系统时间的前一天的打包压缩,目录就接着遍历直到都是文件。
#!/bin/sh
function ergodic(){
for file in `ls mall-test`
do
if [ -d mall-test"/"$file ]
then
ergodic mall-test"/"$file
else
find -mtime 0 > backupfile.list
tar -T backupfile.list -cvzf /home/app/logs/backup/`date -d"1 day ago" +"%Y%m%d"`mall-test.tar.gz
rm backupfile.list
fi
done
}
这是我写的,不知道哪出错了 展开
#!/bin/sh
function ergodic(){
for file in `ls mall-test`
do
if [ -d mall-test"/"$file ]
then
ergodic mall-test"/"$file
else
find -mtime 0 > backupfile.list
tar -T backupfile.list -cvzf /home/app/logs/backup/`date -d"1 day ago" +"%Y%m%d"`mall-test.tar.gz
rm backupfile.list
fi
done
}
这是我写的,不知道哪出错了 展开
展开全部
(1)sh 的Shell定义函数不能这样,Bash的可以这样定义
第一行的sh改为bash,或者第二行改为ergodic(){ 【即把function去掉】
(2)你写的函数没有输入参数,或者说你想让函数进行递归调用自身,但是你写点代码不能实现
#!/bin/bash
function ergodic() {
for file in `ls $1` #$1是调用时的第一个参数 函数找出所有非目录的文件
do
if [ -d "$1/$file" ]
then
# echo "$1/$file"
ergodic "$1/$file"
else
echo $file
fi
done
}
ergodic "~/mall-test" #或者吧mall-test的绝对路径写上
后面的打包压缩部分没有测试,你可以单独在shell上运行命令,测试tar等命令是否实现了自己想法。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询