Rsyncing arquivos do servidor para a máquina local automaticamente

0

Atualmente, tenho um trabalho crontab em execução na minha máquina todas as sextas-feiras às 3:00 como um método de backup. A tarefa executa um script bash que executa um comando rsync para sincronizar arquivos do servidor para meu disco rígido externo. O comando rsync usa o sinalizador --include-from para obter uma lista de arquivos para o rsync, como *.cpp *.h etc.

Infelizmente, estou ficando sem espaço no disco rígido e quero substituí-lo por outro com a mesma sala de armazenamento. Se eu apenas continuar o rsync como está, eu não teria ganho nada porque o segundo disco será idêntico ao primeiro, e estará cheio.

Idealmente, gostaria de rsync apenas arquivos de --include-from E mais recente do que a data em que eu substituí meus discos externos (por exemplo, eu substituir o meu disco hoje, então eu quero rsync os arquivos na minha lista de arquivos incluídos < em> AND mais recente que 3/27/2015). Dessa forma, será apenas uma continuação do primeiro disco.

Tudo o que posso encontrar on-line usa o método find para primeiro obter uma lista de arquivos mais recentes que a data e, em seguida, canalizar essa lista para rsync . Mas como isso tudo está acontecendo na minha máquina local, como posso usar find da minha máquina local para obter a lista de arquivos no servidor? Existe uma opção melhor, talvez um sinalizador rsync que verifica a data da última modificação do arquivo?

Obrigado

    
por Amit 27.03.2015 / 20:28

2 respostas

1

Após o último backup usando o disco antigo, crie um registro de data e hora e, em seguida, faça backup dos arquivos após esse registro de data e hora. Você usará find e o --newer sinalizador para listar arquivos mais novos que o registro de data e hora, depois o --file-from sinalizar para rsync para especificar essa lista de arquivos para cópia.

Veja como:

Etapa 1: Antes de trocar para a nova unidade: touch /someplace/timestamp.txt

Etapa 2: altere para o novo disco.

Etapa 3: modifique o script do cronjob para fazer algo como:

find BLAH BLAH BLAH -newer /someplace/timestamp.txt -type f -print0 >/tmp/list rsync -avP --inplace --file-from=/tmp/list --from0 desthost:/dest/place

NUNCA altere, toque ou modifique o arquivo /someplace/timestamp.txt.

    
por 28.03.2015 / 22:37
1

presumivelmente você tem acesso ssh ao servidor? então

  1. : conceda ao servidor acesso ssh à sua máquina local e use algo como ssh you@server 'find ... | xargs -0 -I {} rsync "{}" you@yourmachine:/media/dir'
  2. ou: crie uma lista de arquivos no servidor usando find , copie esse arquivo para sua máquina local e execute o rsync para obter esses arquivos

Eu tenho que dizer que não gosto disso. Para a recuperação total de arquivos, você ainda precisará dos discos de backup, do antigo e do novo, e a recuperação poderá ser complexa. Posso pensar em várias maneiras de melhorar essa estratégia, mas a mais fácil no seu caso seria obter um disco novo, porém maior , em vez de um novo que seja do mesmo tamanho. Certamente o custo extra não é tão significativo?

    
por 28.03.2015 / 19:28

Tags