Como copiar somente timestamps, ou "Eu deveria ter usado cp -p"

3

Eu copiei uma quantidade muito grande de dados usando cp -r .

Olhando agora, percebi que isso significa que perdi meus tempos de modificação de arquivos. Eu deveria ter usado cp -rp .

Minha estrutura de diretórios e arquivos não foram alterados: existe alguma maneira de copiar apenas os atributos / timestamps agora? Estou pensando que rsync pode ser útil.

    
por Richard 24.05.2016 / 05:12

2 respostas

3

Isso funcionou bem para mim:

rsync -vrt --size-only /src /dest

O comando --size-only compara arquivos apenas com base no tamanho, o que foi praticamente inalterado para mim. O -t copia os timestamps.

    
por 24.05.2016 / 06:15
2

Você pode fazer isso com find e touch .

cd destination
find -depth -exec touch -r /path/to/source/{} {} \;

A opção -depth permite que os tempos dos diretórios sejam definidos após o seu conteúdo ter sido definido. Isso pressupõe que seu find interpola {} quando é uma subseqüência de um argumento. Se isso não acontecer, invoque um shell:

find -depth -exec sh -c 'for x; do touch -r "$0/$x" "$x"' /path/to/source {} +

Para copiar os tempos de acesso, execute touch -a … também.

find -depth -exec touch -a -r /path/to/source/{} {} \; -exec touch -r /path/to/source/{} {} \;
    
por 25.05.2016 / 02:12

Tags