如何创建一个s3ql文件系统并在启动时自动挂载?

时间:2011-01-08 15:37:03

标签: scripting ubuntu amazon-s3 mount boot

我一直在Ubuntu 10.04上试验s3ql,用它来安装Amazon S3存储桶。但是,我真的很喜欢它自动安装它们。有谁知道怎么做?


解决方案:

感谢来自s3ql的Nikratio的帮助,我终于可以在系统启动时自动挂载S3存储桶。你肯定想看看manual,但这里是如何做的基础知识!

第一步是创建一个authinfo文件。此文件应放在将要使用它的用户的主目录中的.s3ql目录中。 authinfo文件包含登录信息,允许s3ql在不提示的情况下挂载存储桶。下面是您的authinfo文件应该是什么样子的示例。第一行包含您的Amazon Security Credentials。第二个包含您的存储桶的位置和密码。如果需要,您可以在此文件中添加多个存储桶行,但在此示例中我只使用了一个。此时,存储桶密码可以是任何内容。

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

存储桶名称必须是唯一的。没有两个用户可以拥有相同的存储桶名称,因此最好登录Amazon Web Services并尝试使用不同的名称,直到找到可用的名称。一旦找到了,就需要删除它,因为s3ql会在创建s3ql文件系统时重新创建它。如果存储桶已存在,则会收到错误。

要创建文件系统,请使用以下命令:

mkfs.s3ql s3://mybucket

它会提示您输入加密密码。这应该与authinfo文件中的bucket密码相同。

现在您的文件系统已创建,您可以使用以下命令安装它:

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

当然,您的存储桶名称和挂载点会有所不同。

现在,如果我们想在启动时自动挂载此存储桶,我们需要向/ etc / init添加一个upstart脚本。幸运的是,s3ql包含一个,s3ql.conf。

我在mount.s3ql命令中添加了“--allow-other”,允许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

添加此脚本后,理论上您应该可以重新启动并自动安装存储桶,但这是我遇到了麻烦。我没有安装。

我的问题是由于upstart以root身份运行脚本,但我创建了另一个用户的文件系统。一旦我从用户的主目录复制了.s3ql目录,我已经登录到/ root,问题就解决了。

我希望这有助于其他人。虽然我没有长时间使用我安装的S3水桶,但我对初步测试的结果印象深刻。

此外,这个答案是在找到解决方案一周后写的。我想我已经涵盖了所有内容,但是如果你发现我错过了一步,请告诉我,我会添加它。你还想阅读manual,如果你打算使用s3ql,它真的值得一读。

1 个答案:

答案 0 :(得分:1)

在Nikratio的帮助下,我终于可以在启动时自动安装我的S3存储桶了。我用解决方案更新了我的问题。