如何 - Linux 中的多个保管箱实例?

How to - multiple dropbox instances in Linux?

在线查看后,似乎很容易拥有多个 Dropbox 帐户 运行ning。您所要做的就是更改环境变量,然后 运行 保管箱。但是,我已经尝试编辑 .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

似乎没有任何东西可以启动保管箱。但是,如果我在 bash 中尝试相同的行,它会尝试启动但失败了,但这只是因为 Dropbox 正在寻找 GUI。在这种情况下,我本以为在 .desktop 文件中执行上述操作会起作用,但我什么也没发生。

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

如果我在 .desktop 文件中尝试这样做:

Exec=env dropbox start -i

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

任何人都可以告诉我我缺少什么来完成这项工作吗?

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

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

Dropbox 设置向导 window 将会出现。按照方法 -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.
#!/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 $@

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

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

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

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