与用户共享数据#

有几种与用户共享数据的方法,此页面介绍了一些有用的模式。

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

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

有关创建和共享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:为用户创建共享笔记本和其他文件的目录#

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

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

例如,在一个拥有三个用户的 Hub 中,用户 A 在其 /home 目录中开发了一个笔记本。当准备共享时,用户 A 将其复制到 shared 目录。此时,用户 B 和用户 C 可以看到用户 A 的笔记本并自行运行(或在仪表板布局中查看,例如 voilapanel,如果它在 Hub 中运行),但用户 B 和用户 C 无法编辑笔记本。只有用户 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 以安装它。