SSH 存取遠端「動態」目錄

SSH 存取遠端「動態」目錄

簡潔版本

我想同步一個名稱更改的遠端目錄。就像是 (不工作!):

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

較長版本/背景

我有一個可上網的硬碟(赫茨納收納盒),它會定期建立 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

相關內容