异或

异或

我正在设置一台新的 Win 10 笔记本电脑,其中安装了双启动的 Ubuntu 16.04,有一个主文件夹,并使用 Xubuntu 设置了 WSL(适用于 Linux 的 Windows 子系统),其中也有一个主文件夹。

我的目标是,当使用 Ubuntu 启动时,我希望能够更改文件并同时将其反映在 WSL 中。当我启动 Windows 时,我希望 WSL 更改能够同时反映在 Ubuntu 中。

在 WSL 中将安装 Ubuntu。 在 Ubuntu 中将安装 WSL。

我“微微希望”文件管理器能够虚拟地合并两个主文件夹,删除相同的文件名,只留下一个主文件夹(和子目录)中存在但不存在于另一个主文件夹(XOR)中的文件名/目录名。

原因是:

  • 我不想在两个不同的家庭之间复制相同的文件并必须同步它们。
  • 某些同名文件/文档对于每个环境必须是唯一的,并且永远不能同步。一个可能的候选者是~/.conkyrc永远不能在环境之间复制,因为一个环境使用 Linux 内核,而另一个环境使用 NT 内核来获取机器统计数据。

我希望 Xubuntu 可以在 WSL 中作为第二个桌面运行。它应该能够运行大多数文件管理器。我希望我不必深入研究源代码来对两个主文件夹进行异或。

我认为大部分内容/usr/local/bin仅在 Ubuntu 分区和从 WS 创建的符号链接上。

类似地,我曾经读到过,同一个用户名不应该用作不同分区下的子目录/home。也就是说,有两个用户名/home/WinEunuuchs2Unix是不可接受的?例如,Windows 应该命名吗/home/WinEunuuchs2Unix2WSL?当然,真实的名字会更短。


异或

最初,我的问题引起了一些困惑,所以我会XOR尽力给出定义。这是一个汇编命令(有些人坚持称之为汇编语言),其含义是:

在一个或另一个中,但不是同时在两个中

一旦您理解了这个指令代码,您就会明白我希望如何显示我的目录中的文件列表以及不同分区中相同目录名中当前分区中不存在的文件列表,以便我可以同时编辑任何文件,而不必同步它们,因为它们首先不存在于当前分区中。

这可能是数据处理领域的一项新发明,因此我的问题会误导大多数人,对此我深表歉意。另一方面,具有讽刺意味的是,XOR 可能是地球上最古老的计算机指令代码之一,我想可以追溯到 1 个真空管 = 1 位内存的时代。

答案1

你正在做的事情(尝试完美同步 WSL 和真正的 Ubuntu 安装)是非常危险,即使有可能,也不应该掉以轻心。两个操作系统之间的配置/系统差异可能会导致严重问题,具体取决于事情发生的方式。看这里当人们使用 VirtualBox 做类似的事情时会发生什么。

WSL 只会发生更糟糕的事情,而尝试同步黑名单上的所有文件(文件除外)只会让情况更加严重。你本质上是在自找麻烦。

也就是说,您想要做的事情(合并文件夹而不覆盖现有文件)非常简单,并且几乎每个主要文件管理器(和命令提示符)都已支持它。

请注意,这不会自动起作用。您必须手动触发它们,但我认为您可以使用一些创造性的滥用来使其半自动化。请注意,所有前面的警告都将适用。


普通人cp可以通过以下选项来做到这一点-n

┌─[16:57:35]─[kazwolfe@firewolf]
└──> /tmp/xor-terminal % tree
.
├── folder-a
│   ├── a
│   ├── b
│   └── d
└── folder-b
    ├── a
    ├── c
    ├── e
    └── k
        └── j

3 directories, 7 files
┌─[16:57:41]─[kazwolfe@firewolf]
└──> /tmp/xor-terminal % cat folder-a/a
Hello World A
┌─[16:57:43]─[kazwolfe@firewolf]
└──> /tmp/xor-terminal % cat folder-b/a
Hello World B
┌─[16:57:54]─[kazwolfe@firewolf]
└──> /tmp/xor-terminal % cp -nR folder-a/* folder-b/
┌─[16:58:00]─[kazwolfe@firewolf]
└──> /tmp/xor-terminal % cp -nR folder-b/* folder-a/
┌─[16:58:03]─[kazwolfe@firewolf]
└──> /tmp/xor-terminal % tree
.
├── folder-a
│   ├── a
│   ├── b
│   ├── c
│   ├── d
│   ├── e
│   └── k
│       └── j
└── folder-b
    ├── a
    ├── b
    ├── c
    ├── d
    ├── e
    └── k
        └── j

4 directories, 12 files
┌─[16:58:07]─[kazwolfe@firewolf]
└──> /tmp/xor-terminal % cat folder-a/a
Hello World A
┌─[16:58:09]─[kazwolfe@firewolf]
└──> /tmp/xor-terminal % cat folder-b/a
Hello World B

或者,如果您想使用 GUI,也可以使用普通的 Nautilus。只需将一个文件的内容拖放到另一个文件,您就会在第一个冲突文件上看到此提示。只需点击将此操作应用于所有文件进而跳过

显示事物的图像

┌─[17:01:33]─[kazwolfe@firewolf]
└──> /tmp/xor-gui % cat folder-a/a
Hello World A
┌─[17:01:34]─[kazwolfe@firewolf]
└──> /tmp/xor-gui % cat folder-b/a
Hello World B

如果您想进行一些实验(实际上,很多实验),您可能会滥用类似aufs或 OverlayFS 的东西。实际上,您会将“基本”文件系统设置为通用文件系统(可能是您的 Ubuntu 根目录)。然后,您将拥有包含 WSL 专用更改的第二层。让 WSL 专用层为只读,其他所有内容都传递到基本文件系统。当然,这都是理论上的,您必须进行大量研究才能知道这样的事情是否可行。

如果您只想在操作系统之间同步“主要”文件夹(例如,、、Documents等),只需创建一个从一个到另一个的符号链接。当我双启动时,我的旧 Ubuntu 配置将我的Music文件夹符号链接到 Windows 等效文件夹。当然,这可以通过类似 来完成。请注意,您可能需要对挂载权限进行一些调整Desktop~/Documentsln -s或者使用绑定挂载。

相关内容