Назад | Перейти на главную страницу

Как автоматически запустить сценарий s3ql при загрузке?

Я экспериментировал с s3ql в Ubuntu 10.04, используя его для монтирования корзин Amazon S3. Однако мне бы очень хотелось, чтобы они монтировались автоматически. Кто-нибудь знает как это сделать?


Решение:

Благодаря помощи Никратио из s3ql Наконец-то я смог установить корзины S3 автоматически при загрузке системы. Вы обязательно захотите взглянуть на руководство, но вот основы того, как это сделать!

Первый шаг - создать файл authinfo. Этот файл следует поместить в каталог .s3ql в домашнем каталоге пользователя, который будет его использовать. Файл authinfo содержит информацию для входа в систему, позволяющую s3ql монтировать сегменты без запроса. Ниже приведен пример того, как должен выглядеть ваш файл authinfo. Первая строка содержит ваши учетные данные Amazon Security. Второй содержит местоположение и пароль для вашего ведра. При необходимости вы можете добавить несколько строк в этот файл, но в этом примере я использую только одну. На этом этапе пароль корзины может быть любым.

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

Имя сегмента должно быть уникальным. У двух пользователей не может быть одного и того же имени корзины, поэтому рекомендуется войти в Amazon Web Services и попробовать разные имена, пока не найдете одно из доступных. Как только вы его найдете, вам нужно будет удалить его, поскольку s3ql воссоздает его при создании вашей файловой системы s3ql. Если сегмент уже существует, вы получите сообщение об ошибке.

Для создания файловой системы используйте команду:

mkfs.s3ql s3://mybucket

Вам будет предложено ввести пароль для шифрования. Он должен совпадать с паролем корзины в файле authinfo.

Теперь, когда ваша файловая система создана, вы можете смонтировать ее с помощью команды:

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

Конечно, имя вашей корзины и точка монтирования будут разными.

Теперь, если мы хотим автоматически монтировать эту корзину при загрузке, нам нужно добавить сценарий выскочки в / etc / init. К счастью, s3ql поставляется в комплекте с s3ql.conf.

Я добавил «--allow-other» в команду mount.s3ql, чтобы разрешить другим пользователям, кроме root, доступ к смонтированной корзине.

#
# 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 <Nikolaus@rath.org>"

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

После добавления этого скрипта теоретически вы сможете перезагрузиться и автоматически смонтировать вашу корзину, но именно здесь у меня возникли проблемы. Мой не был установлен.

Моя проблема была вызвана тем, что выскочка запускала скрипт от имени пользователя root, но я создал файловую систему как другой пользователь. Как только я скопировал каталог .s3ql из домашнего каталога пользователя, которого я вошел в систему как / root, проблема была решена.

Надеюсь, это поможет кому-то еще. Хотя я давно не использую свой навесной ковш S3, я впечатлен тем, как прошли мои первые тесты.

Кроме того, этот ответ был написан примерно через неделю после того, как решение было найдено. Думаю, я все рассмотрел, но если вы обнаружите, что я пропустил шаг, дайте мне знать, и я добавлю его. Вы также захотите прочитать руководство, это действительно стоит прочитать, если вы собираетесь использовать s3ql.

Используйте сценарий выскочки, включенный в S3QL, он называется s3ql.conf и в contrib/ каталог. Скопируйте это в /etc/init и измените строку "start on" на

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

(заменить eth0 с сетевым устройством для подключения к Интернету).

Я думаю тебе нужно

sudo update-rc.d name_of_the_script значения по умолчанию

Также вам может потребоваться "chmod + x" скрипт

Не могли бы вы не добавлять ведра в / etc / fstab?

Если это не так, попробуйте добавить скрипт в cron, например:

команда:
crontab -e
Добавить:
@reboot * * * * * / путь / к / скрипту