O registro de data e hora do arquivo não é alterado mesmo com o toque

1

Eu tenho o seguinte problema. Eu tenho um script bash que usa wget para obter alguns arquivos do servidor de compilação e, em seguida, scp para o sistema de produção: Aqui está o trecho relevante:

#Several of these lines
wget -nv -O birt_reports.zip "http://buildserver:8111/guestAuth/repository/download/bt6/.lastFinished/birt_reports.zip"

#files in the for loop left out for simplicity
for upload_file in "birt_reports.zip"; do

    scp -B -i /root/$keyfile  $upload_file $user@gateway:/home/$user/deploy_staging
    touch $upload_file
done

Mesmo com o toque, a hora mostrada em ls -l do diretório é a hora em que o arquivo foi criado pela primeira vez. Se eu fizer o wget fora do script bash ou o toque fora do script bash, a hora é atualizada corretamente.

Qual poderia ser o problema?

    
por Yishai 03.09.2010 / 01:32

3 respostas

1

Usando o comando abaixo, é necessário definir o registro de data e hora do arquivo para o datetime atual do seu sistema:

touch -t 'date +%y%m%d%H%M.%S' /path/to/filename

Você pode tentar em vez do comando de simples toque.

Além disso, quando você executa o script bash, execute:

bash -xv your_bash_script.bash

tente também usar o caminho completo dos seus comandos, para verificar o caminho completo do comando do:

whereis touch

Como você poderia estar usando isso sem um ambiente de shell usando o caminho completo, é mais recomendado ter certeza de que ele executará todos os comandos sem problemas.

    
por 03.09.2010 / 02:22
1

talvez /bin/touch -m $upload_file seja mais adequado, pois altera a hora da modificação para a hora atual.

    
por 03.09.2010 / 07:07
0

O arquivo está sendo corretamente scp? (Não posso comentar o seu post de pergunta)

Se não, então eu acho que você está perdendo algo para o caminho do arquivo enviado dentro do loop for para ambos os comandos. Prix aponta a maneira de verificar os comandos reais.

    
por 03.09.2010 / 05:00