Scripting 正在分析要迁移的UNIX权限的目录

Scripting 正在分析要迁移的UNIX权限的目录,scripting,permissions,Scripting,Permissions,我有一个有趣的问题。我有一个支持混合模式的NAS设备:上面的文件都杂乱无章,有些具有NTFS风格的ACL,有些具有UNIX风格的权限。我已将数据从该NAS设备迁移到另一个支持混合权限的设备,由于迁移方式的原因,所有权限都是NTFS样式的ACL。我想从原始源数据复制UNIX权限,并将其应用于目标数据。这是伪代码 对于每个文件和目录,在一个装入点上递归地向下移动 如果不是Windows文件(所有者GID和UID!=99) 读取权限、UID和GID,并将它们写入具有文件名的文件 将这些权限应用于目标数

我有一个有趣的问题。我有一个支持混合模式的NAS设备:上面的文件都杂乱无章,有些具有NTFS风格的ACL,有些具有UNIX风格的权限。我已将数据从该NAS设备迁移到另一个支持混合权限的设备,由于迁移方式的原因,所有权限都是NTFS样式的ACL。我想从原始源数据复制UNIX权限,并将其应用于目标数据。这是伪代码

对于每个文件和目录,在一个装入点上递归地向下移动 如果不是Windows文件(所有者GID和UID!=99) 读取权限、UID和GID,并将它们写入具有文件名的文件 将这些权限应用于目标数据

在这一点上,我有问题的第二个这4行

我使用find递归,然后对返回的每个条目运行脚本。“查找”命令是:

find /mnt/test -exec /home/permchange2 \{\} \;
下面是脚本/home/permchange2。问题是当我把IF语句留在那里时,我只得到屏幕上的输出,而没有任何文件。当我将其注释掉时,所有内容都会像我想要的那样进入该文件,但它包含了我不想要的gid=99和uid=99的文件。我的IF语句一定有问题,但我不知道是什么

#!/bin/bash

date=`date +%m-%d-%H%M%S`
outfile=/home/perms-${date}.log

#get uid and gid exclude windows files
uid=$(stat "$1" | grep "Access: (" | awk -F[\(\/]  '{print $4}' | awk '{sub(/^[ \t]+/, "")};1')
gid=$(stat "$1" | grep "Access: (" | awk -F[\(\/]  '{print $6}' | awk '{sub(/^[ \t]+/, "")};1')
echo "uid="$uid
echo "gid="$gid
if [[ uid==99 && gid==99 ]]; then
        exit 0;
fi

#write the filename
echo $1 >> $outfile

#get permissions
stat "$1" | grep "Access: (" | awk -F[\(\/]  '{print $2}' >> $outfile

#write out uid
echo $uid >> $outfile

#write out gid
echo $gid >> $outfile

#echo newline
echo -e "\n"

如果[[$uid==99&&$gid==99]];然后退出0;好极了,我知道了。我不得不用“-eq”而不是“=”