#!/bin/bash if [ $# -lt 2 ] then echo "Usage: $0 from to" exit 1 fi if [ "$1" = "--hard" ] then LN="ln" shift elif [ "$1" = "--copy" ] then LN="cp" shift else LN="ln -s" fi FROM=`realpath $1`; shift TO=`realpath $1`; shift if [ -z "$FROM" ] || [ -z "$TO" ] then echo "Usage: $0 from to" exit 1 elif ! [ -d "$FROM" ] then echo "$FROM not found" exit 2 fi mkdir -p "$TO" || exit 3 rm -rf "$TO/*" || exit 3 for i in `find "$FROM" -mindepth 1 -type f` do FILE=`echo $i | sed "s!^$FROM/!!"` HASH=`echo -n $FILE | sha384sum | cut -d " " -f 1` mkdir -p "$TO/$HASH/" $LN "$i" "$TO/$HASH/" done