kurapika29 a écritouais enfin dangereux :cool: je suis tout seul a utilisé mon ordi donc bon pour moi ça me va.
Tu le mets en lecture only est ça roule 😛 rien de bien compliqué quand même clic droit>Propriétés>Permissions et tout en lecture et basta 😉
Bon on va la jouer sécure, on ne sait jamais et comme je ne serais pas le seul a utilisé le script c'est plus prudent 😉
Oui il faut penser aux autres, et surtout ton dossier n'est pas inaccessible en écriture, donc rien n'empêche de recréer un script au même emplacement.
Il ne s'agit pas seulement d'intrusion physique, mais aussi de tous les programmes/scripts qui ont le droit d'écrire un fichier à cet emplacement...
De plus comme l'a fait remarquer
Bousky, il vaut mieux le mettre dans
/usr/local/bin/
(mais c'est du chipotage.)
@hayou, j'avais un truc du même genre, mais il n'y avait pas le système de révisions... Je trouve ça très intéressant.
Mais comme je suis un peu fainéant, j'ai aussi fait un système qui permet de restaurer la version qu'on veut avec un select. Je ne suis pas chez moi, mais je vous posterai ça plus tard.
Edit :
#!/bin/bash
# Créé par Nordinatueur
#
rouge='\e[31m'; vert='\e[32m'; jaune='\e[33m'; bleu='\e[34m'; rose='\e[35m'; cyan='\e[36m'; gris='\e[37m'; NC='\e[0m';
_bak ()
{
nomfichier=${1}
nomcible=${nomfichier};
if grep -q '.\+\..*' <<< "${nomcible}"; then ext="."${nomcible##*.}; fi;
while [[ -h ${nomcible} ]]; do
nomcible="$(readlink ${nomcible})";
printf "${vert}${nomfichier} -> ${nomcible}${NC}\n";
done;
#Le fichier est alors le bon : ce n'est plus un lien !
nombasecible=${nomcible%%_20[0-9][0-9]-[01][0-9]-[0-3][0-9]_[0-2][0-9]h[0-6][0-9]m[0-6][0-9]};
echo ${nombase};
#if [[ ${nom} =~ .*_20[0-9][0-9]-[01][0-9]-[0-3][0-9]_[0-2][0-9]h[0-6][0-9]m[0-6][0-9] ]]; then
#[[ -h ${lien} ]] && cp -f ${nom} ${nombase} ;
#fi;
nouveaunom=".${nombasecible%/}_$(date +%Y-%m-%d_%Hh%Mm%S)${ext}" ;
cp -R --verbose "${nomcible}" "${nouveaunom}" ;
mv -v "${nouveaunom}" "${2}" 2> /dev/null ;
}
_debak ()
{
regexPosix="_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}h[0-9]{2}m[0-9]{2}(\.[^\.]{1,}){0,1}";
tput smcup;
#find . -maxdepth 1 -iname ".*${1}*" | egrep "${regexPosix}" >&2;
select fichier in $( find . -maxdepth 1 -iname ".*${1}*" | sed -nr "s/^\.\/\.//;s/${regexPosix}$//p" | sort | uniq ); do
clear;
echo ${fichier};
[[ -z ${fichier} ]] && printf " > ${bleu}Choisissez un fichier ...${NC}\n" && continue;
dates=$( find . -maxdepth 1 -iname ".${fichier}_*" | egrep -o "${regexPosix}$" );
printf " >> ${vert}Choisissez une date ...${NC}\n";
select date in ${dates}; do
clear;
[[ -z ${date} ]] && printf " > ${vert}Choisissez une date ...${NC}\n" && continue;
effacer=o;
sauvegarder=n;
#[[ -f "${fichier}" || -d "${fichier}" ]] && { echo "Êtes-vous sûr de vouloir effacer ${fichier} [o/N] ?"; read -n 1 effacer ; printf "\n"; }
#[[ ${effacer} = "o" ]] && rm -rf "${fichier}" && cp -vf -R ."${fichier}"${date} "${fichier}" || echo "Annulé ...";
[[ -f "${fichier}" || -d "${fichier}" ]] && { echo "${fichier} existe. Voulez-vous le sauvegarder avant d'écraser [o/N] ?"; read -n 1 -t 5 sauvegarder ; printf "\n"; }
[[ ${sauvegarder} == "o" ]] && _bak ${fichier};
rm -rf "${fichier}" && cp -vf -R ."${fichier}"${date} "${fichier}" || echo "Annulé ...";
printf "Appuyez sur Entrée pour continuer...";
read -t 5 ok;
break;
done;
clear;
break;
done;
tput rmcup
exit;
}
Usage ()
{
cat <<EOF "Usage : ${0##*/} [options] [fichier [dossier]]
Fait une sauvegarde de 'fichier' dans 'dossier'.
-h : Affiche l'aide
-e : Éditer
-r : Restaurer des fichiers en backup"
EOF
}
LOGFILE="/tmp/${0##*/}.log";
continuer=false;
case ${1} in
-e) shift; vim -p ${0}; exit;;
-h|--help) Usage; exit;;
-r|--restore) shift; _debak "${1}";;
-readlink) shift; readlink ${0} ;;
*) _bak "${1}" "${2}" ;;
esac;