【问题标题】:How to - multiple dropbox instances in Linux?如何 - Linux 中的多个 Dropbox 实例?
【发布时间】:2016-05-22 23:54:46
【问题描述】:

在线查看后,运行多个保管箱帐户似乎很容易。您所要做的就是更改环境变量,然后运行 ​​Dropbox。但是,我尝试编辑 .desktop 文件(请参阅 .desktop file specification),因此 Exec 行从此更改:

Exec=dropbox start -i

这是默认的:

Exec=env "HOME\=/home/reg/.dropbox-alt" dropbox start -i

从我读过的所有内容中应该可以工作。我还尝试了所有转义和引用的变体,例如:

Exec=env HOME\=/home/reg/.dropbox-alt dropbox start -i
Exec=env "HOME=/home/reg/.dropbox-alt" dropbox start -i
Exec=env HOME=/home/reg/.dropbox-alt dropbox start -i

似乎没有启动 Dropbox。但是,如果我在 bash 中尝试相同的行,它会尝试启动但未能成功,但这只是因为 Dropbox 正在寻找 GUI。在这种情况下,我会认为在 .desktop 文件中执行上述操作会起作用,但我什么也没发生。

我在没有任何 Dropbox 实例运行的情况下执行此操作,因此该 Dropbox 不可能正在寻找其他实例并阻止自己加载另一个实例。

如果我在 .desktop 文件中尝试此操作:

Exec=env dropbox start -i

它将启动保管箱,但现在它是默认实例,没有任何好处。

谁能告诉我要完成这项工作我缺少什么?

【问题讨论】:

    标签: linux environment-variables dropbox env


    【解决方案1】:

    打开终端并粘贴以下命令:

    $ mkdir "$HOME"/.dropbox-alt
    $ ln -s "$HOME/.Xauthority" "$HOME/.dropbox-alt/"
    $ HOME="$HOME/.dropbox-alt"
    $ /home/$USER/.dropbox-dist/dropboxd
    

    Dropbox 设置向导窗口将会出现。按照方法-1中的描述完成设置

    从终端启动 Dropbox

    $ /home/$USER/.dropbox-dist/dropboxd
    

    从终端启动 Alternate-Dropbox

    $ HOME="$HOME/.dropbox-alt" && /home/$USER/.dropbox-dist/dropboxd
    

    注意:

    You can create a small script with the above commands to start Dropbox.
    One can put the script at startup. Don't forget to give the script execution permission.
    
    chmod +x /path/to/script
    
    I have tested the second method. Hope it will be useful.
    

    【讨论】:

    • 这很好用,但我真的很想知道如何使用桌面文件类型让它工作。我对这种方法进行了改进,很快就会发布。
    【解决方案2】:
    #!/bin/bash
    
    HOME_DIR=$HOME
    DROPBOXES=("$HOME/.dropboxes/personal" "$HOME/.dropboxes/business")
    function start_dropbox() {
      HOME=$HOME_DIR
      local flag
      local home_dir
      local OPTIND;
      local verbose=0
      local wait=0
    
      while getopts p:vw opt; do
        case $opt in
          p) home_dir="$(echo $OPTARG | sed 's:/*$::')/" ;;
          v) verbose=1 ;;
          w) wait=1 ;;
          *) ;;
        esac
      done
      shift $((OPTIND-1))
    
      # Test if the process is already running
      local pid=$(ps aux|grep "${home_dir}.dropbox-dist"|grep -v 'grep'|tr -s ' '| cut -d' ' -f 2)
      if [ -n "$pid" ]
      then
        echo "Process already running with home dir. of: $home_dir"
        return 8 # Process already running
      fi
    
      # Create home directory if it doesn't exist
      if [ ! -e "$home_dir" ]
      then
        if mkdir -p "$home_dir";
        then
          echo "Created directory: $home_dir"
        else
          echo "Failed to create directory: $home_dir"
          return 9 # Failed
        fi
      fi
    
      # Set up so works with GUI from command line
      xauthority="${home_dir}.Xauthority"
      if [ ! -e "$xauthority" ]
      then
        ln -s "$HOME/.Xauthority" "$xauthority"
      fi
    
      HOME="$home_dir"
    
      # Start the dropbox daemon
      if [[ $verbose -gt 0 ]]; then
        echo '~/.dropbox-dist/dropboxd & '$home_dir
      fi
      ~/.dropbox-dist/dropboxd &
      if [[ $wait -eq 0 ]]; then
        sleep 2 # Give each instance time to startup completely before starting another one
      else
        read -n 1 -s -p 'Press any key to continue.'
        echo
      fi
    }
    
    function start_dropboxes() {
      local dropbox
    
      for dropbox in "${DROPBOXES[@]}"
      do
        start_dropbox $@ -p "$dropbox"
      done
    }
    
    #
    # For testing & setup we can choose just one to startup
    #
    while getopts f:wv opt; do
      case $opt in
        f) start_dropbox -p "${DROPBOXES[$OPTARG]}" # NOTE: bash array indexes start at 0.
           exit ;;
        *) ;;
      esac
    done
    OPTIND=1
    
    start_dropboxes $@
    

    【讨论】:

      【解决方案3】:

      无法在一台机器上安装相同软件的多个实例是所谓的软件冲突的典型案例,其中两个这样的实例将竞争资源,例如内存、外围设备、注册、网口等

      但是,我们可以使用称为 Docker 的基于容器的虚拟化技术在称为容器的松散隔离环境中的同一台机器上运行软件的多个实例。

      这个解决方案最好的部分是它可以在任何平台上运行,因为容器是可移植的。

      我最近在上面写了一个blog,解释了使用 docker 容器化 Dropbox 实例的步骤。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-27
        • 1970-01-01
        • 2018-06-04
        • 2017-11-17
        • 2016-06-25
        • 1970-01-01
        相关资源
        最近更新 更多