Backup ficheros de configuración con dotdrop
2019-01-24
Índice
- Configuración
- Añadiendo ficheros de configuración
- Añadiendo un perfil
- Añadiendo nuevos ficheroas
- Instalar ficheros
- Instalar ficheros de un perfil
- Comparar ficheros
- Actualizar ficheros
- Ver perfiles
- Listar ficheros de un perfil
- Consideraciones
Escuchando el podcast de Lorenzo (El Atareao) descubrí de la existencia de ciertas herramientas para el backup de los ficheros de configuración, como pueden ser dotdrop, dotfiles o fresh
Hasta ahora, tenia un pequeño script de bash donde iba poniendo aquellos ficheros de los que quería tener una copia de seguridad, realmente lo que hacia era que cada cierto tiempo realizaaba una copia de esos ficheros a una carpeta y luego esa carpeta la subía a gitlab, y de esta forma tenia mis ficheros de configuración siempre disponibles desde cualquier ordenador.
Como digo, revisando los programas que recomendaba Lorenzo descubrí dotdrop, y me decidí por el básicamente porque permite el uso de perfiles, es decir, puedo hacer una copia de seguridad de todos los ficheros de configuración del ordenador de casa y luego mediante el uso de estos perfiles puedo seleccionar que en el ordenador del trabajo solo importe determinados ficheros de configuración, todo ello de forma automática.
Configuración
Tras la instalación, creamos el fichero de configuración config.yaml
, te recomiendo que te crees una carpeta y dentro de ella crees el fichero
config:
backup: true
create: true
dotpath: dotfiles
dotfiles:
profiles:
/dotpath/
es la carpeta donde estarán las copias de nuestros ficheros de configuración de los que queremos tener una copia.
Añadiendo ficheros de configuración
Ahora procedemos a importar los ficheros de configuración
dotdrop import ~/.config/dunst ~/.config/fontconfig ~/.config/i3 ~/.config/i3status ~/.config/liferea ~/.config/pcmanfm ~/.config/pragha ~/.config/termite ~/.config/transmission-remote-gtk ~/.emacs.d/config.org ~/.emacs.d/init.el ~/.gnupg ~/.ssh ~/.tmux.conf ~/.zshrc
_ _ _
__| | ___ | |_ __| |_ __ ___ _ __
/ _` |/ _ \| __/ _` | '__/ _ \| '_ |
\__,_|\___/ \__\__,_|_| \___/| .__/ v0.24.1
|_|
-> "/home/carlos/.config/dunst" imported
-> "/home/carlos/.config/fontconfig" imported
-> "/home/carlos/.config/i3" imported
-> "/home/carlos/.config/i3status" imported
-> "/home/carlos/.config/liferea" imported
-> "/home/carlos/.config/pcmanfm" imported
-> "/home/carlos/.config/pragha" imported
-> "/home/carlos/.config/termite" imported
-> "/home/carlos/.config/transmission-remote-gtk" imported
-> "/home/carlos/.emacs.d/config.org" imported
-> "/home/carlos/.emacs.d/init.el" imported
-> "/home/carlos/.gnupg" imported
-> "/home/carlos/.ssh" imported
-> "/home/carlos/.tmux.conf" imported
-> "/home/carlos/.zshrc" imported
15 file(s) imported.
Si vuelves a abrir el fichero de configuración, vemos que ha cambiado
config:
backup: true
banner: true
create: true
dotpath: dotfiles
ignoreempty: false
keepdot: false
link_by_default: false
longkey: false
showdiff: false
workdir: ~/.config/dotdrop
dotfiles:
d_dunst:
dst: ~/.config/dunst
src: config/dunst
d_fontconfig:
dst: ~/.config/fontconfig
src: config/fontconfig
d_gnupg:
dst: ~/.gnupg
src: gnupg
d_i3:
dst: ~/.config/i3
src: config/i3
d_i3status:
dst: ~/.config/i3status
src: config/i3status
d_liferea:
dst: ~/.config/liferea
src: config/liferea
d_pcmanfm:
dst: ~/.config/pcmanfm
src: config/pcmanfm
d_pragha:
dst: ~/.config/pragha
src: config/pragha
d_ssh:
dst: ~/.ssh
src: ssh
d_termite:
dst: ~/.config/termite
src: config/termite
d_transmission-remote-gtk:
dst: ~/.config/transmission-remote-gtk
src: config/transmission-remote-gtk
f_config.org:
dst: ~/.emacs.d/config.org
src: emacs.d/config.org
f_init.el:
dst: ~/.emacs.d/init.el
src: emacs.d/init.el
f_tmux.conf:
dst: ~/.tmux.conf
src: tmux.conf
f_zshrc:
dst: ~/.zshrc
src: zshrc
profiles:
ACER-E574G:
dotfiles:
- d_dunst
- d_fontconfig
- d_i3
- d_i3status
- d_liferea
- d_pcmanfm
- d_pragha
- d_termite
- d_transmission-remote-gtk
- f_config.org
- f_init.el
- d_gnupg
- d_ssh
- f_tmux.conf
- f_zshrc
Además, ahora tenemos un carpeta llamada dotfiles con una copia de los ficheros de configuración
Añadiendo un perfil
Podemos editar el fichero de configuración y añadir un nuevo perfil, en el ejemplo llamado TRABAJO, y seleccionar que ficheros de configuración van a formar parte de ese perfil
config:
backup: true
banner: true
create: true
dotpath: dotfiles
ignoreempty: false
keepdot: false
link_by_default: false
longkey: false
showdiff: false
workdir: ~/.config/dotdrop
dotfiles:
d_dunst:
dst: ~/.config/dunst
src: config/dunst
d_fontconfig:
dst: ~/.config/fontconfig
src: config/fontconfig
d_gnupg:
dst: ~/.gnupg
src: gnupg
d_i3:
dst: ~/.config/i3
src: config/i3
d_i3status:
dst: ~/.config/i3status
src: config/i3status
d_liferea:
dst: ~/.config/liferea
src: config/liferea
d_pcmanfm:
dst: ~/.config/pcmanfm
src: config/pcmanfm
d_pragha:
dst: ~/.config/pragha
src: config/pragha
d_ssh:
dst: ~/.ssh
src: ssh
d_termite:
dst: ~/.config/termite
src: config/termite
d_transmission-remote-gtk:
dst: ~/.config/transmission-remote-gtk
src: config/transmission-remote-gtk
f_config.org:
dst: ~/.emacs.d/config.org
src: emacs.d/config.org
f_init.el:
dst: ~/.emacs.d/init.el
src: emacs.d/init.el
f_tmux.conf:
dst: ~/.tmux.conf
src: tmux.conf
f_zshrc:
dst: ~/.zshrc
src: zshrc
profiles:
ACER-E574G:
dotfiles:
- d_dunst
- d_fontconfig
- d_i3
- d_i3status
- d_liferea
- d_pcmanfm
- d_pragha
- d_termite
- d_transmission-remote-gtk
- f_config.org
- f_init.el
- d_gnupg
- d_ssh
- f_tmux.conf
- f_zshrc
TRABAJO:
dotfiles:
- d_dunst
- d_fontconfig
- d_i3
- d_i3status
- d_liferea
- d_pcmanfm
- d_pragha
- d_termite
- d_transmission-remote-gtk
- f_config.org
- f_init.el
- d_gnupg
- f_tmux.conf
- f_zshrc
Añadiendo nuevos ficheroas
Si queremos importar un nuevo fichero de configuración
dotdrop import ~/.config/tmuxinator/carlos.yml
_ _ _
__| | ___ | |_ __| |_ __ ___ _ __
/ _` |/ _ \| __/ _` | '__/ _ \| '_ |
\__,_|\___/ \__\__,_|_| \___/| .__/ v0.24.1
|_|
-> "/home/carlos/.config/tmuxinator/carlos.yml" imported
1 file(s) imported.
Instalar ficheros
Simplemente ejecutamos
dotdrop install
Instalar ficheros de un perfil
dotdrop install --profile=TRABAJO
Comparar ficheros
Podemos comparar si hay cambios entre los ficheros de configuración con los del backup de dotdrop
dotdrop compare
diffing "d_pragha" VS "~/.config/pragha"
diff "pragha.db":
Los ficheros binarios /tmp/dotdrop-e6zywwzw/home/carlos/.config/pragha/pragha.db y /home/carlos/.config/pragha/pragha.db son distintos
diffing "f_config.org" VS "~/.emacs.d/config.org"
< Esta configuración está basada en la configuración del
< [[https://github.com/rememberYou/.emacs.d][Terencio Agozzino]] (~remenberyou~)
---
> Esta configuración está basada en la configuración de [[https://github.com/rememberYou/.emacs.d][Terencio
> Agozzino]] (~remenberyou~)
996c996
< ;; (org-refile-targets '((org-agenda-files . (:maxlevel . 6))))
---
> (org-refile-targets '((org-agenda-files . (:maxlevel . 6))))
1336c1336
< (op/site-sub-title "Blog personal donde guardo mis apuntes sobre tecnología.")
---
> (op/site-sub-title "Blog personal donde guardo mis notas de tecnología.")
Actualizar ficheros
Para actualizar los ficheros de configuración de dotdrop que tienen diferencias con la versión almacenada.
dotdrop update ~/.config/pragha
_ _ _
__| | ___ | |_ __| |_ __ ___ _ __
/ _` |/ _ \| __/ _` | '__/ _ \| '_ |
\__,_|\___/ \__\__,_|_| \___/| .__/ v0.24.1
|_|
Overwrite "/home/carlos/Documentos/proyectos/dotfiles/dotfiles/config/pragha/pragha.db" with "/home/carlos/.config/pragha/pragha.db"? [y/N] ? y
Se solicita una confirmación del usuario antes de sobrescribir o actualizar cualquier fichero a menos que se use el parámetro -f –force.
Ver perfiles
dotdrop list
_ _ _
__| | ___ | |_ __| |_ __ ___ _ __
/ _` |/ _ \| __/ _` | '__/ _ \| '_ |
\__,_|\___/ \__\__,_|_| \___/| .__/ v0.24.1
|_|
Available profile(s):
-> ACER-E574G
-> TRABAJO
Listar ficheros de un perfil
dotdrop listfiles --profile=TRABAJO
_ _ _
__| | ___ | |_ __| |_ __ ___ _ __
/ _` |/ _ \| __/ _` | '__/ _ \| '_ |
\__,_|\___/ \__\__,_|_| \___/| .__/ v0.24.1
|_|
Dotfile(s) for profile "TRABAJO"
d_dunst (src: "config/dunst", link: False)
-> ~/.config/dunst
d_fontconfig (src: "config/fontconfig", link: False)
-> ~/.config/fontconfig
d_i3 (src: "config/i3", link: False)
-> ~/.config/i3
d_i3status (src: "config/i3status", link: False)
-> ~/.config/i3status
d_liferea (src: "config/liferea", link: False)
-> ~/.config/liferea
d_pcmanfm (src: "config/pcmanfm", link: False)
-> ~/.config/pcmanfm
d_pragha (src: "config/pragha", link: False)
-> ~/.config/pragha
d_termite (src: "config/termite", link: False)
-> ~/.config/termite
f_authinfo.gpg (src: "gnupg/shared/authinfo.gpg", link: False)
-> ~/.gnupg/shared/authinfo.gpg
f_carlos.yml (src: "config/tmuxinator/carlos.yml", link: False)
-> ~/.config/tmuxinator/carlos.yml
f_init.el (src: "emacs.d/init.el", link: False)
-> ~/.emacs.d/init.el
f_tmux.conf (src: "tmux.conf", link: False)
-> ~/.tmux.conf
f_zshrc (src: "zshrc", link: False)
-> ~/.zshrc
Consideraciones
-
Dotdrop no permite manejar los permisos de archivo, todas las operaciones ( mkdir , cp , mv , ln , creación de archivos) se ejecutan con los derechos del usuario que llama a dotdrop.
-
Funciona bien para archivos de configuración locales o de usuario, pero no permite administrar archivos de configuración globales o del sistema ( /etc o /var por ejemplo) directamente.
-
Si esta carpeta la subes a un repositorio de gitlab podrás tener siempre a mano tus ficheros de configuración listos para instalar en cualquier equipo
-
Hay muchas, pero muchas más opciones para configurar dotdrop, pasate pos su sitio para verlas todas, aqui solo he mostrado un manera
Espero que te haya gustado, pasa un buen día. 🐧