Existe uma maneira de forçar o sshd a chamar fsync () no final de um upload de scp?

1

Eu tenho um servidor Debian baseado em Linux que aceita uploads de arquivos via scp, e este servidor tende a ser desligado de repente de tempos em tempos. Se a perda de energia ocorrer logo após o término de um carregamento scp, isso pode fazer com que o (s) arquivo (s) carregado (s) apareçam truncados (ou ausentes) na próxima vez que a energia for restaurada.

Existe uma maneira de forçar o sshd (ou qualquer processo que esteja gravando os dados carregados para o disco ... eu acho que é sshd) a chamar o fsync () quando o upload estiver completo, a fim de minimizar a chance de perda de dados devido a uma queda de energia?

Como um exemplo do tipo de coisa que estou procurando, este servidor também aceita uploads de arquivos via Samba / CIFS, e descobri que adicionar as seguintes linhas à seção [globals] do meu smb.conf ajuda a proteger contra perda de dados lá:

strict sync = yes
sync always = yes

Então, estou procurando algo análogo, talvez algo que eu possa colocar em / etc / sshd_config?

Obrigado!

    
por Jeremy Friesner 30.06.2010 / 22:51

2 respostas

1

Não sei como fazer o sshd fazer isso, embora a solução de Kyle seja certamente válida (supondo que você esteja usando chaves e um agente, e aguarde alguns segundos entre o término do upload e a solicitação sync ).

Se você é paranoico com a perda de dados, sugiro investir em um no-break e em um cartão RAID com um backup de bateria.
Se o custo for um problema, você pode montar o sistema de arquivos de destino com a opção sync (força todas as gravações a ocorrerem de maneira síncrona).

A montagem com sync set será um sucesso de desempenho, mas quando sua transferência estiver concluída você saberá que os dados estão todos no disco (sujeitos aos caprichos dos caches do controlador de disco, que se você estiver usando um controlador RAID decente pode ser um atraso perceptível - veja acima:).

    
por 30.06.2010 / 23:30
1

Um dos utilitários principais do GNU é o comando sync . Então você pode apenas ter seu script de upload ssh em e executar esse comando no final. Pode haver algo mais limpo que isso.

    
por 30.06.2010 / 23:08