314 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			314 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
| #!/bin/sh
 | ||
| ################################################################################################
 | ||
| ## 
 | ||
| ##  Nom: sync_config_file.sh 
 | ||
| ##
 | ||
| ##  Licence: Creative Commons
 | ||
| ##
 | ||
| ##  Comportement: Synchronise différents fichiers/dossiers de configuration dans un répertoire qui fait office de sauvegarde
 | ||
| ##
 | ||
| ##
 | ||
| ##
 | ||
| ################################################################################################
 | ||
| ##
 | ||
| ##  Date de création: 20/10/2010
 | ||
| ##
 | ||
| ##  Auteur: Gardouille
 | ||
| ##
 | ||
| ##
 | ||
| ##  Dernière modifications:
 | ||
| ##  20/10/2010: - Création
 | ||
| # **********************************************************************************************
 | ||
| 
 | ||
| ##  2011/09/17 - 
 | ||
| ##    - Ajout du fichier des applications d'ouverture par défauts pour les fichiers
 | ||
| ## 
 | ||
| 
 | ||
| ##  16/12/2010: - Ajout de la configuration de parcellite
 | ||
| ##  21/12/2010: - Ajout de la configuration de screen - panel gnome 
 | ||
| ##  16/02/2011: - Ajout de la configuration de teamviewer
 | ||
| ##  27/04/2011: - Ajout de la configuration de moc
 | ||
| ##  18/08/2011: - Ajotu de la configuration de samba
 | ||
| ##  30/09/2011: - Ajout de la configuration de remmina minecraft
 | ||
| # **********************************************************************************************
 | ||
| ##
 | ||
| ##  À modifier:
 | ||
| ##    - Ajouter la configuration de freeplane
 | ||
| ##    - Faire une nouvelle configuration pour gedit
 | ||
| ##    - Trouver tout les bons droits sur les fichiers à restaurer
 | ||
| ##    - Possibilité de sauvegarder la configuration de gedit avec gconftool? NON
 | ||
| ##
 | ||
| ################################################################################################
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| # **********************************************************************************************
 | ||
| # 
 | ||
| # Variables globales
 | ||
| # 
 | ||
| # -----------------------------------------------------------
 | ||
| # Répertoire personnel de l'utilisateur:
 | ||
| USER_DIR="/home/darker"
 | ||
| 
 | ||
| # Fin des variables globales
 | ||
| # -----------------------------------------------------------
 | ||
| # **********************************************************************************************
 | ||
| 
 | ||
| 
 | ||
| # **********************************************************************************************
 | ||
| # 
 | ||
| # Fichiers globaux
 | ||
| # 
 | ||
| # -----------------------------------------------------------
 | ||
| # 
 | ||
| 
 | ||
| # Fin des fichierss globaux
 | ||
| # -----------------------------------------------------------
 | ||
| # **********************************************************************************************
 | ||
| 
 | ||
| 
 | ||
| # **********************************************************************************************
 | ||
| # 
 | ||
| # Fonctions globales
 | ||
| # 
 | ||
| # -----------------------------------------------------------
 | ||
| # Divers echos ...
 | ||
| echoi() { echo " (ii) $*" >> "${log}" ; }
 | ||
| echok() { echo " (ok) $*" >> "${log}" ; }
 | ||
| echow() { echo " (!!) $*" >> "${log}" ; }
 | ||
| echnk() { echo " (EE) $*" >> "${log}" ; }
 | ||
| 
 | ||
| # Fin des fonctions globales
 | ||
| # -----------------------------------------------------------
 | ||
| # **********************************************************************************************
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| # **********************************************************************************************
 | ||
| # 
 | ||
| # Programme principale
 | ||
| # 
 | ||
| # -----------------------------------------------------------
 | ||
| 
 | ||
| case "$1" in
 | ||
|   backup)
 | ||
| 
 | ||
|     if [ "${USER}" = "root" ]; then
 | ||
|       # Synchronisation des fichiers de configuration de zsh
 | ||
|       ## Droits:
 | ||
|       ## 644: /etc/zsh/*
 | ||
|       rsync -a --delete /etc/zsh /media/data/config_debian/etc/
 | ||
|       rsync -a /etc/dir_colors /media/data/config_debian/etc/
 | ||
| 
 | ||
|       # Synchronisation du fichier hosts
 | ||
