Compresser des fichiers sur un montage NFS sans utiliser NFS

J’ai des fichiers stockés sur un montage NFS. Ce type de montage est pratique. Seulement, l’augmentation du nombre de démons NFS peut saturer le réseau en direction de la machine hébergeant le montage (voire la machine elle-même).

Afin de réduire le nombre de  démon NFS, lorsqu’on travaille sur une machine vers laquelle le montage est exporté et qu’on a un nombre conséquent de fichiers à compresser une solution est d’aller travailler sur l’hôte. Pour faciliter cela, j’ai réalisé les scripts suivants :

Pour la compression (choix de gzip).


#! /bin/bash

# FONCTION PAS FORCEMENT UTILE
compressd () {
 for i in "$@"
 do
   gzip $i
 done
}

dir=`pwd`
NFS="192.168.0.3"  # IP A MODIFIER

# TEST SI ON EST SUR LA BONNE MACHINE
if [ "$(hostname)" == $NFS ]; then
 compressd $@
else
 ssh -t $NFS -- "cd \\"$dir\\"; gzip \\"$@\\"; "
fi

Pour la décompression :

#! /bin/bash
#Usage : Faire un alias sur le fichier alias extract="bash extract.sh"
# extract <fichier>

extractd () {
 if [ -f $1 ] ; then
  case $1 in
     *.tar.bz2)   tar xvjf $1    ;;
     *.tar.gz)    tar xvzf $1    ;;
     *.tar.xz)    tar xvJf $1    ;;
     *.bz2)       bunzip2 $1     ;;
     *.rar)       unrar x $1     ;;
     *.gz)        gunzip $1      ;;
     *.tar)       tar xvf $1     ;;
     *.tbz2)      tar xvjf $1    ;;
     *.tgz)       tar xvzf $1    ;;
     *.zip)       unzip $1       ;;
     *.Z)         uncompress $1  ;;
     *.7z)        7z x $1        ;;
     *.xz)        unxz $1        ;;
     *.exe)       cabextract $1  ;;
     *)           echo "\\`$1': unrecognized file compression" ;;
    esac
  else
    echo "\\`$1' is not a valid file"
  fi
}

NFS="192.168.0.3"  # IP A MODIFIER

# TEST SI ON EST SUR LA BONNE MACHINE
if [ "$(hostname)" == $NFS ]; then
  extractd $@
else
  ssh -t $NFS -- "cd \\"$dir\\"; extract \\"$@\\" ; " # Attention il faut le même alias sur toutes les machines!!!
fi

Il faut ensuite faire attention à bien gérer les alias sur les machines. Avec un peu de chance $HOME/.bashrc est sur le montage NFS.


Vus : 1824
Publié par Boutor : 56