O que você está fazendo (tentando sincronizar uma WSL e uma verdadeira instalação do Ubuntu perfeitamente) é muito perigoso e não deve ser tomada de ânimo leve, se for possível. Diferenças de configuração / sistema entre os dois SOs podem causar problemas enormes dependendo de como as coisas acontecem. Veja aqui para o que acontece quando as pessoas fazem coisas semelhantes com o VirtualBox.
Apenas coisas piores podem acontecer com o WSL, e isso só será exagerado ao tentar sincronizar todos os arquivos, exceto os de uma lista negra. Você está essencialmente pedindo problemas aqui.
Dito isso, o que você deseja fazer (mesclar pastas sem sobrescrever arquivos existentes) é extremamente simples e já é suportado por praticamente todos os principais gerenciadores de arquivos (e pelo prompt de comando).
Observe que isso não funcionará automaticamente. Você terá que acioná-los manualmente, embora você possa usar algum abuso criativo para torná-lo semiautomático. Observe que todas as advertências anteriores serão aplicadas.
O antigo cp
pode fazer isso com a opção -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
Como alternativa, se você quiser usar a GUI, isso também pode ser feito com o Nautilus antigo. Basta arrastar e soltar o conteúdo de um para o outro e você verá esse aviso no primeiro arquivo conflitante. Basta clicar em Aplicar esta ação a todos os arquivos e, em seguida, Ignorar :
┌─[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
Se você quiser experimentar um pouco (na verdade, muito), talvez seja possível abusar de algo como aufs
ou OverlayFS. Efetivamente, você configuraria seu sistema de arquivos "base" para o sistema de arquivos comum (provavelmente será sua raiz do Ubuntu). Então, você teria uma segunda camada contendo apenas alterações de WSL. A camada somente de WSL deve ser somente leitura e tudo o mais passará para o sistema de arquivos base. Claro, isso é tudo teórico e você terá que fazer muita pesquisa para ver se algo assim é possível.
Se você quiser apenas pastas "principais" sincronizadas entre sistemas operacionais (por exemplo, Documents
, Music
, Desktop
, etc.), basta criar um link simbólico de um para o outro. Minha configuração antiga do Ubuntu de volta quando eu tinha dual-boot tinha minha pasta ~/Documents
vinculada ao equivalente Windows. Isso pode ser feito, é claro, com algo como ln -s
. Note que você pode precisar se preocupar um pouco com permissões em montagens ou usando montagens de ligação.