Skip to content

Backups & Sync

Backups con git GUI para git: https://www.gitkraken.com/ Basado en git: https://github.com/bup/bup

Syncthing parece piola: https://wiki.archlinux.org/index.php/Synchronization_and_backup_programs - Git-annex y sparkleshare estan basados en git. - Backups incrementales hay varias opciones: borg, bup, kup.

Varias cosas para cloud storage (google drive xej): https://wiki.archlinux.org/index.php/Synchronization_and_backup_programs#Third-party_services

Lore: https://stackoverflow.com/questions/549600/is-there-a-fundamental-difference-between-backups-and-version-control

Important file list for Linux reinstall

Home

https://stackoverflow.com/questions/16647476/how-to-rsync-only-a-specific-list-of-files

cd
ls -1Ap --group-directories-first
# Home backup
rsync -arvh --files-from=home_file_list.txt ~/ ./home_files
# System backup
rsync -arvh --files-from=system_file_list.txt / ./system_files

Carpetas:

.gitkraken/
.gnupg/
.hplip/
.kde4/
.mozilla/
.ovpn/
.pulse/
.ssh/
.zotero/

Las carpetas ".local" y ".config" pueden ser muy pesadas. De estas hay que quedarse con lo importante

.config/minidlna/
.config/kde.org/
.config/jack/
.config/autostart/
.config/baloofilerc
.config/dolphinrc
.config/kde-add-printerrc
.config/kdeglobals
.config/kglobalshortcutsrc
.config/khotkeysrc
.config/kioslaverc
.config/ktimezonedrc
.config/kuprc
.config/kwinrc
.config/kxkbrc
.config/mimeapps.list
.config/plasmarc
.config/plasmashellrc
.config/powerdevilrc
.config/powermanagementprofilesrc
.config/tabletdblocalrc
.config/tabletprofilesrc
.config/touchpadxlibinputrc
.config/Nextcloud
.config/sublime-text-3
.config/syncthing
.local/share/dolphin
.local/share/flatpak/overrides/com.valvesoftware.Steam
.local/share/keyrings
.local/share/konsole
.local/share/ksysguard
.local/share/kwalletd

Archivos:

.local/share/flatpak/overrides/com.valvesoftware.Steam
.asoundrc
.bash_history
.bash_profile
.bashrc
.bCNC
.bCNC.history
.gitconfig
.profile
.xinitrc
.xmodmap
.zsh_history
.zshrc

System

Una lista de archivos del sistema que quizas sea importante backupear:

/etc/hosts
/etc/pacman.d/mirrorlist
/etc/systemd/journald.conf
/usr/share/X11/xkb/symbols/us_nico
/usr/share/X11/xkb/rules/base.lst
/usr/share/X11/xkb/rules/evdev.xml
/usr/share/X11/xkb/rules/evdev.lst
/usr/share/X11/xkb/rules/base.xml
/etc/nsswitch.conf
/etc/ssh/sshd_config
/etc/intel-undervolt.conf
/etc/fstab
/usr/bin/orientation-helper
/usr/share/X11/xorg.conf.d/10-quirks.conf
/usr/share/X11/xorg.conf.d/40-libinput.conf
/usr/share/X11/xorg.conf.d/70-wacom.conf
/etc/X11/xorg.conf.d
/etc/pacman.conf
/etc/minidlna.conf
/etc/pulse/daemon.conf
/etc/udev/rules.d/10-qemu.rules
/etc/libvirt/qemu.conf
/etc/systemd/system/gvtvgpu.service
/etc/mkinitcpio.conf
/etc/systemd/swap.conf
/etc/environment
/etc/locale.conf

FreeFileSync

For fuck's sake: https://freefilesync.org/

Unison

Es importante bajar la misma versión de unison en ambas PCs y ademas compilarlo con la misma versión del compilador. Si, no anda... malísimo.

La alternativa es usar sshfs para montar el remoto localmente, y usar unison "pseudo-localmente".

Para ignorar cosas editar ~/.unison/archivo_tipo.prf:

  ignore = Name {*/,.*/}.git
  ignore = Name {*/,.*/}.Rproj.user
  ignore = Name .Rhistory
  ignore = Name .gitignore

