Salut,
J'ai un petit script save:
#! /bin/bash
# This program is under GPL Licence
# save_config v0.3 by Wedge
VERSION="0.3"
PROGRAM=`basename $0`;
TMP="/tmp/save_config";
DATE=`date +%Y%m%d`;
ARCH=`uname -m`;
LIST_FILE="/etc/fstab /etc/inittab /etc/sudoers /etc/resolv.conf /etc/host* /etc/X11/xorg.conf /etc/rc.d/*.* /etc/swaret.conf /etc/ntp.conf
/etc/samba/*.*
$HOME/.bashrc $HOME/.bash_profile $HOME/.vimrc $HOME/.save $HOME/.traduc $HOME/tuxcards_vrac $HOME/.volume $HOME/.xinitrc
$HOME/.mozilla/firefox/*.* $HOME/.psi/*.* $HOME/.sylpheed/*.* $HOME/.mldonkey/*.* $HOME/.icons/*.* $HOME/.irssi/*.* $HOME/.pan/*.*
$HOME/.xmms/*.* $HOME/.applis/*.* $HOME/.boxjul/*.* $HOME/.fvwm/*.* ";
red="\e[1;31m";
green="\e[1;32m";
yellow="\e[1;33m";
blue="\e[1;34m";
cyan="\e[1;36m";
nc="\e[0m";
function usage()
{
echo -e "${nc}Usage: ${yellow}${PROGRAM}${nc} [-h|--help] [-l|--list] [-v|--version]";
}
function usage_long()
{
usage;
echo -e "\n Make sure to run this as ${red}root${nc} !"
echo -e " This program is here to save all your configuration files."
echo -e " This might be useful for paranoiac users or for thoses who, like me, are about to make lots of changes every time."
echo -e " Just run ${yellow}${0}${nc} and save the Slackware package it generates. Make your change."
echo -e " Does it get crashy ?"
echo -e " Then install the package and you'll be able to find your system exactly like before this damn ??*!% change ;^)."
echo -e " If you want to add new files to save, edit ${yellow}${0}${nc} and modify the ${green}LIST_FILE${nc} variable.\n"
echo -e " Options :"
echo -e " \t-h, --help :\tDisplay this help"
echo -e " \t-l, --list :\tDisplay the list of files to save"
echo -e " \t-v, --version :\tDisplay the version number\n"
}
function print_list()
{
for file in $LIST_FILE; do
dirname=`dirname $file`;
basename=`basename $file`;
echo -e " ${nc}${dirname}/${basename}"
done
}
function version()
{
echo -e "${PROGRAM} Version ${VERSION}\n"
}
function remove_temp_dir()
{
echo -ne "$nc Deleting temporary files and directories ...";
cd $HOME
rm -rf $TMP 2> /dev/null
if [ $? -eq 0 ]; then
echo -e "\t$green done $nc";
else
echo -e "\t$red failed $nc";
fi
}
function save()
{
echo -e "$nc Saving files to temporary save directories ..."
for file in $LIST_FILE; do
if [ -f $file ]; then
dirname=`dirname $file`;
basename=`basename $file`;
if [ ! -d "$TMP/$dirname" ]; then
mkdir -p "$TMP/$dirname";
if [ $? -eq 0 ]; then
echo -e "\t$nc Creating $dirname ...\t$green done $nc";
else
echo -e "\t$nc Creating $dirname ...\t$red failed $nc";
remove_temp_dir;
exit;
fi
fi
cp -p -d -f $file "$TMP/$dirname/$basename" 2> /dev/null;
if [ $? -eq 0 ]; then
echo -e "\t$nc Copying $file ...\t$green done $nc";
else
echo -e "\t$nc Copying $file ...\t$red failed $nc";
fi
else
echo -e "$nc $file :$red file doesn't exist ! $nc";
fi
done;
}
if [ $# -ge 1 ]; then
case $1 in
-l|--list)
print_list;
exit;;
-h|--help)
usage_long;
exit;;
-v|--version)
version;
exit;;
*)
usage;
exit;;
esac
fi
echo -ne "$nc Creating temporary save file directory ..."
mkdir -p $TMP
if [ $? -eq 0 ]; then
echo -e "\t$green done $nc";
else
echo -e "\t$red failed $nc";
exit;
fi
save;
echo -ne "$nc Creating Slackware package ...";
cd $TMP
mkdir -p "install"
echo -e "" > "install/slack-desc";
echo -e " |---handy-ruler----------------------------------------|" >> "install/slack-desc";
echo -e "save_config_slack: save_config" >> "install/slack-desc";
echo -e "" >> "install/slack-desc";
echo -e "save_config_slack: Configuration saved files" >> "install/slack-desc";
echo -e "save_config_slack: Date $DATE" >> "install/slack-desc";
echo -e "save_config_slack:" >> "install/slack-desc";
echo -e "save_config_slack:" >> "install/slack-desc";
echo -e "save_config_slack:" >> "install/slack-desc";
echo -e "save_config_slack:" >> "install/slack-desc";
echo -e "save_config_slack:" >> "install/slack-desc";
makepkg -l y -c n "save_config_slack-${DATE}-${ARCH}-1.tgz" 1> /dev/null 2>&1
if [ $? -eq 0 ]; then
echo -e "$cyan save_config_slack-${DATE}-${ARCH}-1.tgz\t$green done $nc";
else
echo -e "$cyan save_config_slack-${DATE}-${ARCH}-1.tgz\t$red failed $nc";
remove_temp_dir;
exit;
fi
echo -ne "$nc Moving created save package to $HOME ...";
mv "save_config_slack-${DATE}-${ARCH}-1.tgz" /mnt/fichier/os/
if [ $? -eq 0 ]; then
echo -e "\t$green done $nc";
else
echo -e "\t$red failed $nc";
fi
remove_temp_dir;
## CHANGELOG
# V0.1
# First release
#
# V0.2
# Added -l and -v options to script
#
# V0.3
# Corrected slack-desc bug
Le problème c'est qu'il ne copie pas les repertoire quand d'autre répertoire sont a l'intérieur, si ont peut me filer un coup de main.
# Re: Save automatique
Posté par gros_rouge . Évalué à 2.
Il faut utiliser cp avec l'option -R :
cp -p -d -f -R $file "$TMP/$dirname/$basename" 2> /dev/null;
Tu peux aussi réduire les options (cf. page de manuel) :
cp -af $file ...
[^] # Re: Save automatique
Posté par transpi . Évalué à 1.
J'ai esseyer avec -r -R mais j'obtient toujours la même chose:
pti exemple:
/home/jul/.mozilla/firefox/s2v8r1ur.default : file doesn't exist !
Copying /home/jul/.mozilla/firefox/XUL.mfasl ... done
/home/jul/.psi/*.* : file doesn't exist !
Je capte pas trop la. Oui oui les repertoires existent ;)
[^] # Re: Save automatique
Posté par gros_rouge . Évalué à 2.
1. comme l'a dit Hervé, commence par remplacer les *.* par des *
2. tu réinventes la roue dans ta fonction save(). Tu peux faire la même chose avec tar :
for file in $LIST_FILE; do tar -rf mon_backup.tar $file ; done
gzip -9 mon_backup.tar
[^] # Re: Save automatique
Posté par gros_rouge . Évalué à 1.
cp -a --parents $LIST_FILE $TMP
# Réflexe DOSien
Posté par Hervé Rilos . Évalué à 4.
Tu as dû remarquer que sous GNU/Linux, les fichiers n'ont pas toujours d'extension. Un simple * suffit pour voir tous les fichiers et répertoires non cachés.
[^] # Re: Réflexe DOSien
Posté par transpi . Évalué à 1.
J'ai esseyer d'enlever les *
Pti exemple:
.fvwm/* : file doesn't exist !
Si j'aime bien se petit script c'est qu'il renvoie se qui à été copier ou non, fonction superficielle certe, mais quand j'aurais une masse de fichier se serait plus simple
# man rsync
Posté par doublehp (site web personnel) . Évalué à 1.
(avec les dates qui vont bien).
manpage reporte aussi:
--exclude=PATTERN exclude files matching PATTERN
--exclude-from=FILE read exclude patterns from FILE
--include=PATTERN don't exclude files matching PATTERN
--include-from=FILE read include patterns from FILE
--files-from=FILE read list of source-file names from FILE
-0, --from0 all *from/filter files are delimited by 0s
[^] # Si sa sert
Posté par transpi . Évalué à 1.
DATE=`date +%Y%m%d`;
red="\e[1;31m";
green="\e[1;32m";
yellow="\e[1;33m";
blue="\e[1;34m";
cyan="\e[1;36m";
nc="\e[0m";
for file in /home/jul /etc/fstab /root /etc/mtab /etc/inittab /etc/sudoers /etc/resolv.conf /etc/host* /etc/X11/xorg.conf /etc/rc.d/ /etc/swaret.conf /etc/ntp.conf; do tar -rf save_slack${DATE}.tar $file ; done
#gzip -9 save_slack$.tar
echo -ne "$nc Moving created save package to mnt/fichier/os/save";
mv "save_slack${DATE}.tar" /mnt/fichier/os/save
if [ $? -eq 0 ]; then
echo -e "\t$blue Fait $nc";
else
echo -e "\t$red Erreur $nc";
fi
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.