记录一下备份文件的脚本,根据条件查找脚本,然后复制
开始直接使用
find /dir1 \( -path /exclusionDir1 -o -path /exclusionDir2 -o -path /exclusionDir3 \)
-prune -o name "*" -mtime -60 -exec cp -r {} /outDir \;
直接使用这条命令的话会导致把所有子目录中的文件多一份的拷贝到主目录中(意思是重复一份文件在/outDir的根目录),只好改成下面一个个区分目录和文件的脚本
脚本功能:把/dir1下的文件,排除/exclusionDir1、/exclusionDir2、/exclusionDir3的目录的文件,最近修改时间在8天内 任意名称的文件,拷贝到/outDir下,目录不存在可自动常见目录
#! /bin/bash
echo '转移指定目录下文件进程启动'
IFS=$(echo -en "\n\b"); for i in $(find /dir1 \( -path /exclusionDir1 -o -path /exclusionDir2 -o -path /exclusionDir3 \) -prune -o -name "*" -mtime -8 ;)
do
#目录操作
if [ -d $i ];then
dirName=$i
dirName=${dirName/\/dir1/}
outDirName="/outDir$dirName"
if [ ! -d $outDirName ]; then
mkdir -p $outDirName
fi
fi
#文件操作
if [ -f $i ];then
fileName=$i
fileName=${fileName/\/dir1/}
cp -r $i "/outDir$fileName"
fi
done
echo '转移指定目录下文件进程结束'
其中IFS=$(echo -en “\n\b”); 是因为部分文件名称包含空格,导致循环出问题