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.