Copie os arquivos mais recentes do diretório

0

Eu tenho os seguintes arquivos em um diretório data : myfile1.txt myfile2.jnx myfile3.sur .

Eu uso o comando abaixo para copiar o conteúdo do diretório acima para outro local:

scp data/* remotehost.example.com:/data/ 

No entanto, encontro um problema quando o conteúdo do diretório é alterado dinamicamente após a emissão do comando. Como o arquivo myfile3.sur alterado para myfile3.sur1 por outro aplicativo que trabalha nesse diretório em segundo plano enquanto o primeiro arquivo ainda está sendo copiado.

Sei que o shell traduziria * para todos os nomes de arquivos nesse diretório quando eu acionasse meu comando. Existe uma maneira de dizer ao Linux para incluir os arquivos alterados / atualizados também?

    
por Jeyaprakash 30.04.2018 / 18:04

2 respostas

1

Embora essa não seja a resposta direta, sugiro usar rsync para isso:

    
por 30.04.2018 / 18:51
0

Para garantir que o arquivo desejado com nome como está e o conteúdo como está será transferido, crie um script com a seguinte lógica:

mkdir data/temp.$$
cp data/* data/temp.$$
scp data/temp.$$/* remotehost.example.com:/data/ 
rm data/temp.$$

Copiar os arquivos para um diretório temporário no mesmo servidor garantirá que a última transferência obtenha o arquivo.

Note que se os arquivos forem constantemente alterados por processos em segundo plano, tente fazer dependências com esses processos.

    
por 03.05.2018 / 10:36