¿Qué haría rsync en este caso?

Tengo la idea de trasladar un directorio a un SSD.

El directorio en cuestión es /home/krovikan/.local/share/Steam.

Es decir, hacer en el directorio /home/krovikan/.local/share un ln -s /Steam/ Steam de forma que aunque se vaya al SSD la ruta seguirá siendo la usual. Si hago click en el enlace Steam me saldrá:

NOTA: Esto es una prueba hecha fuera de /home/krovikan/.local/share/

ls1 Steam                                                                ✔  22:48:52 
Permissions Size User     Date Modified Name
drwx------     - krovikan 16 oct 17:54   .Trash-1000
drwxr-xr-x     - krovikan  4 dic 12:12   SteamLibrary

Y si voy moviéndome con Dolphin la ruta seguiría bien tal como se ve aquí:

Cuando hiciera el rsync -avhP /home/krovikan/ /homeCOPIA/krovikan y el rsync -avhP --delete /home/krovikan/ /homeCOPIA/krovikan de cada semana, ¿qué sucedería?

¿Copiaría sólo el enlace simbólico /home/krovikan/.local/share/Steam? ¿O también los datos del SSD al que apunta en el HDD destino de la copia?

Saludos

Primero: ¿Y no es mejor que montes el dispositivo directamente en esa carpeta? (si lo haces, asegúrate de tener todo el contenido de la carpeta en la SSD, borra el contenido de la carpeta y monta el dispositivo ahí.

Puedes usar el particionador de YaST, pero al final tendrías algo así en fstab:

[uiid del dispositivo]  /home/krovikan/.local/share/Steam [tipo fs] defaults[y puede que otros atributos según el fs] 0 0

Incluso así podrías crear enlaces simbólicos desde cualquier lugar.

Segundo: verificar qué hace rsync con un enlace:

tux@mipc:~> mkdir cosasenlink
tux@mipc:~> ls / > cosasenlink/listado.txt
tux@mipc:~> echo "mis cosas en un link" > cosasenlink/texto.txt
tux@mipc:~> tree cosasenlink/
cosasenlink/
├── listado.txt
└── texto.txt
tux@mipc:~> ln -s cosasenlink/ enlace
tux@mipc:~>  rsync -va enlace/ nuevoenlace/
sending incremental file list
created directory nuevoenlace
./
listado.txt
texto.txt
tux@mipc:~>  tree nuevoenlace/
nuevoenlace/
├── listado.txt
└── texto.txt
tux@mipc:~> 

Tercero: ¿qué hace rsync con un enlace a un dispositivo?

Ya puestos, hagámoslo más divertido.

tux@mipc:~> fallocate -l 1G testlink.img
tux@mipc:~> mkdir enlacefs
tux@mipc:~> sudo mkfs.xfs testlink.img
tux@mipc:~> sudo mount -t xfs -o loop testlink.img enlacefs/
tux@mipc:~> sudo chown karl:users enlacefs/
tux@mipc:~> rsync -va nuevoenlace/ enlacefs/
sending incremental file list
./
listado.txt
texto.txt
tux@mipc:~> tree enlacefs/
enlacefs/
├── listado.txt
└── texto.txt

1 directory, 2 files
tux@mipc:~> 

Rsync funciona muy bien para la mayoría de casos que se te ocurran y muchos otros más. En ocasiones, es cuestión de repasar su manual para ver si algún modificador puede hacer algo interesante. Por ejemplo, qué hace con los enlaces que quieres copiar.

tux@mipc:~> rsync --help | grep link

Sin embargo, para tu caso debería funcionar sin más complicaciones, aunque la prueba de verdad es … probarlo.

¿Las dificultades? El permiso de escritura en destino, el que esté montado correctamente cuando quieres hacer la copia…

1 Like

Hola.

Aquí lo explica mas o menos :

Ahora si es en ext4 y pone determinadas funciones (que cambia los metadatos) ¿ rsync podría funcionar ? Ejemplo si tiene en cuenta las fechas de modificación (atime, noatime y relatime)

Saludos

1 Like

Mi idea inicial era:

SSD 500Gb para efi, swap y / en BtrFS.
SSD 2Tb para /Steam en EXT4
HDD 4Tb para /home en BtrFS
HDD 4Tb para /homeCOPIA en BtrFS
HDD 2Tb para /SteamCOPIA en EXT4
HDD 1Tb para lo que puediera hacer falta (actualmente lo tengo desmontado al igual que el de 2Tb).

Tras tu explicación, tendría que cambiar el punto de montaje del SSD de 2Tb (recordemos que será EXT4) a /home/krovikan/.local/share/Steam y en el SSD colocar (esto último ya lo imaginaba) todo el contenido del directorio Steam.

Por lo que tendría el HDD de 4Tb sin datos en Steam (sólo un directorio llamado Steam en /home/krovikan/.local/share) ya que estarían todos los datos en el SSD de 2Tb.

Entonces si hago un rsync -avhP /home/krovikan/ /homeCOPIA/krovikan y rsync -avhP --delete /home/krovikan/ /homeCOPIA/krovikan (usando los HDD de 4Tb), el contenido del directorio /homeCOPIA/krovikan/.local/share/Steam sería borrado tras usar los comandos, ¿verdad?

Y si quiero hacer una copia del SSD 2Tb necesitaré un dispositivo donde hacer rsync -avhP /Steam <a donde sea> y rsync -avhP --delete /Steam <a donde sea> (como el HDD de 2Tb montado en /SteamCOPIA por ejemplo).

Si todo es correcto, mis necesidades de almacenamiento bajarían de 4HDD a 3HDD. Ya sabes el por. :wink:

Saludos

Hola. A ver si me explico mejor.

Supongamos que tienes un disco (MIDISCO) donde tienes tus ficheros de usuario. Eso incluye .local, y por definición, incluye cualquier cosa que tengas en la carpeta .local/share/Steam.

Si todos los ficheros de .local/share/Steam los quieres alojar en otro disco (DISCOSTEAM), en lugar de montarlo en otro lugar, y dado que solo los utilizas tú, puedes montar el otro disco en /home/krovikan/.local/share/Steam.

Aquí es donde digo que antes de montar el nuevo contenido (DISCOSTEAM) en la nueva ubicación /home/krovikan/.local/share/Steam, y teniendo en cuenta que si montas un disco en esa ubicación todos los ficheros que hubiera en esa carpeta dejarán de ser accesibles (reemplazados por el contenido del disco montado ahí, DISCOSTEAM, entonces lo apropiado es borrarlos para que no ocupen espacio.

Eso es diferente. Rsync puede borrar los ficheros en distintas circunstancias, pero has de incluir los modificadores apropiados. Por ejemplo, puedes hacer que rsync borre cualquier fichero de DISCOBACKUPSTEAM que esté en DISCOBACKUPSTEAM pero no esté en DISCOSTEAM

$ rsync --help |grep delete
--del                    an alias for --delete-during
--delete                 delete extraneous files from dest dirs
--delete-before          receiver deletes before xfer, not during
--delete-during          receiver deletes during the transfer
--delete-delay           find deletions during, delete after
--delete-after           receiver deletes after transfer, not during
--delete-excluded        also delete excluded files from dest dirs
--delete-missing-args    delete missing source args from destination
--ignore-errors          delete even if there are I/O errors
--max-delete=NUM         don't delete more than NUM files
$ rsync --help |grep remove
--remove-source-files    sender removes synchronized files (non-dir)

Borrar en origen es una forma un poco ineficiente para rsync, donde la gracia es que por defecto solo se copian aquellos ficheros que han cambiado respecto a los que están almacenados.

Tampoco hay ninguna razón para que no comprimas los ficheros (o incluso actives la compresión a nivel sistema de ficheros)

Me estoy dando cuenta de que voy a ganar unas 900Gb de espacio en cada disco de 4Tb.

Así que sólo me harían falta 3 discos HDD (/home, /homeCOPIA y /SteamCOPIA). El 4º no me haría falta ni meterlo.

Gracias a todos por responder.

Saludos

Te seria mejor que mostraras el árbol de los puntos de montaje permanentes.

:~> lsblk -f
NAME   FSTYPE FSVER LABEL                     UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sda                                                                                               
├─sda1 ntfs         DATOS                     74C4B870C4B83668                                    
├─sda2 swap   1                               4a0c3276-25ac-4de2-8782-558c4ec7c21c                [SWAP]
└─sda3 xfs                                    d9524e1f-c48e-4f62-993d-5e0a159295dc  181,3G    61% /home
sdb                                                                                               
├─sdb1 ntfs         Reservado para el sistema 9824D3BE24D39D96                                    
├─sdb2 ntfs                                   5842D97D42D95FF4                                    
└─sdb3 btrfs        Nuevo vol                 c966b09a-acf6-4187-8e01-71be53286988  123,1G    20% /var
                                                                                                  /usr/local
                                                                                                  /root
                                                                                                  /opt
                                                                                                  /srv
                                                                                                  /tmp
                                                                                                  /boot/grub2/i386-pc
                                                                                                  /boot/grub2/x86_64-efi
                                                                                                  /.snapshots
                                                                                                  /
sr0 

Una mejora podria ser aprovechar los snapshots que brinda btrfs y tener respaldos por fecha o historicos en /homeCOPIA que ocuparian extra solo lo que vayan cambiando esos archivos. Y con los que estan en ext4 pdrias usar las opciones de backup de rsync y lograrias algo similar.

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.