glusterfs/extras/geo-rep/generate-gfid-file.sh
Aravinda VK 7f7dabd7d0 extras: geo-rep: Customize the generate gfid script to dirs list
generate-gfid-file.sh now accepts dirs list file and generate
gfids only for those dirs list.

Change-Id: Ia78a0a744dc8a079db56c38578cc6fcac2a6fa90
Signed-off-by: Aravinda VK <avishwan@redhat.com>
Reviewed-on: http://review.gluster.org/8540
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
2014-11-26 00:12:18 -08:00

71 lines
1.3 KiB
Bash

#!/bin/bash
#Usage: generate-gfid-file.sh <master-volfile-server:master-volume> <path-to-get-gfid.sh> <output-file> [dirs-list-file]
function get_gfids()
{
GET_GFID_CMD=$1
OUTPUT_FILE=$2
DIR_PATH=$3
find "$DIR_PATH" -exec $GET_GFID_CMD {} \; >> $OUTPUT_FILE
}
function mount_client()
{
local T; # temporary mount
local i; # inode number
VOLFILE_SERVER=$1;
VOLUME=$2;
GFID_CMD=$3;
OUTPUT=$4;
T=$(mktemp -d -t ${0##*/}.XXXXXX);
glusterfs -s $VOLFILE_SERVER --volfile-id $VOLUME $T;
i=$(stat -c '%i' $T);
[ "x$i" = "x1" ] || fatal "could not mount volume $MASTER on $T";
cd $T;
rm -f $OUTPUT;
touch $OUTPUT;
if [ "$DIRS_FILE" = "." ]
then
get_gfids $GFID_CMD $OUTPUT "."
else
while read line
do
get_gfids $GFID_CMD $OUTPUT "$line"
done < $DIRS_FILE
fi;
cd -;
umount $T || fatal "could not umount $MASTER from $T";
rmdir $T || warn "rmdir of $T failed";
}
function main()
{
SLAVE=$1
GET_GFID_CMD=$2
OUTPUT=$3
VOLFILE_SERVER=`echo $SLAVE | sed -e 's/\(.*\):.*/\1/'`
VOLUME_NAME=`echo $SLAVE | sed -e 's/.*:\(.*\)/\1/'`
if [ "$#" -lt 4 ]
then
DIRS_FILE="."
else
DIRS_FILE=$4
fi
mount_client $VOLFILE_SERVER $VOLUME_NAME $GET_GFID_CMD $OUTPUT $DIRS_FILE
}
main "$@";