Commit c93707e6 authored by Daniel STAN's avatar Daniel STAN

uncache, first version

parent ac606419
#!/bin/bash
# Déplace paresseusement (reflink) un dossier ou un fichier dans un
# sous-répertoire, et fait un lien symbolique vers le nouvel emplacement.
# L'intérêt est ainsi de mettre tous les fichiers volumineux dans un répertoire
# qui n'est pas backupé
UNCACHED=not_cached
f=`readlink -e $1`
if [ "$f" = '' ]; then
echo "$0: file not found."
exit 1
fi
if echo $f | grep "/$UNCACHED/" -q; then
echo "$0: $1 is already uncached ($f)";
exit 2;
fi
p=$f
suff=""
back=""
# Inv: $f==$p/$suff
while [ "$p" != "/" ]; do
b=`basename $p`
suff=`echo $b/$suff | sed "s/\/$//"`
p=`dirname $p`
if [ -d "$p/$UNCACHED" ]; then
DEST=$UNCACHED/$suff
break
fi
back=../$back
done;
if [ "$DEST" = '' ]; then
echo "No $UNCACHED directory found in $1";
exit 3;
fi;
cd $p
mkdir -p `dirname $DEST` || { echo "aborting."; exit 4 }
cp -r -b --reflink=always $suff $DEST
mv $suff $suff-old
echo "$suff a été renommé en $suff-old (supprimez-le si tout va bien)"
ln -s $back$DEST $suff
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment