Una carpeta con dos ubicaciones diferentes en Ubuntu 18.04

10

Quiero tener la misma carpeta en dos ubicaciones diferentes en mi Ubuntu. Si actualizo algo en uno, también debería actualizarse en la otra ubicación.

¿Cómo puedo hacer que suceda?

Aman Pandey
fuente
8
¿Esas 2 ubicaciones deben ser físicas (como en 2x ocupando espacio) o pueden ser enlaces?
Rinzwind
19
A symbolic linkes la solución más simple para sus requisitos y no depende de los privilegios de superusuario. man lnpara más información.
doneal24

Respuestas:

16

Use monturas de unión .

Suponga que tiene un directorio existente /home/pandey/originaly desea duplicarlo para /home/pandey/mirrorque todo lo que haga en cualquiera de ellos también se realice automáticamente en el otro.

Esto no requiere sincronización o copia entre los dos directorios. Un montaje de enlace es solo otra vista del directorio original y lo que sucede en uno también sucede en el otro.

  1. Cree (como su usuario) el nuevo directorio /home/pandey/mirror:

    mkdir /home/pandey/mirror
    
  2. bind-mount el directorio original a la ruta recién creada. Esto requiere acceso de root:

    sudo mount --bind /home/pandey/original /home/pandey/mirror
    
  3. Disfrutar.

Para deshacer esto, simplemente

sudo umount /home/pandey/mirror
rmdir /home/pandey/mirror

Vea también esta pregunta y su sobresaliente auto respuesta en stackexchange sobre bind-mounts .

PerlDuck
fuente
3
+1, seguro que esta forma es más rápida que la propuesta;
Codito ergo sum
13
¿Tendría cd /home/pandey; ln -s original mirrorel mismo efecto y no requeriría derechos de sudo?
doneal24
19
Sí, me pregunto por qué la gente propone estas soluciones indirectas, mientras que esto suena como un caso de uso clásico para un enlace simbólico simple. Cual es la ventaja? Hasta donde puedo ver, ninguna de las ventajas enumeradas en la pregunta referenciada parece aplicarse aquí.
Voo
55
@ doneal24 Estoy de acuerdo: la vinculación simbólica tiene el mismo efecto desde un punto de vista práctico y no requiere cambios fundamentales del sistema ni privilegios de administrador.
vanadio
2
La pregunta vinculada sobre los montajes de enlace tiene una buena lista de posibles casos de uso. Solo necesitar otra ruta con nombre a un directorio no es una de ellas.
Dubu
44

Como se señaló en los comentarios, pero no como una respuesta adecuada:

En muchos casos, un enlace simbólico es la solución más fácil.

Puede crearlos fácilmente en la línea de comando (usando el lncomando con -sparámetro). También puede crearlos fácilmente utilizando una GUI: la mayoría de los exploradores de archivos (nautilus, ...) le permiten crear un enlace simbólico mediante arrastrar y soltar (como mover un archivo) mientras mantiene presionada una tecla modificadora (CTRL + MAYÚS).

Ejemplo para el uso de la línea de comando:

$ mkdir first_dir
$ ln -s ./first_dir ./second_dir
$ ls 
first_dir  second_dir

$ touch ./first_dir/test_1
$ touch ./second_dir/test_2

$ ls ./first_dir 
test_1  test_2

$ ls ./second_dir
test_1  test_2
mnagel
fuente
2

Puede hacerlo configurando un trabajo crontab:

  • Abre tu terminal y escribe crontab -e
  • Presione ipara activar el modo de inserción de su editor vim.

Puede ingresar el comando que desea que se realice allí, para que pueda copiar todos los archivos de la carpeta en otra carpeta. Por ejemplo, si desea copiar todos los archivos en el /home/user/folder_nameque /home/user/publicse debe insertar este comando en el crontabarchivo:

rsync /home/user/folder_name -r /home/user/public

Esto copiará todos los archivos en el intervalo deseado. Si desea copiar todos los archivos a las 21:30 todos los días, su edición debe ser:

 30 21 * * *  rsync /home/user/folder_name -r /home/user/public

Para obtener más información sobre crontab, consulte aquí o use man crontab.

Codito ergo sum
fuente
Probablemente usaría monturas de enlace como @PerlDuck, dado que es una forma fácil y fácil de hacerlo. No usaría cronjobs ya que esto podría conducir a todo tipo de problemas de rendimiento en su máquina si termina sincronizando una carpeta en varias ubicaciones y los archivos en la primera carpeta son muy grandes o numerosos. Mi empresa está utilizando este enfoque para emular el comportamiento de Dropbox / Drive y ahora que alcanzamos una gran cantidad de archivos, algunos de ellos con GB de tamaño, la solución simplemente ya no escala.
impermeable
2
Esto es dos directorios, no uno.
furia