与用户共享数据#

有几种与用户共享数据的选项,本页介绍了一些有用的模式。

选项 1:使用 nbgitpuller 分发数据#

对于小型数据集,与用户共享数据的最简单方法是通过 nbgitpuller 链接。在这种情况下,用户单击您的链接,链接目标存储库中包含的数据集将下载到用户的家目录。请注意,每个用户都会复制一份数据集。

有关创建和共享 nbgitpuller 链接的信息,请参阅使用 nbgitpuller 向用户分发材料

选项 2:为数据创建一个只读共享文件夹#

如果您的数据很大或者您不想有多个副本,您可以创建一个用户可以访问的只读共享文件夹。为此,请按照以下步骤操作:

  1. 管理员用户身份登录到您的 JupyterHub。

  2. 使用 JupyterHub 界面创建终端会话

    New terminal button.
  3. 创建一个文件夹,您的数据将存储在此文件夹中。我们建议将共享数据放置在 /srv 中。以下命令创建两个文件夹(/srv/data/srv/data/my_shared_data_folder)。

    sudo mkdir -p /srv/data/my_shared_data_folder
    
  4. 将数据下载到此文件夹中。有关如何执行此操作的详细信息,请参阅将数据添加到 JupyterHub

  5. 现在所有用户都对该文件夹中的数据具有读取权限。

选项 3:创建目录供用户共享 Notebook 和其他文件#

您可能希望有一个地方供用户彼此共享文件,而不仅仅是管理员与用户共享文件(选项 2)。在这种配置中,任何用户都可以将文件放入 /srv/scratch,其他用户可以读取这些文件。但是,只有创建文件的用户才能编辑该文件。

用户在 JupyterHub 环境中共享或“发布” Notebook 的一种方法是创建共享目录。任何用户都可以在该目录中创建文件,但只有创建者之后才能编辑该文件。

例如,在一个有三个用户的 Hub 中,用户 A 在他们的 /home 目录中开发一个 Notebook。当准备好共享时,用户 A 将其复制到 shared 目录。此时,用户 B 和用户 C 可以看到用户 A 的 Notebook 并自行运行(或者在像 voilapanel 这样的仪表板布局中查看,如果它正在 Hub 中运行),但用户 B 和用户 C 无法编辑 Notebook。只有用户 A 可以进行更改。

  1. 管理员用户身份登录到您的 JupyterHub。

  2. 使用 JupyterHub 界面创建终端会话

    New terminal button.
  3. 创建一个文件夹,您的数据将存储在此文件夹中。我们建议将共享数据放置在 /srv 中。以下命令创建目录 /srv/scratch

    sudo mkdir -p /srv/scratch
    
  4. 更改新文件夹的组所有权

    sudo chown  root:jupyterhub-users /srv/scratch
    
  5. 将默认权限更改为使用组。新子目录的默认权限使用全局 umask (drwxr-sr-x),chmod g+s 告诉新文件使用组 jupyterhub-users 的默认权限 (rw-r--r--)

    sudo chmod 777 /srv/scratch
    sudo chmod g+s /srv/scratch
    
  6. 在用户家目录中创建指向 scratch 文件夹的符号链接

    sudo ln -s /srv/scratch /etc/skel/scratch
    

注意

kafonek/tljh-shared-directory 上的 TLJH 插件安装 voila 并按照上述说明设置目录。在您的部署启动脚本中包含 --plugin git+https://github.com/kafonek/tljh-shared-directory 以安装它。