2008-10-04 6 views
23

Comme la plupart des gens * nix, j'ai tendance à jouer avec mes outils et à les configurer comme je les aime. Tout était bien et bon jusqu'à récemment. Comme je fais de plus en plus de travail, j'ai tendance à me connecter sur de plus en plus de machines, et j'ai de plus en plus de choses qui sont bien configurées sur mon ordinateur personnel, mais pas nécessairement sur mon ordinateur ou sur mon serveur web. serveurs ...Garder les fichiers point synchronisés sur les machines?

Comment gardez-vous ces fichiers de configuration à jour? Les copiez-vous manuellement? Les avez-vous stockés quelque part public?

Répondre

17

J'ai eu beaucoup de chance de garder mes fichiers sous un système de contrôle de révision. Ce n'est pas pour tout le monde, mais la plupart des programmeurs devraient être en mesure d'apprécier les avantages. Lire

Keeping Your Life in Subversion

pour une excellente description, y compris la façon de gérer la configuration non-dotfile (comme les emplois Cron via le svnfix script) sur plusieurs machines.

3

Vous pouvez utiliser rsync. Cela fonctionne grâce à ssh que j'ai trouvé utile puisque je ne fais que configurer de nouveaux serveurs avec un accès ssh. Ou, créez un fichier tar que vous déplacez partout et déballez-le.

+0

WTF? Pourquoi avez-vous eu -1 pour suggérer rsync? Avoir un peu de rep. – freespace

1

Je conserve les versions maîtresses des fichiers sous le contrôle CM sur mon ordinateur principal et, là où j'en ai besoin, arrange la copie des mises à jour. Heureusement, nous avons des montages NFS pour les répertoires personnels sur la plupart de nos machines, donc je n'ai pas besoin de copier tout ça souvent. D'un autre côté, mon profil est assez complexe - et il est prévu différents paramètres PATH, etc., sur différentes machines. En gros, les machines sur lesquelles j'ai le contrôle administratif ont tendance à avoir plus de logiciels open source installés que les machines que j'utilise occasionnellement sans contrôle administratif. Donc, j'ai un mélange aléatoire de processus manuel et semi-automatique.

6

Rsync est à propos de votre meilleure solution. Des exemples peuvent être trouvés ici:

http://troy.jdmz.net/rsync/index.html

+0

Encore une fois, WTF ?! Un autre downvote pour mentionner rsync.Qu'est-ce que nous avons, un ennemi de rsync? Le SO est parfois déconcertant. Avoir un peu de rep. – freespace

+3

J'adore rsync mais ce n'est pas très bon ici. Supposons que vous avez 5 machines. Avec rsync, vous devez désigner un maître et lui lier les autres. Si vous apportez des modifications sur deux machines différentes, vous ne pouvez pas les synchroniser avec le maître sans écraser quelque chose. Rsync a sa place mais ce n'est pas ça. –

+0

Je réfléchis en utilisant rsync en combinaison avec le contrôle de version. Vous ne voulez certainement pas le faire avec juste rsync; rend les choses très déconcertantes (c'est ce que nous avons pour le contrôle de version). – ninjagecko

2

je les stocker dans mon système de contrôle de version.

1

Il existe netskel où vous placez vos fichiers communs sur un serveur Web, puis le programme client conserve les fichiers de points sur un nombre quelconque de machines client. Il est conçu pour s'exécuter à n'importe quel niveau de machine client, donc les scripts shell sont des scripts sh appropriés et ont un minimum de dépendances.

7

Il semble que partout où je regarde ces jours, je trouve une nouvelle chose qui me fait dire: « Hé, ce serait une bonne chose à utiliser DropBox pour »

2

j'utilise svn ... ayant un public et un dépôt privé ... dès que j'obtenir sur un serveur je viens

svn co http://my.rep/home/public 

et ont tous mes fichiers de point ...

2

Je moi stocker dans un référentiel git, ce qui me permet de facilement fusionner au-delà des changements dépendants du système, mais partager les changements nt aussi.

6

J'utilise git pour cela.

Il existe un wiki/une liste de diffusion dédiée au sujet.

vcs-home

+0

Je le fais comme Daniel Bungert ici, et en fait mon reposfichier dotfile est visible publiquement puisque je le partage avec mes amis. Nous tirons des trucs intéressants les uns des autres :) Pour ceux qui sont intéressés, je serais heureux de divulguer mon URL web git. – freespace

