Como faço para compactar um diretório em um servidor web Unix e enviá-lo por e-mail em uma base sheduled?

2

Depois de ouvir vários criadores de sites de alto perfil ficarem restritos recentemente após falhas de hardware em seus servidores, gostaria de implementar uma estratégia de backup em meus sites.

Eu tenho o cPanel disponível para mim, mas não há facilty para agendar backups e enviá-los por e-mail para mim. Existe a facilidade de "crontab", mas eu não sou um usuário experiente do Unix, então não sei como usar isso.

O que eu gostaria de poder fazer é criar um backup do meu diretório pessoal inteiro, compactando-o ao mesmo tempo e enviando um e-mail notificando que esse backup foi feito e posso fazer o download e arquivá-lo.

Por favor, alguém pode me fornecer algumas dicas sobre como eu faria uma coisa dessas?

Felicidades, Ian.

    
por Ian 14.12.2009 / 13:16

1 resposta

2

Para iniciar os comandos que você deseja aprender a usar; tar , mail e scripts básicos de shell.

O script da shell

Um exemplo muito rápido e sujo de como fazer isso seria o seguinte:

#! /bin/sh

# The following command creates a GZIP'd version of your folder. -c = create
# -z = use gzip, -f = file name of backup file
# You can use j instead of z to use bzip2. It's slightly slower but compresses
# more. Beware that images, videos and such do not compress well.
cd /PATH/NOT/IN/HOME/FOLDER; tar czf backup.tgz /PATH/TO/HOME/FOLDER

# If you only have access to your home folder you can modify the command to
# look like so, regular expressions are your friend here.
tar czf backup.tgz FOLDER1 FOLDER2 FILE3

# The mail program may be disabled and uses the local SMTP server so depending
# on your mail setup it may never even get to your inbox because it is flagged
# as unverified mail (Spam). For example, Gmail or a domain not hosted on that
# same server will almost most certainly not work. If this fails to work you
# can create a PHP or Python script that actually allows you to set the SMTP
# server. An alternative is to have this script echo some output and have cron
# send the output to you instead. It's dependent on your setup.
# -s Subject
# 
mail -s "Backup Done!" "[email protected]"

Defina o script como executável ( chmod 755 nameOfScript.sh ) e anote onde você o salvou no seu

Obtendo o Crontab para executar o Script da Shell

Para configurar seu crontab a partir da linha de comando, digite crontab -e para editar seu arquivo crontab. O layout do arquivo é o seguinte:

*     *   *   *    *  command to be executed
-     -    -    -    -
|     |     |     |     |
|     |     |     |     +----- day of week (0 - 6) (Sunday=0)
|     |     |     +------- month (1 - 12)
|     |     +--------- day of month (1 - 31)
|     +----------- hour (0 - 23)
+------------- min (0 - 59)

Fonte do diagrama: Escolha do administrador

Neste caso, adicione uma linha como:

33  0 * * *    /PATH/TO/HOME/FOLDER/nameOfScript.sh

executará o script todos os dias às 0:33 / 12:33.

Se você quiser saber mais, confira as man pages de tar , mail e crontab . Eles são indispensáveis ao lidar com a administração do UNIX de qualquer forma. Com uuencode você poderia até mesmo enviar um e-mail para o site inteiro, se fosse pequeno o suficiente.

    
por 14.12.2009 / 18:59