|       ## Droits:
 | ||
|       ## 644: /etc/hosts
 | ||
|       rsync -a /etc/hosts /media/data/config_debian/etc
 | ||
| 
 | ||
|       # Synchronisation des fichiers de configuration de aptitude
 | ||
|       ## Droits:
 | ||
|       ## 644: /etc/apt/{preferences,sources.list}
 | ||
|       rsync -a --delete /etc/apt/sources.list /media/data/config_debian/etc/apt
 | ||
|       rsync -a --delete /etc/apt/preferences /media/data/config_debian/etc/apt
 | ||
| 
 | ||
|       # Copie du fichier fstab
 | ||
|       ## Droits:
 | ||
|       ## 644: /etc/fstab
 | ||
|       cp /etc/fstab /media/data/config_debian/etc/fstab.backup
 | ||
|   
 | ||
|       # Synchronisation du répertoire samba
 | ||
|       ## Droits:
 | ||
|       ## 644: /etc/samba/* (récursif pour tous les fichiers)
 | ||
|       rsync -a --delete /etc/samba /media/data/config_debian/etc/
 | ||
| 
 | ||
|       # Fichier dictionnaire de vim
 | ||
|       ## Droits:
 | ||
|       ## 644: /usr/share/vim/vim73/spell/* 
 | ||
| #      rsync -a --delete /usr/share/vim/vim73/spell /media/data/config_debian/usr/share/vim/vim73
 | ||
| 
 | ||
|       # Configuration des interfaces réseaux
 | ||
|       ## Droits: 
 | ||
|       ## 644: /etc/network/interfaces
 | ||
|       rsync -a --delete /etc/network/interfaces /media/data/config_debian/etc/network/
 | ||
|     else
 | ||
|       #gconftool-2 --dump /apps/panel > /media/data/config_debian/home/my-panel-setup.entries
 | ||
|       echo "pas de sauvegarde gconftool pour le moment"
 | ||
|     fi
 | ||
| 
 | ||
|     ## Répertoire personnel
 | ||
|     # Synchro du fichier de config de terminator
 | ||
|     ## Droits:
 | ||
|     ## 644: ~/.config/terminator/config
 | ||
|     rsync -a --delete "${USER_DIR}"/.config/terminator/config /media/data/config_debian/home/.config/terminator
 | ||
| 
 | ||
|     # Modèles de documents
 | ||
|     ## 644: ~/.config/user-dirs.dirs ~/Modeles/*
 | ||
|     rsync -a --delete "${USER_DIR}"/.config/user-dirs.dirs /media/data/config_debian/home/.config/
 | ||
|     rsync -a --delete "${USER_DIR}"/Modeles /media/data/config_debian/home/
 | ||
| 
 | ||
|     # Configuration de pidgin (comptes et historique)
 | ||
|     ## Droits:
 | ||
|     ## 700: .purple
 | ||
|     ## 600: .purple/*.xml (récursif)
 | ||
|     ## 644: .purple/*.html (récursif) (historique en lecture pour tout le monde ... ?)
 | ||
|     rsync -a --delete "${USER_DIR}"/.purple /media/data/config_debian/home
 | ||
| 
 | ||
|     # Configuration de mozilla
 | ||
|     ## Droits: 
 | ||
|     ## 700: .mozilla (récursif pour les dossiers)
 | ||
|     # rsync -a "${USER_DIR}"/.mozilla/firefox/xb6j4gn3.default/ /media/data/config_debian/home/.mozilla/firefox/
 | ||
|     rsync -a "${USER_DIR}"/.mozilla/firefox/profiles.ini /media/data/config_debian/home/.mozilla/firefox
 | ||
| 
 | ||
|     # configuration de icedove sans les mails imap (gmail, hotmail, mailoo)
 | ||
|     ## Droits: 
 | ||
|     ## 700: .icedove (récursif pour les dossiers)
 | ||
|     rsync -a --delete --filter "- ImapMail/" "${USER_DIR}"/.icedove /media/data/config_debian/home/
 | ||
| 
 | ||
|     # configuration de skype
 | ||
|     rsync -a --delete "${USER_DIR}"/.Skype /media/data/config_debian/home
 | ||
| 
 | ||
|     # Configuration de Libreoffice (templates, dico, ...)
 | ||
|     ## Droits:
 | ||
