目录
使用shell的grep等命令查找 /mnt/lizardfs/temp
目录的内的所有文件是否存在副本数异常的文件:
find /mnt/lizardfs/temp -type f -exec sh -c 'mfsfileinfo "{}" | grep -q "no valid copies" && echo "{}";' \;
命令说明
以上通过 find 的 -exec sh -c ‘xxxx’ \; 来对每个找到的文件执行 xxxx 操作,xxxx为 单引号内的具体脚本内容,在这个例子里面是mfsfileinfo "{}" | grep -q "no valid copies" && echo "{}";
也就是先通过mfsfileinfo 获取文件信息,若文件只有元记录,但fileinfo的chunk丢失,mfsfileinfo 查询文件会返回no valid copies
,根据这个条件成立的前提下,则可通过&& echo "{}"; 的方式,将问题文件的路径打印出来,实现后续的文件修复操作。
使用shell找出linux的 lizardfs 的副本数不足3份:
假设lizardfs的存储安全要求,副本数要求至少3份,如果某个文件的副本数不足3份,则打印出文件路径,以备后续增加对应文件的副本数。
find /mnt/lizardfs/temp -type f -exec sh -c 'mfsfileinfo "{}" | grep -q -c "copy 3" || echo "{}";' \;