Como iniciar um script s3ql automaticamente na inicialização?

2

Eu tenho experimentado com o s3ql no Ubuntu 10.04, usando-o para montar os buckets do Amazon S3. No entanto, eu realmente gostaria de montá-los automaticamente. Alguém sabe como fazer isso?

Solução:

Graças à ajuda de Nikratio de s3ql , finalmente posso montar automaticamente baldes S3 quando o sistema é inicializado. Você definitivamente vai querer olhar para o manual , mas aqui está o básico de como fazer isso!

O primeiro passo é criar um arquivo authinfo. Esse arquivo deve ser colocado em um diretório .s3ql dentro do diretório inicial do usuário que o utilizará. O arquivo authinfo contém informações de login, permitindo que o s3ql monte os buckets sem avisar. Abaixo está um exemplo de como deve ser seu arquivo authinfo. A primeira linha contém suas credenciais de segurança da Amazon. O segundo contém o local e a senha do seu intervalo. Você pode adicionar várias linhas de depósito a esse arquivo, se necessário, mas estou usando apenas um neste exemplo. Nesse ponto, a senha do intervalo pode ser qualquer coisa.

backend s3 machine any login ASDFGHJKL password ZXCVBNM
storage-url s3://mybucket password mypassword

O nome do intervalo deve ser exclusivo. Nenhum usuário pode ter o mesmo nome de intervalo, por isso é uma boa ideia fazer login no Amazon Web Services e tentar nomes diferentes até encontrar um que esteja disponível. Depois de encontrar um, você precisará excluí-lo, pois o s3ql o recriará quando criar seu sistema de arquivos s3ql. Se o intervalo já existir, você receberá um erro.

Para criar o sistema de arquivos, use o comando:

mkfs.s3ql s3://mybucket

Ele solicitará sua senha de criptografia. Isso deve ser o mesmo que a senha do intervalo no arquivo authinfo.

Agora que seu sistema de arquivos foi criado, você pode montá-lo usando o comando:

mount.s3ql s3://mybucket /mnt/s3/bucket

É claro que o nome do seu intervalo e o ponto de montagem variam.

Agora, se quisermos montar esse bucket automaticamente na inicialização, precisamos adicionar um script upstart ao / etc / init. Felizmente, o s3ql vem empacotado com um, s3ql.conf.

Eu adicionei "--allow-other" ao comando mount.s3ql para permitir que usuários além do root acessem o bucket montado.

#
# This file can be placed in /etc/init. It defines an upstart job that
# takes care of mounting and unmounting an S3QL file system.
# 
description "S3QL Backup File System"
author      "Nikolaus Rath <[email protected]>"

start on (filesystem and net-device-up IFACE=eth0)
stop on runlevel [016]

env BUCKET="s3://mybucket"
env MOUNTPOINT="/mnt/s3/bucket"

expect stop

script
    # Redirect stdout and stderr into the system log
    DIR=$(mktemp -d)
    mkfifo "$DIR/LOG_FIFO"
    logger -t s3ql -p local0.info < "$DIR/LOG_FIFO" &
    exec > "$DIR/LOG_FIFO"
    exec 2>&1
    rm -rf "$DIR"

    # Check and mount file system
    fsck.s3ql --batch "$BUCKET"
    exec mount.s3ql --upstart --allow-other "$BUCKET" "$MOUNTPOINT"
end script

pre-stop script
    umount.s3ql "$MOUNTPOINT"
end script

Depois de adicionar esse script, em teoria você deve poder reinicializar e ter o seu bucket montado automaticamente, mas isso é porque eu tive problemas. O meu não estava sendo montado.

Meu problema foi causado pelo fato de que o upstart estava executando o script como root, mas eu criei o sistema de arquivos como outro usuário. Depois que eu copiei o diretório .s3ql do diretório home do usuário que eu estava logado como / root, o problema foi resolvido.

Espero que isso ajude alguém lá fora. Embora eu não tenha usado meu balde S3 montado por muito tempo, estou impressionado com a forma como meus testes iniciais foram feitos.

Além disso, esta resposta foi escrita cerca de uma semana após a solução ter sido encontrada. Acho que cobri tudo, mas se você perceber que eu perdi um passo, me avise e adicionarei. Você também vai querer ler o manual , vale a pena lê-lo se você pretende usar s3ql.

    
por ks78 08.01.2011 / 16:34

3 respostas

2

Use o script upstart incluído no S3QL, chamado s3ql.conf e no diretório contrib/ . Copie-o para /etc/init e mude a linha "start on" para

start on (filesystem and net-device-up IFACE=eth0)

(substitua eth0 pelo dispositivo de rede da sua conexão com a internet).

    
por 13.01.2011 / 19:13
1

Eu acho que você precisa

sudo update-rc.d name_of_the_script padrões

Você também pode precisar "chmod + x" o script

    
por 10.01.2011 / 19:43
0

Você não pode adicionar os intervalos ao / etc / fstab?

Exceto isso, tente adicionar o script ao cron, assim:

comando:
crontab -e
add:
@reboot * * * * * / caminho / para / script

    
por 08.01.2011 / 21:10