SSH 访问远程“动态”目录

SSH 访问远程“动态”目录

简洁版本

我想同步名称发生变化的远程目录。例如(不工作!):

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

较长版本/背景

我有一个可访问互联网的硬盘(Hetzner 储物盒),它会定期创建 ZFS 快照。我可以访问目录中的快照/.zfs/snapshots。每个快照都有一个以如下模式命名的子目录Automatic-<timestamp>

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

每个文件夹都包含创建快照时我的文件的冻结状态。我希望定期将最新文件夹的内容镜像到我的主服务器,因为此文件夹包含我的文件的最新“冻结”状态。由于时间戳模式是可排序的,因此可以通过以下命令查询最新文件夹:

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

是否有可能告诉 rsync 如何获取“最新”的远程源目录?

我还没有尝试过上面示例中的命令替换 - 但我认为这不适用于 rsync。但是我尝试过创建一个符号链接 ( ln -s '/path/to/$(ls -d Automatic-* | tail -1)/foo' /target)。但是该ln命令在创建时解析路径,而不是在访问时解析路径。

任何想法?

答案1

我找到了一个可以满足我需求的解决方案。我编写了一个脚本,它在同步之前查询所需的文件夹:

#!/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

相关内容