Como posso manter o mtime de arquivos e diretórios quando eu usar rsync ou cp? Para uso no Backup / Incremental Backup

1

Eu tenho uma nova caixa NAS e, depois de examinar várias soluções de backup, descobri que fiz isso manualmente com o PuTTy para trabalhar da melhor maneira possível.

Depois de entrar na caixa através do PuTTy como root, primeiro eu preciso copiar o disco inteiro em um HDD USB (bem, uma vez por semana). Eu tenho usado:

cp -Rp /data/Backup /media/USB_HDD_3/Backup

Eu tentei com rysnc -a e obtive resultados semelhantes, pois os próprios arquivos mantêm o mtime, mas os diretórios não.

Então, todos os dias, farei um backup incremental. Para o qual eu tenho construído:

find . -mtime -2 -exec cp -Rp {} /media/USB_FLASH_1/ \;

Novamente, tentei substituir cp - Rp por rsync -a sem sucesso. Acabei de receber todo o backup transferido, como se nem sequer olhasse para o mtime.

Sou bastante novo no Linux e no Unix, por isso adaptei a maior parte das coisas que encontrei na net e tentei juntá-las, o que provavelmente é o motivo pelo qual não funciona.

    
por user62094 06.03.2014 / 12:04

2 respostas

2

rsync -a deve funcionar se você simplesmente fizer:

rsync -av /data/Backup /media/USB_HDD_3

Se não estiver preservando os registros de data e hora do diretório, este é provavelmente um bug na versão rsync . Como alternativa, você poderia experimentar o GNU cpio :

find . -mtime -2 -print0 | cpio -0mdp /media/USB_FLASH_1

Ou mais portável (não lida com nomes de arquivos com novas linhas):

find . -mtime -2 | cpio -mdp /media/USB_FLASH_1

Observe que BusyBox builds geralmente contêm versões reduzidas das várias ferramentas. Mesmo quando totalmente construído não é completamente compatível com POSIX, também cpio não está mais no padrão POSIX . É provável que sua versão de BusyBox seja criada sem suporte para a opção -p . Você precisaria usar um cpio com essas opções ativadas.

Eu testei o acima com o GNU cpio . Não consigo encontrar um link para o antigo padrão, mas provavelmente qualquer coisa compatível com ele suportará todas essas opções, exceto -0 .

    
por 06.03.2014 / 14:09
1

rsync precisa da opção de atualização para evitar a transferência de todos os arquivos, man rsync fornece a página de manual e as opções que você encontrará,

    -u, --update                skip files that are newer on the receiver
        --inplace               update destination files in-place

Para ajudar a entender o que está sendo feito, você pode usar a opção -v para o modo detalhado.

-v, --verbose This option increases the amount of information you are given during the transfer. By default, rsync works silently. A single -v will give you information about what files are being transferred and a brief summary at the end. Two -v options will give you information on what files are being skipped and slightly more information at the end. More than two -v options should only be used if you are debugging rsync.

  Note that the names of the transferred files that are output are done using
  a default --out-format of "%n%L", which tells you just the name of the file
  and, if the item is a link, where it points.  At the  single  -v  level  of
  verbosity,  this  does not mention when a file gets its attributes changed.
  If you ask for an itemized  list  of  changed  attributes  (either  --item‐
  ize-changes or adding "%i" to the --out-format setting), the output (on the
  client) increases to mention all items that are changed in  any  way.   See
  the --out-format option for more details.
    
por 06.03.2014 / 12:56