如何在启动时自动启动s3ql脚本?

我一直在Ubuntu 10.04上试用s3ql ,使用它来挂载Amazon S3存储桶。 不过,我真的很喜欢它自动挂载它们。 有谁知道这是怎么做到的吗?


解:

感谢来自s3ql的Nikratio的帮助,我终于能够在系统引导时自动挂载S3存储桶。 你一定要看看手册 ,但这是如何做的基本知识!

第一步是创build一个authinfo文件。 这个文件应该被放置在将要使用它的用户的主目录中的.s3ql目录中。 authinfo文件包含login信息,允许s3ql挂载桶而不提示。 下面是你的authinfo文件应该是什么样子的例子。 第一行包含您的亚马逊安全证书。 第二个包含您的存储桶的位置和密码。 如果需要的话,你可以添加多个bucket-line到这个文件,但是在这个例子中我只使用了一个。 在这一点上,桶密码可以是任何东西。

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

存储桶名称必须是唯一的。 没有两个用户可以具有相同的存储桶名称,因此最好login到Amazon Web Services并尝试不同的名称,直到find可用的名称。 一旦find了,你就需要删除它,因为s3ql在创builds3ql文件系统的时候会重新创build它。 如果存储桶已经存在,则会收到错误消息。

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

 mkfs.s3ql s3://mybucket 

它会提示你input你的encryption密码。 这应该与authinfo文件中的存储桶密码相同。

现在您的文件系统已经创build好了,您可以使用以下命令进行挂载:

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

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

现在,如果我们想在引导时自动挂载这个桶,我们需要在/ etc / init中添加一个upstart脚本。 幸运的是,s3ql与一个s3ql.conf打包在一起。

我在mount.s3ql命令中join了“–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 <[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 

在添加这个脚本之后,理论上你应该能够重新启动并且让你的桶自动挂载,但是这是我遇到了麻烦。 矿没有被安装。

我的问题是由于新贵运行脚本作为根,但我创build了另一个用户的文件系统的事实。 一旦我从用户的主目录复制.s3ql目录,我已经login到/ root,问题就解决了。

我希望这能帮助别人。 尽pipe我没有长时间使用我的S3吊桶,但是我对最初的testing已经结束了,我留下了深刻的印象。

而且,这个答案是在解决scheme发现一周后写的。 我想我已经涵盖了一切,但如果你发现我错过了一个步骤,让我知道,我会添加它。 如果您打算使用s3ql,您还需要阅读手册 ,它的确值得一读。

使用S3QL附带的upstart脚本,它叫做s3ql.conf ,在contrib/目录下。 将其复制到/etc/init并将“开始”行更改为

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

(将eth0replace为您的Internet连接的networking设备)。

我想你需要

sudo update-rc.d name_of_the_script默认值

也可能需要“chmod + x”脚本

你可以不把桶添加到/ etc / fstab吗?

除此之外,请尝试将脚本添加到cron,如下所示:

命令:
crontab -e
加:
@reboot * * * * * / path / to / script