Как мне смонтировать каталог на удаленной машине, используя fuse?

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

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

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

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

Благодарю.

3 ответа

Решение

Как и любой другой сетевой файловой системе, 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 для минимально функциональной ФС.

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

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

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

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

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


+1 Почему нет?

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

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

Другие вопросы по тегам