On 05/14/2010 02:02, Denis Shaposhnikov wrote:
> Does anybody has working examples of using s3fs or s3cmd with bacula for
> using Amazon S3 as bacula storage?
>
> I've tried s3fs but it seems bacula 5.0.0 doesn't want to use s3 bucket
> mounted into a directory because it doesn't have "." and ".." entries.
Hmm... No answers. OK, I've ended with mounting S3 bucket on system boot
like
echo "/usr/local/sbin/s3fs -o use_cache=/home/bacula/s3fs-tmp bucket
/var/db/bacula/s3fs" | su -m bacula
Don't forget "use_cache". I've found bacula can't label new volumes
without it. It's trying to label it forever without any luck. Also I've
added
Run After Job = "/usr/bin/find /home/bacula/s3fs-tmp -type f -exec
/bin/rm -f {} +"
Run After Failed Job = "/usr/bin/find /home/bacula/s3fs-tmp -type f
-exec /bin/rm -f {} +"
into my JobDefs. Because I don't want keep volumes on local file system.
That's why I use S3. Ideally would be removing cached volume just after
bacula close it, but I don't know how to implement it.
And last, I've patched s3fs using a little modified diff from
http://code.google.com/p/s3fs/wiki/FuseOverAmazon
Comment by estabroo, May 10 (4 days ago)
I'm attaching that diff into this mail.
--- s3fs.cpp.orig 2010-02-05 03:45:59.000000000 +0300
+++ s3fs.cpp 2010-05-14 20:51:44.000000000 +0400
@@ -345,7 +345,7 @@
static string AWSAccessKeyId;
static string AWSSecretAccessKey;
static string host = "http://s3.amazonaws.com";
-static mode_t root_mode = 0;
+static struct stat root_stat;
static string service_path = "/";
// if .size()==0 then local file cache is disabled
@@ -807,8 +807,7 @@
cout << "getattr[path=" << path << "]" << endl;
memset(stbuf, 0, sizeof(struct stat));
if (strcmp(path, "/") == 0) {
- stbuf->st_nlink = 1; // see fuse faq
- stbuf->st_mode = root_mode | S_IFDIR;
+ *stbuf = root_stat;
return 0;
}
@@ -1278,6 +1277,10 @@
s3fs_readdir(const char *path, void *buf, fuse_fill_dir_t filler, off_t
offset, struct fuse_file_info *fi) {
//cout << "readdir:"<< " path="<< path << endl;
+ // add .. and .
+ filler(buf, ".", NULL, 0);
+ filler(buf, "..", NULL, 0);
+
string NextMarker;
string IsTruncated("true");
@@ -1593,7 +1596,7 @@
struct stat buf;
// its the mountpoint... what is its mode?
if (stat(arg, &buf) != -1) {
- root_mode = buf.st_mode;
+ root_stat = buf;
}
}
}
------------------------------------------------------------------------------
_______________________________________________
Bacula-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bacula-users