加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
mklink.sh 2.38 KB
一键复制 编辑 原始数据 按行查看 历史
朱金阳 提交于 2023-10-15 13:51 . Fix .
#!/bin/sh
#auther: andycrusoe@gmail.com
#使用说明:https://github.com/appotry/PTtool#readme
#结合du -b可以得到性能更快更好的版本,目前这个可用,先这样了
#查找文件硬链接
#ls -ialh file.txt
#find . -inum 1234
SRC="/share/Download/tmp/src"
DST="/share/Download/tmp/dst"
FILEGIG=1000000c
SAVEIFS=$IFS
IFS=$(printf "\n\b")
servicectl_usage(){
echo "Usage:mklink.sh sourcedir dstdir"
return 1
}
servicectl(){
if [ -z "$1" ] || [ -z "$2" ]; then
servicectl_usage
fi
}
if [ $# -eq 2 ]; then
SRC=$1
DST=$2
echo "User set:"
echo "src:$SRC"
echo "dst:$DST"
else
servicectl_usage
echo "use default set:"
echo "源目录src:$SRC"
echo "目的目录dst:$DST"
exit 255
fi
#查找大于1M的文件,硬链接
find "$SRC" -size +$FILEGIG > /tmp/findfiles
while IFS= read -r i
do
echo "work:$i"
if [ -d "$i" ]; then
echo "跳过处理目录1:$i"
echo "--"
continue
elif [ -e "$i" ]; then
echo "src file:$i"
fi
#判断目录是否已经存在
tmppth=$(dirname "$i")
pth=$(echo "$tmppth" | sed "s#${SRC}#${DST}#g")
if [ ! -d "$pth" ]; then
echo "mkdir -p $pth"
mkdir -p "$pth"
else
echo "跳过处理目录2:$i"
echo "--"
continue
fi
dstfile=$pth/$(basename "$i")
echo "dst file:${dstfile}"
#判断文件是否已经存在
#不存在才复制
if [ ! -f "$dstfile" ]; then
echo "cp -l $i $dstfile"
cp -l "$i" "$dstfile"
fi
echo "--"
done < /tmp/findfiles
rm /tmp/findfiles
#查找小于1M的文件,复制小于1m的文件
find "$SRC" -size -$FILEGIG > /tmp/findfiles
while IFS= read -r i
do
echo "work:$i"
if [ -d "$i" ]; then
echo "跳过处理目录3:$i"
echo "--"
continue
elif [ -e $i ]; then
echo "src file:$i"
fi
#判断目录是否已经存在
tmppth=$(dirname "$i")
pth=$(echo "$tmppth" | sed "s#${SRC}#${DST}#g")
if [ ! -d "$pth" ]; then
echo "mkdir -p $pth"
mkdir -p "$pth"
fi
dstfile=$pth/$(basename "$i")
echo "dst file:${dstfile}"
#判断文件是否已经存在
#不存在才复制
if [ ! -f "$dstfile" ]; then
echo "cp $i $dstfile"
cp "$i" "$dstfile"
fi
echo "--"
done < /tmp/findfiles
rm /tmp/findfiles
IFS=$SAVEIFS
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化