versão curta
Gostaria de sincronizar um diretório remoto, cujo nome muda. Algo como (não está funcionando!):
rsync -a '[email protected]:~/.zfs/snashots/$(ls -d Automatic-* | tail -1)/foo' ~/foo
versão mais longa/fundo
Eu tenho um disco rígido acessível pela Internet (Caixa de armazenamento Hetzner), que cria regularmente instantâneos do ZFS. Posso acessar os instantâneos dentro do /.zfs/snapshots
diretório. Para cada snapshot existe um subdiretório com o nome de um padrão 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 uma dessas pastas contém um estado congelado dos meus arquivos no momento da criação do instantâneo. Gostaria de espelhar regularmente o conteúdo da pasta mais recente no meu servidor doméstico, porque esta pasta contém o estado 'congelado' mais recente dos meus arquivos. Como o padrão de carimbo de data/hora é classificável, a pasta mais recente pode, por exemplo, ser consultada pelo seguinte comando:
$ ls -d Automatic-* | tail -1
Automatic-2022-04-01T00-24-16
Existe alguma possibilidade de dizer ao rsync como obter o diretório de origem remota 'mais recente'?
Não tentei a substituição do comando do meu exemplo acima - mas acho que não funcionaria com o rsync. Porém tentei criar um link simbólico ( ln -s '/path/to/$(ls -d Automatic-* | tail -1)/foo' /target
). Porém o ln
comando resolve o caminho na criação e não no acesso.
Qualquer ideia?
Responder1
Encontrei uma solução possível para minhas necessidades. Eu escrevi um script que consulta a pasta necessária antes da sincronização:
#!/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