Backup ficheros de configuración con dotdrop

Introducción

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 ficheros

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

:
Categorías: linux
Etiquetas: linux