+0

Même ici. En utilisant git. Avoir un "maître" repo sur ma machine de travail principale. Puis une branche locale sur le maître repo pour chaque autre machine (ou juste pour différentes configs). Avoir une branche «maître» pour accueillir les choses visibles dans toutes les maisons. Seules quelques solutions de contournement spécifiques à une machine vont dans les branches spécifiques. Aucun script requis. Les gros documents ne sont pas chez moi. Les projets ne sont pas chez moi. Les choses/concepts séparés entrent dans des repos distincts. – cfi

1

Svn ici aussi. Rsync ou unison serait une bonne idée, sauf que parfois les choses s'arrêtent de fonctionner et je me demande ce qui était dans mon fichier .bashrc la semaine dernière. Svn est un épargnant de vie dans ce cas.

1

Maintenant j'utilise Live Mesh qui conserve tous mes fichiers synchronisés sur plusieurs machines.

0

En fonction de votre environnement, vous pouvez également utiliser (entièrement backupped) des partages NFS ...

0

Parlant de stockage de fichiers de point en public il y a

http://www.dotfiles.com/

et

http://dotfiles.org/

Mais il serait vraiment douloureux de mettre à jour manuellement vos fichiers comme (AFAIK) aucun de t Ces services fournissent toute API.

Ce dernier est vraiment minimaliste (pas formulaire de contact, aucune information sur qui a fait/est le propriétaire, etc.)

8

J'utilise aussi la subversion pour gérer mes dotfiles. Lorsque je me connecte à une boîte, mes confs sont automatiquement mises à jour pour moi. J'utilise également github pour stocker my confs publiquement. J'utilise git-svn pour garder les deux synchronisés.

Pour démarrer et exécuter sur un nouveau serveur, il suffit d'exécuter quelques commandes. Le script create_links crée simplement les liens symboliques des éléments du dossier de .dotfiles dans mon $HOME, et touche également certains fichiers qui ne ont pas besoin d'être vérifiés.

$ cd 

# checkout the files 
$ svn co https://path/to/my/dotfiles/trunk .dotfiles 

# remove any files that might be in the way 
$ .dotfiles/create_links.sh unlink 

# create the symlinks and other random tasks needed for setup 
$ .dotfiles/create_links.sh 
1

Je mets tous mes dotfiles dans un dossier sur Dropbox puis reliez-les à chaque machine. Les changements effectués sur une machine sont disponibles presque immédiatement pour tous les autres. Cela fonctionne juste.

5

Je recommanderais sans hésiter homesick. Il utilise git et crée automatiquement des liens symboliques entre vos fichiers. homesick track suit un nouveau fichier de points, tandis que homesick symlink crée un lien symbolique entre les nouveaux fichiers de points du référentiel et votre dossier personnel. De cette façon, vous pouvez même avoir plus d'un dépôt.

+0

J'ai d'ailleurs créé mon propre clone du mal du pays à bash, parce que je n'aimais pas la dépendance rubis: https://github.com/andsens/homeshick – andsens

0

briefcase est un outil pour faciliter la tenue dotfiles dans git, y compris ceux qui ont des informations privées (comme .gitconfig). En conservant vos fichiers de configuration dans un référentiel git public git, vous pouvez partager vos paramètres avec d'autres utilisateurs. Toute information secrète est conservée dans un seul fichier en dehors du référentiel (à vous de sauvegarder et de transporter ce fichier).

-http://jim.github.com/briefcase

Questions connexes