Ajuda com o uso de rsync ou cpio para fazer um backup incremental [duplicado]

0

Estou tentando fazer um backup incremental de todos os arquivos na minha caixa NAS que foram modificados nas últimas 24 horas (ou mais, pode ser mais flexível).

Estou usando o PuTTY para conectar-se por meio do SSH a um ReadyNAS 102 que possui o BusyBox v1.20.2 e usa o Bash.

Eu usei originalmente:

find . -mtime -2 | cpio -cm /media/USB_FLASH_2

E depois tentei:

find . -mtime -2 | cpio -o | { cd /media/USB_FLASH_2 && cpio -imd; }

que me deu o erro:

BusyBox v1.20.2 (Debian 1: 1.20.0-7) binário multi-chamada.

Uso: cpio [-dmvu] [-F FILE] [-H newc] [-tio] [EXTR_FILE] ...

Extraia ou liste arquivos de um arquivo cpio ou crie um arquivo usando a lista de arquivos em stdin

Modo de operação principal: -t List -i Extrai EXTR_FILEs (ou todos) -o Cria (requer -H newc) -d Cria diretórios principais -m Preserva mtime -v Verbose -u Sobrescreve -F FILE Input (-t, -i, -p) ou arquivo de saída (-o) -H newc Formato de arquivo.

    
por user62094 07.03.2014 / 16:28

2 respostas

3

Ótimo! Rsync é a sua fera e vale bem a curva de aprendizado (há muitas opções). Eu não me incomodaria em me preocupar com seu find modificado nos últimos 2 dias, , já que o rsync irá verificar se há modificações (o que alcança mais ou menos o mesmo, reduz o que é transferido e apenas copia arquivos que foram atualizados em comparação com o destino).

rsync -va srcdir destdir

Eu adicionei o -v apenas para verbosidade para que você possa ver o que está acontecendo. se você estava copiando remotamente (através da internet para um computador remoto), então --progress mostrará progresso durante a cópia de cada arquivo individual.

Se você quiser corresponder exatamente ao seu diretório, por exemplo. Se você quiser que o rsync remova os arquivos no destino que não estão mais na origem (porque eles foram excluídos), isso também é possível com --delete , mas eu acho que você está criando um arquivo, então eu não usei isso no exemplo.

Outras opções dependem dos seus requisitos específicos (seguir links? etc). Vou deixar isso para você escolher man rsync

Você pode incluir listas de inclusão, listas de exclusão, bem como copiar uma área de desenvolvimento que possa conter arquivos de backup dos editores.

Resumo das opções de arquivamento

-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)
-r recursive
-l copy symbolic links as symbolic links
-p preserve attributes
-t preserve times
-g preserve group
-o preserve owner
-D preserver devices (must be super user to work)

Se você está copiando entre machiens, então é necessário considerar a sincronização de tempo ou a correspondência de tempo difuso, mas você está copiando para o cartão SD em um computador, portanto, não precisa se preocupar.

Se você realmente quiser usar find , então rsync poderá obter uma lista de arquivos de um arquivo com --files-from , caso em que a opção -r (recursiva) do modo de arquivamento não será respeitada.

find . -mtime 2 | rsync -av --files-from - srcdir destdir

Mas, por favor, leia a página de manual, pois --files-from tem efeitos colaterais e achei que havia muito a ser copiado para essa resposta.

Se o seu destino puder ser atualizado em algum outro lugar, você poderá adicionar

-u, --update                skip files that are newer on the receiver
    
por 07.03.2014 / 16:43
0

Não está claro para onde você quer que a saída seja enviada, mas:

find . -mtime -2 | cpio -co > whatever.cpio

Deve funcionar. Aparentemente -m "não tem sentido com" -o (note que não sei porque você quer -c aqui, mas eu deixei isso dentro). Se você quiser que o material seja espelhado em um diretório (ou seja, nenhum arquivo cpio), use -p com um argumento:

find . -mtime -2 | cpio -mp /backup/path
    
por 07.03.2014 / 16:45