Como mover um arquivo e alterar seu horário de criação ao mesmo tempo?

2

Se eu mover um arquivo no Linux com o comando mv , ele moverá o arquivo, mas não alterará seu horário de criação para a hora atual. Para esse propósito, eu tenho que usar separadamente o comando touch . Então, existe um comando que faz tanto atomicamente?

Eu sou interessante em fazer isso porque estou usando textFileStreaming no modo local (usa o sistema de arquivos local em vez do HDFS) com o Spark, que requer a movimentação atômica dos arquivos no diretório de streaming. Se a hora permanece a mesma, como a hora original para o arquivo movido, o programa de streaming nem percebe isso. Ele tem certeza de que, através de um script, primeiro movo um arquivo e depois o toco para alterar seu horário. No entanto, ainda pode acontecer que o programa de streaming veja o arquivo antes de seu tempo ser modificado usando o toque e, assim, ignore-o.

    
por pythonic 27.10.2017 / 22:07

1 resposta

4

mv , se você estiver trabalhando no mesmo sistema de arquivos, não altera o arquivo em si, apenas sua localização. Para alterar o arquivo, você precisa usar outro utilitário, como touch , ou simplesmente cp do arquivo (que criará um novo arquivo com novas modificações e tempos de acesso) e rm o antigo. Se for um arquivo particularmente grande, isso é ineficiente, e é por isso que ferramentas como touch existem em primeiro lugar.

Como alternativa, se o problema for atomicidade, você pode mover o arquivo para um local temporário, touch it, e então movê-lo para o local de descanso final.

    
por 27.10.2017 / 22:31

Tags