Quando uso o Meld 3.20.4-1 no Ubuntu MATE 21.10, não consigo comparar pastas locais e remotas usando as etapas abaixo:
Conecte-se a algum compartilhamento com o Caja - pressione Ctrl+ L, digite
sftp://[email protected]
na barra de endereços para montar a pasta/run/user/1000/gvfs/sftp:host=hostname.local,user=user/
Abra o terminal e execute o Meld a partir dele para comparar o par de pastas:
meld /run/user/1000/gvfs/sftp:host=hostname.local,user=user/home/user/Desktop ~/Desktop
Como resultado eu recebo
$ meld /run/user/1000/gvfs/sftp:host=hostname.local,user=user/home/user/Desktop ~/Desktop Usage: meld Start with an empty window meld <file|folder> Start a version control comparison meld <file> <file> [<file>] Start a 2- or 3-way file comparison meld <folder> <folder> [<folder>] Start a 2- or 3-way folder comparison Error: remote folder “/run/user/1000/gvfs/sftp:host=hostname.local,user=user/home/user/Desktop” not supported
Podemos fazer algo com esse problema no nível do usuário?
Realmente essa comparação está quebrada desde 20.04 LTS , então precisamos esperar pela correção upstream .
A solução temporária é usar SSHFS da seguinte forma:
Instale o
sshfs
pacote porCriar ponto de montagem temporário para localização remota
Compare a pasta local com a remota usando a mesma versão do Meld
Faça alguma sincronização.
Desmonte o local remoto e, opcionalmente, remova o ponto de montagem
A solução alternativa por N0rbert realmente não funciona. Como o Meld usa o GIO do Gnome, que o detecta como um “sistema de arquivos remoto” de qualquer maneira. Uma comparação básica pode funcionar, mas você terá problemas assim que tentar realmente mesclar as coisas. Como excluir um diretório.
E se você forçar, corrigindo a detecção do Meld, como eu fiz para este teste, ele pede ao GIO para excluir o diretório, e o GIO falha porque “o diretório não está vazio”. Em outras palavras, a função delete aparentemente só funciona recursivamente para sistemas de arquivos locais. O que é insano, já que o VFS do Linux, por padrão, não faz essa distinção entre implementações de sistema de arquivos e esse é o ponto principal.
Então, aparentemente, o GIO não usa essas interfaces VFS padrão do Linux que já teriam funcionado, mas sua própria solução defeituosa e pelos padrões Linux / Unix (parcialmente em cima do VFS, mas piorando).
Como um usuário antigo do Linux, posso dizer que isso se deve ao fato de ser executado por desenvolvedores que vieram do Windows e acham que tudo tem que funcionar como o Windows, porque eles são muito jovens ou se recusam a aprender as convenções básicas e ideias de Unix/Linux, e então estão condenados a reinventar o Unix… mal.
(Mesma razão para os containers, a implementação do systemd [não a ideia geral, o que é bom], a implementação da interface de rede dos kernels, qualquer um pedindo “Linux On The Desktop”, a forma como o Steam é “implementado” no Linux [É apenas um Aplicativo do Windows dentro de uma instância personalizada do Wine, ignorando todas as convenções do Linux], etc.)
O próprio Meld tem este comentário no código-fonte:
(Ou… você sabe… apenas use a interface padrão VFS/POSIX como pessoas normais.)
Portanto, a única solução aqui é usar as ferramentas apropriadas do Linux ou ir até o fim e executar o Windows/MacOS em vez de uma ferramenta em execução no primeiro que deseja ser o último. ;)
Eu recomendaria o Kdiff3 , mas isso tem seu próprio problema, pois não consegue copiar novos arquivos do local para o remoto, pelo menos no meu caso de comparação de diretórios com sshfs do KDEConnect em um telefone Android.
Fora isso,
rsync
edirdiff
(vimdiff
ouvim
com aDirDiff
extensão) et al seriam soluções nativas e mais rápidas, mas é claro que não são tão confortáveis para a fusão manual de diretórios com eles, e é por isso que pessoas como eu são forçadas a usar Meld/Kdiff3 .ADENDO: Aqui está o bug principal:
Permitir a remoção recursiva do diretório (#2258) · Problemas · GNOME / GLib · GitLab
Um problema adicional que isso mostra é que, se o sistema de arquivos remoto tiver um "Lixeira",
g_file_trash
poderia ser usado, pois aparentemente isso funciona recursivamente, mesmo remotamente. … Ainda não tenho ideia de por que eles excluíram ativamente uma implementação de exclusões recursivas, embora, do ponto de vista do espaço do usuário, não haja literalmente nenhuma diferença.