|     ## 755: .libreoffice (récursif pour les dossiers)
 | ||
|     rsync -a --delete "${USER_DIR}"/.libreoffice /media/data/config_debian/home
 | ||
| 
 | ||
|     # Configuration de vim
 | ||
|     ## 700: .vim (récursif pour les dossiers)
 | ||
|     ## 640: pour les fichiers
 | ||
|     rsync -a --delete "${USER_DIR}"/.vim* /media/data/config_debian/home
 | ||
| 
 | ||
|     # configuration de ssh (nom d'utilisateur suivant l'host)
 | ||
|     ## 700: .ssh
 | ||
|     ## 600: .ssh/*
 | ||
|     rsync -a --delete "${USER_DIR}"/.ssh/config /media/data/config_debian/home/.ssh
 | ||
| 
 | ||
|     # Configuration de Eye Of Gnome (eog), plugin activés, ...
 | ||
|     ## -> Pas de fichier de config <-
 | ||
| #    rsync -a --delete "${USER_DIR}"/.gconf/apps/eog/plugins/%gconf.xml /media/data/config_debian/home/.gconf/apps/eog/plugins
 | ||
| 
 | ||
|     # configuration de gedit
 | ||
|     ## -> plus de fichier de configuration à propremement parler.
 | ||
| #    rsync -a --delete "${USER_DIR}"/.gconf/apps/gedit-2 /media/data/config_debian/home/.gconf/apps
 | ||
| 
 | ||
|     # configuration de gnome
 | ||
| #    rsync -a --delete "${USER_DIR}"/.gconf/apps/panel /media/data/config_debian/home/.gconf/apps
 | ||
| #    rsync -a --delete "${USER_DIR}"/.gconf/desktop/gnome /media/data/config_debian/home/.gconf/desktop
 | ||
| 
 | ||
|     # Script nautilus
 | ||
|     ## Recréer les liens:
 | ||
|     # Resize Image (1024px) -> ../nautilus-resize-image/ResizeImage.sh
 | ||
|     # Resize Image (800px) -> ../nautilus-resize-image/ResizeImage.sh
 | ||
|     ## 755: ~/.gnome2/nautilus-scripts/*
 | ||
|     rsync -a --delete "${USER_DIR}"/.gnome2/nautilus-* /media/data/config_debian/home/.gnome2/
 | ||
| 
 | ||
|     # script
 | ||
|     ## 755: ~/bin/*
 | ||
|     rsync -a --delete "${USER_DIR}"/bin /media/data/config_debian/home/
 | ||
| 
 | ||
|     # configuration de irssi
 | ||
|     ## 755: ~/.irssi/*
 | ||
|     ## 640: ~/.irssi/config 
 | ||
|     rsync -a --delete "${USER_DIR}"/.irssi /media/data/config_debian/home/
 | ||
| 
 | ||
|     # icônes
 | ||
|     ## Droits:
 | ||
|     ## 777: .icons/*
 | ||
|     rsync -a --delete "${USER_DIR}"/.icons /media/data/config_debian/home/
 | ||
| 
 | ||
|     # configuration et bibliothèque de rhythmbox (note des chansons!)
 | ||
|     ## Droits: 
 | ||
|     ## 700: .local/share/rhythmbox
 | ||
|     ## 644: .local/share/rhythmbox/*
 | ||
|     rsync -a --delete "${USER_DIR}"/.local/share/rhythmbox /media/data/config_debian/home/.local/share/
 | ||
|     ## 700: .gconf/apps/rhythmbox
 | ||
|     ## 600: .gconf/apps/rhythmbox/*.xml (récursif)
 | ||
|     rsync -a --delete "${USER_DIR}"/.gconf/apps/rhythmbox /media/data/config_debian/home/.gconf/apps/
 | ||
| #    rsync -a --delete /usr/lib/rhythmbox/plugins/vkontakte /media/data/config_debian/usr/lib/rhythmbox/plugins
 | ||
| 
 | ||
|     # Configuration de filezilla
 | ||
|     ## 644 ~/.filezilla/*
 | ||
|     rsync -a --delete "${USER_DIR}"/.filezilla /media/data/config_debian/home
 | ||
| 
 | ||
|     # Configuration de l'applet audio
 | ||
