Acceso SSH al directorio 'dinámico' remoto

Acceso SSH al directorio 'dinámico' remoto

version corta

Me gustaría sincronizar un directorio remoto, cuyo nombre cambia. Algo como (¡no funciona!):

rsync -a '[email protected]:~/.zfs/snashots/$(ls -d Automatic-* | tail -1)/foo'  ~/foo

versión más larga/fondo

Tengo un disco duro con acceso a Internet (Caja de almacenamiento Hetzner), que crea periódicamente instantáneas ZFS. Puedo acceder a las instantáneas dentro del /.zfs/snapshotsdirectorio. Para cada instantánea hay un subdirectorio que lleva el nombre de un patrón como Automatic-<timestamp>:

$ ls /.zfs/snapshots
Automatic-2021-10-01T00-25-22   Automatic-2021-12-01T00-23-14   Automatic-2022-02-01T00-21-38

Cada una de estas carpetas contiene un estado congelado de mis archivos en el momento de la creación de la instantánea. Me gustaría reflejar periódicamente el contenido de la carpeta más reciente en mi servidor doméstico, porque esta carpeta contiene el último estado "congelado" de mis archivos. Debido a que el patrón de marca de tiempo se puede ordenar, la carpeta más reciente podría, por ejemplo, consultarse mediante el siguiente comando:

$ ls -d Automatic-* | tail -1
Automatic-2022-04-01T00-24-16

¿Existe alguna posibilidad de decirle a rsync cómo obtener el directorio de origen remoto "más reciente"?

No he probado la sustitución de comandos de mi ejemplo anterior, pero creo que no funcionaría con rsync. Sin embargo, he intentado crear un enlace simbólico ( ln -s '/path/to/$(ls -d Automatic-* | tail -1)/foo' /target). Sin embargo, el lncomando resuelve la ruta en el momento de la creación y no en el acceso.

¿Alguna idea?

Respuesta1

Encontré una posible solución para mis necesidades. Escribí un script que consulta la carpeta requerida antes de la sincronización:

#!/bin/bash
LATEST_SNAPSHOT=$(ssh xxx.your-storagebox.de 'ls .zfs/snapshot/' | tail -1)
rsync -a "xxx.your-storagebox.de:.zfs/snapshot/${LATEST_SNAPSHOT}" /target

información relacionada