Como salvar e restaurar as datas criadas / modificadas do arquivo?

4

Eu copiei vários arquivos de um servidor para outro e agora as datas dos arquivos são redefinidas para a atual.

Como fazer o backup das datas dos arquivos no servidor antigo e restaurá-las no novo (sem transferir novamente todos os arquivos)?

    
por Vi. 02.12.2012 / 20:39

4 respostas

7

Aqui estão os scripts para salvar e restaurar todos os {c, n, a} horários dos arquivos e diretórios:

Salvar:

find / -mount -print0 | perl -ne 'INIT{ $/ = "
cat dates.dat |  perl -ne 'INIT{ $/ = "
find / -mount -print0 | perl -ne 'INIT{ $/ = "
cat dates.dat |  perl -ne 'INIT{ $/ = "%pre%";} chomp; m!^([0-9]+)/([0-9]+)/([0-9]+)/(.*)!s or next; my ($ct, $mt, $at, $f) = ($1, $2, $3, $4); utime $at, $mt, $f;'
"; use File::stat;} chomp; my $s = stat($_); next unless $s; print $s->ctime . "/" . $s->mtime . "/" . $s->atime ."/$_%pre%"; ' > dates.dat
";} chomp; m!^([0-9]+)/([0-9]+)/([0-9]+)/(.*)!s or next; my ($ct, $mt, $at, $f) = ($1, $2, $3, $4); utime $at, $mt, $f;'
"; use File::stat;} chomp; my $s = stat($_); next unless $s; print $s->ctime . "/" . $s->mtime . "/" . $s->atime ."/$_%pre%"; ' > dates.dat

Restaurar:

%pre%

Ele não define ctime (tempo de alteração de notas) embora.

    
por 03.12.2012 / 01:24
2

Você pode usar stat para obter as datas na origem e touch para modificá-las no destino.

    
por 02.12.2012 / 21:11
2

Eu tenho um script Python para fazer isso em link

No servidor original, execute:

save-file-attrs.py save scp .saved-file-attrs <user>@<dest-server>:<path>

No servidor de destino, execute:

cd <path> save-file-attrs.py restore

Isso restaurará os atributos do arquivo.

    
por 03.12.2014 / 18:15
0

Se os nomes dos arquivos não forem muito estranhos, e eu só precisar restaurar o mtime, eu uso este & solução suja:

find . -type f -exec stat -c 'touch --no-create -d "%y" "%n"' {} \;

Isso cria um script na origem e esse script pode ser executado no destino para restaurar os timestamps do mtime.

    
por 20.10.2013 / 17:47