Как мне смонтировать каталог на удаленной машине, используя fuse? - PullRequest
2 голосов
/ 24 ноября 2011

Мне интересно, как использовать FUSE для монтирования каталога с удаленной машины.Учебное пособие, данное в по этой ссылке , подключает локальный каталог к ​​другому локальному.По сути, это происходит в функции fuse_main .У кого-нибудь есть идея, как сделать то же самое для каталога на удаленной машине?

Вызов функции выглядит следующим образом

fuse_main(argc, argv, &bb_oper, bb_data);

Примечание: Я не могу использовать sshfs

Спасибо.

Ответы [ 3 ]

2 голосов
/ 24 ноября 2011

Жаль, что вы не можете использовать sshfs 1 - это мое оружие выбора (, если мне когда-нибудь понадобится смонтировать , в противном случае rsync работает хорошо).

Вы можете попробовать curlftpfs, который способен монтировать FTP 'share'.

Обязательно посмотрите на запись .netrc (с надлежащими разрешениями для безопасности), чтобысделать эту работу удобно


1 Почему бы и нет?

1 голос
/ 24 ноября 2011

Вам нужен какой-то сетевой транспорт, с которым локальные и удаленные машины согласуются для этого: если не sshfs, то smb или NFS или что-то еще.

Это может помочь, если вы скажете всем, почему вы не можете использовать sshfs.

0 голосов
/ 24 ноября 2011

Как и любой другой сетевой файловой системе, FUSE понадобится базовый транспортный уровень.Это не поможет вам, если что-то на удаленной машине не сможет обработать фактический ввод-вывод для вас.

В ваших аргументах fuse вы устанавливаете обработчики для вещей, которые вы хотите, чтобы файловая система могладля обработки, например:

static struct fuse_operations const myfs_ops = {
        .getattr = my_getattr,
        .mknod = my_mknod,
        .mkdir = my_mkdir,
        .unlink = my_rm,
        .rmdir = my_rmdir,
        .truncate = my_truncate,
        .open = my_open,
        .read = my_read,
        .write = my_write,
        .readdir = my_readdir,
        .create = my_create,
        .destroy = my_destroy,
        .utime = my_utime,
        .symlink = my_symlink
};

Это код одной из моих текущих реализаций FUSE, переписанный в общем виде.Как видите, вам нужно как минимум реализовать open, read, write и close для минимально функциональной FS.

Эти члены являются функциями, которые выполняют эти операции.Они могут использовать HTTP, SSH, FTP, собственный протокол, что угодно.Но вы должны написать их, и что-то на удаленном сервере должно ответить на них.

Чтобы ответить на ваш вопрос напрямую, FUSE (сам по себе) не будет делать то, что вы хотите, если только выреализовать функциональность самостоятельно.

...