Como truncar os caminhos de backup no rsnapshot

5

Não tenho certeza se o título é realmente coorect. Eu tenho uma linha no meu rsnapshot.conf

backup  [email protected]:/mnt/rsnapshot/      srv01/

Portanto, o rsnapshot cria um diretório RSNAPSHOT_ROOT/daily.0/srv01/mnt/rsnapshot e coloca os arquivos de backup lá. Para mim, a parte /mnt/rsnapshot é desnecessária; Eu prefiro ter meus arquivos de backup diretamente em RSNAPSHOT_ROOT/daily.0/srv01/ . Existe alguma maneira de conseguir isso?

    
por andreas-h 28.01.2013 / 00:25

3 respostas

10

rsnapshot usa o sinal --relative de rsync para preservar as informações do nome do caminho. Na maioria dos casos, você provavelmente deseja manter (pelo menos algumas) essas informações, especialmente ao fazer backup de diretórios locais. No entanto, no seu caso, você não precisa manter o prefixo do caminho principal.

Com versões razoavelmente recentes de rsync (v.2.6.7 +), você pode controlar explicitamente a parte do prefixo do nome de caminho que --relative salva, inserindo um ./ no ponto de corte desejado. O ./ não altera efetivamente o nome do caminho, mas informa rsync que você deseja que --relative mantenha apenas a parte do nome do caminho que segue o ./ . Como você deseja cortar todo o nome do caminho, basta anexar ./ no final do caminho de origem, desta forma:

backup  [email protected]:/mnt/rsnapshot/./  srv01/

EDITAR

Ok, parece que o truque ./ não funcionará nesse caso, pois rsnapshot retira o / . Em vez disso, você deve ser capaz de desativar a opção --relative por cada ponto de backup, adicionando uma quarta coluna à sua linha backup , assim:

backup  [email protected]:/mnt/rsnapshot/  srv01/  +rsync_long_args=--no-relative

O +rsync_long_args informa rsnapshot para anexar à sua opção rsync_long_args existente, apenas para o ponto de backup atual. Ao anexar --no-relative a rsync_long_args , você obtém o efeito desejado de desativar --relative .

    
por 28.01.2013 / 03:58
4

A primeira sugestão de Steven para usar ./ realmente funciona com o rsnapshot, você só precisa colocá-lo duas vezes:

backup  [email protected]:/mnt/rsnapshot/././  srv01/

O Rsnapshot irá remover a última barra, mas o primeiro ponto funciona para o rsync.

    
por 02.03.2016 / 18:40
3

Esse comportamento é realmente controlado pelo --relative flag do rsync. Citando o manual do rsync :

-R, --relative

Use relative paths. This means that the full path names specified on the command line are sent to the server rather than just the last parts of the filenames. This is particularly useful when you want to send several different directories at the same time. For example, if you used this command:

rsync -av /foo/bar/baz.c remote:/tmp/

... this would create a file named baz.c in /tmp/ on the remote machine. If instead you used

rsync -avR /foo/bar/baz.c remote:/tmp/

then a file named /tmp/foo/bar/baz.c would be created on the remote machine, preserving its full path. These extra path elements are called "implied directories" (i.e. the "foo" and the "foo/bar" directories in the above example). [...]

Então, no seu rsnapshot.conf , encontre a linha que começa com rsync_long_args . Por padrão, --delete --numeric-ids --relative --delete-excluded deve estar presente. Remover a opção --relative deve levar aos resultados desejados.

    
por 28.01.2013 / 01:08

Tags