2008-10-04 20 views
23

Como la mayoría de las personas * nix, tiendo a jugar con mis herramientas y configurarlas de la manera que me gustan. Esto estuvo todo bien hasta hace poco. A medida que hago más y más trabajo, tiendo a conectarme a más y más máquinas, y tengo más y más cosas que están configuradas muy bien en mi máquina doméstica, pero no necesariamente en mi máquina de trabajo, ni en mi servidor web, ni en ninguna parte de mi trabajo servidores ...¿Mantiene los archivos de punto sincronizados en todas las máquinas?

¿Cómo se mantienen estos archivos de configuración actualizados? ¿Simplemente los copias manualmente? ¿Los tienes almacenados en algún lugar público?

Respuesta

17

He tenido bastante suerte manteniendo mis archivos bajo un sistema de control de revisiones. No es para todos, pero la mayoría de los programadores deberían poder apreciar los beneficios. Leer

Keeping Your Life in Subversion

para una excelente descripción, incluyendo cómo manejar configuración no dotfile (como cron puestos de trabajo a través de la svnfix script) en varias máquinas.

3

Puede usar rsync. Funciona a través de ssh, que he encontrado útil ya que solo configuro nuevos servidores con acceso ssh.

O cree un archivo tar que se mueva por todos lados y descomprima.

+0

WTF? ¿Por qué obtuviste -1 por sugerir rsync? Ten un representante. – freespace

1

Guardo las versiones maestras de los archivos bajo control CM en la máquina principal y, cuando sea necesario, organizo la copia de las actualizaciones. Afortunadamente, tenemos montajes NFS para directorios de inicio en la mayoría de nuestras máquinas, por lo que en realidad no tengo que copiar todo eso a menudo. Mi perfil, por otro lado, es bastante complejo y tiene disposiciones para diferentes configuraciones de PATH, etc. en diferentes máquinas. A grandes rasgos, las máquinas que tengo bajo control administrativo tienden a tener más software de código abierto instalado que las máquinas que uso ocasionalmente sin control administrativo.

Por lo tanto, tengo una mezcla aleatoria de proceso manual y semiautomático.

6

Rsync es la mejor solución. Los ejemplos se pueden encontrar aquí:

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

+0

Nuevamente, WTF ?! Otro voto negativo por mencionar rsync.¿Qué tenemos, un enemigo de rsync? SO es desconcertante a veces. Ten un representante. – freespace

+3

Me encanta la rsync pero no es muy buena aquí. Supongamos que tiene 5 máquinas. Con rsync, debe designar un maestro y vincular a los demás. Si realiza cambios en dos máquinas diferentes, no podrá volver a sincronizarlas con el maestro sin sobreescribir algo. Rsync tiene su lugar, pero esto no es todo. –

+0

Estoy reflexionando sobre el uso de rsync en combinación con el control de versiones. Definitivamente no quieres hacerlo con solo rsync; hace que desordenar las cosas sea muy fácil (para eso tenemos control de versión). – ninjagecko

2

las guardo en mi sistema de control de versiones.

1

Hay netskel donde coloca sus archivos comunes en un servidor web, y luego el programa cliente mantiene los archivos de puntos en cualquier número de máquinas cliente. Está diseñado para ejecutarse en cualquier nivel de máquina cliente, por lo que los scripts de shell son los scripts adecuados sh y tienen una cantidad mínima de dependencias.

7

Parece que dondequiera que miro en estos días me encuentro con una nueva cosa que me hace decir "Hey, eso sería una buena cosa para el uso DropBox para"

2

yo uso SVN ... tener un público y un depósito privado ... así que tan pronto como llegue en el servidor acabo de

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

y tienen todos mis archivos punto ...

2

guardo la mía en un repositorio git, lo que me permite fácilmente fusionar más allá de los cambios dependientes del sistema, sin embargo, compartir los cambios que yo wa nt también.

6

Utilizo git para esto.

Hay una lista wiki/de correo dedicada al tema.

vcs-home

+0

Lo hago como Daniel Bungert aquí, y de hecho, mis repositorios dotfile son visibles públicamente ya que los comparto con mis amigos. Nos tiramos trucos interesantes el uno del otro :) Para aquellos interesados, estaré encantado de divulgar mi url git web. – freespace

+0

Lo mismo aquí. Usando git. Tener un repo "maestro" en mi máquina de trabajo principal. Luego, una rama local en el repositorio maestro para cada otra máquina (o solo para diferentes configuraciones). Tener una rama 'master' para alojar cosas visibles en todos los hogares. Solo unas pocas soluciones temporales específicas de la máquina van a las ramas específicas. No se necesitan guiones Los documentos grandes no están en mi casa. Los proyectos no están en mi casa. Las cosas/conceptos separados entran en repositorios separados. – cfi

1

Svn, también. Rsync o unísono sería una buena idea, excepto que a veces las cosas dejan de funcionar y me pregunto qué había en mi archivo .bashrc la semana pasada. Svn es un salvavidas en ese caso.

1

Ahora uso Live Mesh que mantiene todos mis archivos sincronizados en varias máquinas.

0

Dependiendo de su entorno también se puede usar (completamente backupped) compartidos NFS ...

0

Hablando sobre el almacenamiento de archivos punto en público hay

http://www.dotfiles.com/

y

http://dotfiles.org/

Pero sería realmente doloroso actualizar manualmente sus archivos como (AFAIK) ninguno de t Estos servicios proporcionan cualquier API.

Este último es muy minimalista (sin formulario de contacto, no hay información acerca de quién hizo/posee etc.)

8

También uso la subversión para gestionar mis dotfiles. Cuando inicio sesión en un cuadro mis confs se actualizan automágicamente para mí. También uso github para almacenar my confs públicamente. Yo uso git-svn para mantener los dos sincronizados.

Comenzar a trabajar en un nuevo servidor es solo cuestión de ejecutar algunos comandos. El guión create_links sólo crea los enlaces simbólicos a partir de los elementos de la carpeta .dotfiles en mi $HOME, y también toca algunos archivos que no necesitan ser comprobados en.

$ 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

puse todas mis dotfiles en una carpeta en Dropbox y luego vincularlos simbólicamente a cada máquina. Los cambios realizados en una máquina están disponibles para todos los demás casi de inmediato. Simplemente funciona.

5

Definitivamente recomendaría homesick. Utiliza git y sincroniza automáticamente tus archivos. homesick track realiza un seguimiento de un nuevo archivo de puntos, mientras que homesick symlink enlaces simbólicos nuevos archivos de puntos del repositorio en su carpeta de inicio. De esta forma, incluso puedes tener más de un repositorio.

+0

Por cierto, he creado mi propio clon de nostalgia en bash, porque no me gustaba la dependencia de ruby: https://github.com/andsens/homeshick – andsens

0

briefcase es una herramienta para facilitar el mantenimiento de dotfiles en GIT, incluyendo aquellos con información privada (como .gitconfig).

Al mantener sus archivos de configuración en un repositorio git publicitario de git, puede compartir su configuración con otros. Cualquier información secreta se guarda en un único archivo fuera del repositorio (depende de usted hacer una copia de seguridad y transportar este archivo).

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

Cuestiones relacionadas