como informar ao rsync para preservar o registro de data e hora em arquivos quando a árvore de origem tiver um ponto montado

30

Related to this question

Breve descrição do problema:

Quando a árvore de origem tem um ponto montado dentro dela, os carimbos de hora nos arquivos dentro desse ponto montado quando copiados para a árvore de destino não são preservados, mesmo quando se usa a opção -a

Descrição detalhada:

Suponha que esta é a árvore de fontes:

                       /home/                           /home/
                         |                                |
                        me/                             BACKUP/
                         |                                |
                    +----+----------+                +----+-------+
                    |    |          |                |    |       |
                 data/  foo.txt    boo.txt         data/ foo.txt boo.txt
                    |                                |
                   a.txt                           a.txt

onde data/ acima está montado disco USB externo. Tudo é ext4 sistema de arquivos. Tudo na origem é de propriedade de meu me .

BACKUP também era um ponto de montagem, o disco USB de backup.

Após emitir este comando rsync -av --delete /home/me/ /home/BACKUP/ , descobri que /home/BACKUP/data/ e tudo abaixo dele tem o registro de data e hora atual, como se esses arquivos tivessem sido criados agora, e não o registro de data e hora nos arquivos em /home/me/data/ . Outros arquivos e pastas fora de data tiveram o carimbo de data / hora preservado OK.

A pergunta é: Como usar rsync na configuração acima para dizer para preservar os timestamps em todos os arquivos e pastas, mesmo em arquivos e pastas em um ponto montado?

Estou usando:

>uname -a
Linux 3.5.0-17-generic #28-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux

>rsync -v
rsync  version 3.0.9  protocol version 30
    
por Nasser 17.01.2013 / 06:09

3 respostas

34

de man rsync :

   -t, --times                 preserve modification times

EDIT - para melhorar esta resposta, uma vez que não é imediatamente óbvio porque isto não ajudou OP:

OP está copiando arquivos de um sistema de arquivos para outro e querendo preservar c-time . A maioria das pessoas entende c-time como "tempo de criação", o que é incorreto na maioria dos sistemas UNIX / Linux (sistemas de arquivos do Windows rastreiam tempos de "criação" ou "nascimento").

Na maioria das vezes, no UNIX e Linux, c-time é o registro de data e hora usado para registrar o último inode ' C ' hange. Um inode é alterado se algum dos seus atributos for atualizado:

OP não pode preservar o c-time de seus arquivos quando eles são colocados em um novo sistema de arquivos. A criação desses arquivos nos novos sistemas de arquivos é uma das condições listadas acima (criação de inode / file).

/ EDIT

    
por 17.01.2013 / 07:54
4

como o hr3miller já disse, -a (ou --arquivo) é igual a -rlptgoD e já inclui o tempo de sincronização.

No entanto, quando o rsync copia dados para, por exemplo. uma montagem NFS / FAT32 / NTFS em que a preservação do usuário e do proprietário falha, o rsync não tentará definir a hora. O Rsync irá avisar com algo como

rsync: chown "/mnt/backup/postgres/hourly.0/primary/var" failed: Operation not permitted (1)

Portanto, deixe de fora o usuário e o grupo usando

-rlptD

em vez de

-rlptgoD

Use isso apenas quando não estiver preservando o proprietário e o grupo for uma opção para você. Observe que a preservação de links simbólicos e outros recursos também pode desencadear esse comportamento. Você terá que passar pela página man para cada recurso de rsync (-r -l -p -t -g -o -D) que você deseja fazer backup.

    
por 10.09.2017 / 14:17
-2

Eu uso rsync -az e certeza que me preserva o tempo de modificação. Eu verifiquei isso agora mesmo.

    
por 17.10.2016 / 08:12

Tags