Qual é a maneira recomendada de automatizar uma tarefa no Linux?

3

Eu ainda sou meio novo no Linux, mas aqui está o que estou tentando fazer.

Eu preciso copiar todos os subdiretórios e arquivos de um diretório para outro em até 5 minutos, com os dados antigos sendo substituídos automaticamente pelos novos dados.

Eu também gostaria que isso fosse executado na inicialização. Existe alguma maneira de fazer isso? Em caso afirmativo, qual programa eu precisaria agendar a automação e qual seria a linha de comando que eu precisaria.

    
por Niphoet 11.06.2010 / 01:06

2 respostas

5

Eu faria a cópia real com

rsync --archive --delete "fromdir/" "todir/"

Isso será mais eficiente do que usar cp , pois rsync apenas copia arquivos que foram alterados e, mesmo assim, copia apenas a alteração em si, em vez do arquivo inteiro.

Se você preferir que não exclua arquivos em todir que foram excluídos em fromdir , deixe de fora a opção --delete .

A opção --archive basicamente diz para preservar o estado dos arquivos, bem como seu conteúdo. Observe que, se você tiver links simbólicos em dir1 , copiará os links e não os arquivos aos quais eles se vinculam. Usar esse sinalizador com rsync é semelhante ao uso de cp -a .

Certifique-se de usar a barra de fechamento em fromdir/ : isso diz a rsync para copiar o conteúdo desse diretório, ao invés do próprio diretório . Em outras palavras, se você deixar de fora a% final / , você acabará com

todir/
todir/stuff
todir/fromdir/
todir/fromdir/morestuff

em vez de

todir/
todir/morestuff
    
por 11.06.2010 / 01:41
3

Você precisa colocar um script no cron, como fazer isso, leia aqui: link

Em vez de um script, você poderia digitar um comando para executar no seu crontab, seria parecido com:

*/5 * * * * cp -r /fromdir /todir

adicione também ao / etc / crontab a seguinte linha para exexu-lo no boot:

@reboot root cp -r /fromdir /todir
    
por 11.06.2010 / 01:14