Eu tinha um disco rígido quase total (principalmente /home
). Eu instalei uma nova unidade maior, copiei /home
para ela e continuei com a minha vida.
Isso foi em 17/05/2013. Eu sei que foi em 17/05/2013 porque eu esqueci o sinalizador de arquivamento quando copiei tudo, então cada arquivo no servidor que não foi atualizado desde então é datado de 17/05/2013.
Ainda tenho o diretório /home
original ( /oldhome
) com as datas corretas de última modificação.
Eu preciso de um ponto de partida para escrever um script que substitua cada arquivo em /home
datado de 17/05/2013 pelo arquivo original correspondente de /oldhome
(com a data correta intacta). Eu gostaria apenas de substituir os arquivos datados de 17/05/2013, pois alguns arquivos que estavam presentes naquela data foram subseqüentemente atualizados e eu, é claro, quero manter as versões atualizadas desses arquivos.
A contagem de arquivos em /oldhome
é ~ 63K
Pensamentos sobre por onde começar?
EDITAR
OK. Com base no comentário de Theophrastus abaixo (obrigado), posso começar com:
... de dentro de /home
:
find -type f -newermt 2013-5-17 ! -newermt 2013-5-18 -print0 | xargs -I % -0 rsync -avzI --dry-run /oldhome% /home%
... que acho que pode estar quase aqui. A saída de find
tem um período inicial que quebra o caminho no comando rsync (obtemos /oldhome./directory/filename /home./directory/filename.ext
quando tudo está concatenado. Posso reestabelecer a instrução find
de alguma forma para deixar de fora o período inicial? O objetivo é identificar arquivos em /home
com a data de 5/17/2013 e substituí-los por uma cópia de /oldhome
- não há arquivos em /oldhome
posteriores a 17/05/2013.
Tags files