https://web.archive.org/web/20191218052957/https://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-manual.html#ignore

BUP y Kup

Como usar bup:

Algunos comandos que usa Kup:

# check and fix errors https://github.com/bup/bup/blob/master/Documentation/bup-fsck.md
bup -d "/run/media/nicomic/canviohdd/Bakups/archKup" fsck -r --quick -j 7

Se puede "examinar" los cambios entre backups de Bup con un ls:

  # Esta variable está configurada con export en mi .bashrc
  BUP_DIR=/path/al/backup
  bup fuse -d /path/al/mount/point
  ls -Rg ./latest > ~/latest.txt
  # Y despues usar Diff para ver cuáles fueron los cambios
  diff ~/not_the_latest.txt ~/latest.txt

  # Seguramente se pueda montar solo latest si sirviera para que sea más rápido

Kup tiene toda la configuracion guardada en: ~/.config/kuprc

bup ahora en el AUR

Preferí instalarlo desde git: https://github.com/bup/bup

sudo pacman -S acl attr par2cmdline readline python2-tornado rsync pandoc
sudo pacman -S python2-pip
sudo pip2 install pylibacl
sudo pip2 install pyxattr
sudo pip2 install fuse

git clone https://github.com/bup/bup
cd bup
git checkout 0.29.1
make check

RClone Google Drive backup

Usar BUP para tener versiones es más simple, pero también más difícil de consultar.

Usando solo rclone

Procedimiento:

Primero reemplazar "20191019" por la nueva fecha en este .txt

  1. --dry-run y nombrar el log: 20191019.dry.rclone.log
  2. backup (con sync y --drive-alternate-export). Rehacer si hubo errores.
  3. hard-link copy: 20191019.hardLinkCopy
  4. ls recursivo ls.20191019.log

1) Prueba:

Revisar que esté todo bien.

  rclone sync RCLONE_BACKUP:/ /pathToBackup/RCLONE_DIR/ --drive-alternate-export --dry-run >> 20191019.dry.rclone.log.txt 2>> 20191019.dry.rclone.log.txt

2) Backup:

2A. rclone sincronizando (borrando lo que se borró en drive, normalmente hago esto):

  rclone sync RCLONE_BACKUP:/ /pathToBackup/RCLONE_DIR/ --drive-alternate-export >> 20191019.rclone.sync.log.txt 2>> 20191019.rclone.sync.log.txt

2B. rclone copiando lo nuevo:

  rclone copy RCLONE_BACKUP:/ /pathToBackup/RCLONE_DIR/ --drive-alternate-export >> 20191019.rclone.copy.log.txt 2>> 20191019.rclone.copy.log.txt

3) Hard-link

Para hacer copias con hard links al final.

  cp -al /pathToBackup/RCLONE_DIR/ /pathToBackup/BACKUP_DIR/20191019.hardLinkCopy

Podría usar bup en vez de hard-links, pero como los archivos no cambian creo que da igual en cuanto a espacio de almacenamiento.

4) ls recursivo

Al final debería hacer un ls -Rl que sirva para ver diferencias con DIFF o Kdiff3.

  ls -gGhR --time-style=long-iso /pathToBackup/RCLONE_DIR/ > ls.20191019.log

Versionando con BUP

Es más simple, primero veo qué cambios se bajarína del Drive con la carpeta local y guardo los logs.

rclone sync Frubox:/ ~/Bakups/Frubox/ --drive-alternate-export --dry-run >> logs_rclone/20200417.rclone.dry_run.log.txt 2>> logs_rclone/20200417.rclone.dry_run.log.txt

Luego de hacer correcciones en el Drive, bajo los cambios se bajarína del Drive con la carpeta local y guardo los logs.

rclone sync Frubox:/ ~/Bakups/Frubox/ --drive-alternate-export >> logs_rclone/20200417.rclone.sync.log.txt 2>> logs_rclone/20200417.rclone.sync.log.txt

Luego uso KUP para guardar la nueva versión de la carpeta local. De esta manera siempre tengo la última version disponible en mi computadora y puedo revisar versiones anteriores.

Efectivamente se desperdicia un poco de espacio porque la carpeta está guardada una vez de forma normal, y por duplicado en el backup de BUP. No está mal supongo.