Como escrever o comando rsync para fazer backup de tudo, exceto arquivos específicos de hardware

2

Eu tenho um servidor de produção VPS que serve aplicativos da web que eu faço para os clientes. Eu tenho um trabalho cron rsync em execução no meu servidor dev que faz um backup diário de todo o servidor de produção.

#!/bin/sh

RSYNC=/usr/bin/rsync
SSH=/usr/bin/ssh
KEY=/root/backup-rsync-key
RUSER=root
RHOST=xxx.xxx.xxx.xxx
LPATH=/home/backup
RPATH=/

$RSYNC -avz -e "$SSH -i $KEY" $RUSER@$RHOST:$RPATH $LPATH

Funciona bem, mas apresenta erros do tipo:

...
rsync: read errors mapping "/sys/module/yenta_socket/parameters/disable_clkrun": No data available (61)
ERROR: sys/module/yenta_socket/parameters/isa_probe failed verification -- update discarded.
rsync: read errors mapping "/sys/module/yenta_socket/parameters/isa_probe": No data available (61)
ERROR: sys/module/yenta_socket/parameters/pwr_irqs_off failed verification -- update discarded.
rsync: read errors mapping "/sys/module/yenta_socket/parameters/pwr_irqs_off": No data available (61)
ERROR: sys/power/state failed verification -- update discarded.
rsync: read errors mapping "/sys/power/state": No data available (61)
rsync error: some files could not be transferred (code 23) at main.c(1298) [generator=2.6.8]

(isso é apenas um trecho dos erros)

Como posso fazer backup de tudo, exceto das coisas que não são de backup?

Obrigado

    
por Xoundboy 20.02.2011 / 17:24

3 respostas

7

Você precisa excluir arquivos desnecessários.

O bom começo é -x

-x, --one-file-system       don't cross filesystem boundaries

(do man rsync (1)). Isso exclui sistemas de arquivos que você não especificou explicitamente. Lembre-se de que você precisa listar todos os pontos de montagem que deseja incluir. mount dá lista para você.

Outra opção útil é --exclude :

--exclude=PATTERN       exclude files matching PATTERN
--exclude-from=FILE     read exclude patterns from FILE

Seu comando seria algo como

rsync -avzx --exclude=/tmp --exclude=/var/cache -e "$SSH -i $KEY" $RUSER@$RHOST:$RPATH $LPATH
    
por 20.02.2011 / 17:34
1

Você pode excluir arquivos específicos usando a opção --exclude, como '--exclude = / sys'. Além disso, você pode usar a opção --exclude-from para excluir arquivos listados em um arquivo específico.

    
por 20.02.2011 / 17:35
0

Dê uma olhada na opção de linha de comando --exclude-from que permite definir um arquivo que contém uma lista de arquivos e diretórios que o rsync deve excluir.

    
por 20.02.2011 / 17:34