|     rsync -a --delete "${USER_DIR}"/.gstreamer-0.10 /media/data/config_debian/home
 | ||
| 
 | ||
|     # Configuration de TSClient
 | ||
|     ## 644: ~/.tsclient/*
 | ||
|     rsync -a --delete "${USER_DIR}"/.tsclient /media/data/config_debian/home
 | ||
| 
 | ||
|     # Configuration de Transmission
 | ||
|     ## 755: .config/transmission/* (récursif pour les dossiers)
 | ||
|     ## 600: .config/transmission/* (récursif pour les fichiers)
 | ||
|     rsync -a --delete "${USER_DIR}"/.config/transmission /media/data/config_debian/home/.config
 | ||
| 
 | ||
|     # Configuration de l'écran de veille
 | ||
|     ## 
 | ||
| 
 | ||
|     # Configuration de Parcellite
 | ||
|     rsync -a --delete "${USER_DIR}"/.config/parcellite /media/data/config_debian/home/.config
 | ||
| 
 | ||
|     # Configuration de screen
 | ||
|     ## 600: .screen/*
 | ||
|     rsync -a --delete "${USER_DIR}"/.screen /media/data/config_debian/home/
 | ||
| 
 | ||
|     # Configuration de teamviewer
 | ||
|     ## 755: ~/.teamviewer
 | ||
|     ## NE PAS RESTAURER TOUT LE RÉPERTOIRE TEAMVIEWER -> Trouver le fichier de config
 | ||
|     rsync -a --delete "${USER_DIR}"/.teamviewer /media/data/config_debian/home/
 | ||
| 
 | ||
|     # Configuration de moc (music on console)
 | ||
|     ## 
 | ||
|     rsync -a --delete "${USER_DIR}"/.moc /media/data/config_debian/home/
 | ||
| 
 | ||
|     # Configuration des programmes par défaut pour ouvrir les fichiers:
 | ||
|     ## 644: .local/share/applications/mimeapps.list
 | ||
|     rsync -a --delete "${USER_DIR}"/.local/share/applications/mimeapps.list /media/data/config_debian/home/.local/share/applications/
 | ||
| 
 | ||
|     # Configuration de remmina
 | ||
|     ## 755: .remmina
 | ||
|     ## 644: .remmina/*
 | ||
|     rsync -a --delete ~/.remmina /media/data/config_debian/home/
 | ||
| 
 | ||
|     # Configuration/save de minecraft
 | ||
|     ## 755: ~/.minecraft (récursif sur les répertoires)
 | ||
|     ## 777 en récursif sur les fichiers?
 | ||
|     rsync -a --delete ~/.minecraft /media/data/config_debian/home/
 | ||
| 
 | ||
|     ;;
 | ||
| 
 | ||
| 
 | ||
|   restore)
 | ||
|     ## Restoration /etc/
 | ||
|     if [ "${USER}" = "root" ]; then
 | ||
|       rm -rf /etc/zsh/ 
 | ||
|       rm -rf /etc/hosts
 | ||
|       rsync -a /media/data/config_debian/etc/ /etc
 | ||
|       rsync -a /media/data/config_debian/usr/ /usr
 | ||
| 
 | ||
|       exit 0
 | ||
|     else
 | ||
| #      gconftool-2 --load /media/data/config_debian/home/my-panel-setup.entries
 | ||
|       echo "pas de gconftool pour le moment"
 | ||
|     fi 
 | ||
| 
 | ||
|     ## Répertoire personnel
 | ||
|     rsync -a /media/data/config_debian/home/ "${USER_DIR}"
 | ||
| 
 | ||
|     ## Attribution des droits sur "${USER_DIR}"
 | ||
|     cd "${USER_DIR}"
 | ||
|     find . -type d -exec chmod 700 {} \;
 | ||
|     chmod -R 755 bin/
 | ||
|     chmod -R 700 .ssh/
 | ||
|     chown -R darker:darker "${USER_DIR}"
 | ||
| 
 | ||
|     ## Attribution des droits sur ~/.freeplane:
 | ||
|     chmod 644 "${USER_DIR}"/.freeplane/
 | ||
|     ;;
 | ||
|   *)
 | ||
|     echo "Utilisation: $0 [backup|restore]"
 | ||
|     exit 1
 | ||
| esac
 | ||
| 
 | ||
| exit 0
 | ||
| 
 |