18 votes

Garder mon profil zsh ou bash synchronisé sur toutes mes machines

Je travaille sur plusieurs machines différentes. J'ai beaucoup de choses spécifiques pour lesquelles j'aime que mon Shell soit, ou que l'invite ressemble à, ou des alias, etc.

Quel est, selon vous, le meilleur moyen de faire en sorte que toutes mes coquilles de machines agissent de la même manière ?

Tout d'abord, je suis conscient que différentes machines auront besoin de différents chemins vers les bacs et d'autres différences, donc ma première inclination est d'inclure simplement un fichier à la fin de mon profil, c'est celui que nous garderons en synchronisation.

Quel est le meilleur moyen de garder les fichiers synchronisés ? Je peux placer le fichier sur un système distant, et peut-être utiliser git, pour pousser, puis retirer mes modifications de temps en temps. Cependant, Rsync n'est-il pas mieux adapté pour cela ?

30voto

bwinton Points 990

C'est comme ça que je fais :

  1. Je ne mets jamais de vrai contenu sur le ~/.bashrc o ~/.bash_profile mais ces fichiers ne sont que des liens symboliques vers les véritables fichiers de configuration conservés dans un sous-répertoire de mon dossier personnel, par exemple ~/dotfiles/bashrc y ~/dotfiles/bash_profile .

  2. Je garde le ~/dotfiles sous contrôle de la source à l'aide de Git, et hébergé sur GitHub.com

  3. Lorsque j'installe un nouveau système, je clone simplement le dépôt GitHub sur un nouveau site local. ~/dotfiles et créer tous les liens symboliques (actuellement à la main, mais cette étape devrait être facile à automatiser).

  4. J'utilise cette même procédure pour d'autres fichiers de configuration, tels que .hgrc (pour Mercurial), .vimrc et plusieurs autres.

  5. Chaque fois que je modifie l'un des fichiers de configuration, il me suffit de commit et de pousser vers GitHub, puis de tirer dans chaque autre machine.

C'est encore un peu laborieux et manuel, mais j'en suis satisfait.

Voici le contenu actuel de mon ~/dotfiles dossier :

~/dotfiles
|-- bash
|   |-- aliases
|   |-- config
|   |-- env
|   `-- promptcolors
|-- bash_profile
|-- bashrc
|-- gitconfig
|-- gvimrc
|-- hg-templates
|   |-- map-cmdline.dlog
|   |-- map-cmdline.nlog
|   |-- map-cmdline.sglog
|   `-- map-cmdline.slog
|-- hgrc
|-- ssh
|   `-- config
|-- vim
|   |-- after
|   |-- colemak-mappings.vim
|   |-- colors
|   |-- doc
|   |-- filetype.vim
|   |-- ftplugin
|   `-- plugin
`-- vimrc

J'ai volé cette idée au grand Peepcode. Ligne de commande avancée screencast (qui vaut les 9 dollars à mon avis).

Et c'est ici que je garde mon dépôt GitHub, au cas où vous voudriez y jeter un œil. Ne vous attendez pas à quelque chose de très intéressant, je suis juste un débutant en bash/ligne de commande.

http://github.com/sergio/dotfiles

8voto

Thomas Kainrad Points 181

Pour tous ceux qui essaient encore de trouver la meilleure solution à ce problème, il existe désormais un outil très activement entretenu qui fait tout ce dont vous avez besoin et plus encore :
https://github.com/lra/mackup

Cela va bien au-delà de la synchronisation des profils zsh ou bash. Il peut synchroniser les paramètres d'un grand nombre d'outils. Essentiellement, elle utilise le même concept de lien symbolique que la réponse acceptée, mais l'automatise de sorte que vous n'ayez besoin que de deux commandes :

  1. mackup backup
  2. mackup restore

3voto

Zefira Points 131

Il existe un certain nombre d'outils différents qui permettent d'atteindre cet objectif.

Vous pouvez également consulter la liste de toutes les choses liées à Dotfiles à l'adresse suivante http://dotfiles.github.io/

(Divulgation complète : je suis l'auteur original de Hermit et toujours l'un des principaux mainteneurs).

1voto

phil Points 173

Utilice Dotty pour stocker en toute sécurité vos fichiers de configuration et les garder facilement synchronisés entre vos machines.

0voto

user967489 Points 21

Je pense que https://github.com/fsquillace/kyrat fait ce dont vous avez besoin.

Il s'agit d'un wrapper ssh très léger qui ne nécessite pas d'accès root ou d'installations sur l'hôte distant.

Un simple exemple d'utilisation :

$> echo "alias q=exit" > ~/.config/kyrat/bashrc
$> kyrat myuser@myserver.com
myserver.com $> q
exit

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X