Todos os artigos

Como editar um arquivo de um servidor SFTP no Mac sem reenviar

· 7 min de leitura

Resposta curta: você não precisa baixar um arquivo do servidor, editá-lo e enviá-lo de novo à mão. No Folia Files, conecte-se uma vez ao servidor por SFTP e clique duas vezes no arquivo dentro da pasta do servidor. Ele abre no seu app de sempre a partir de uma cópia no Mac e, a cada salvamento, o Folia Files o envia de volta ao servidor, depois de conferir que ninguém o alterou lá nesse meio-tempo. Você acompanha os envios em Operações › Arquivos Remotos.

Veja como configurar, o que aparece enquanto você edita e o que acontece quando o servidor recusa.

Por que editar um arquivo do servidor dá trabalho

Com um cliente SFTP, a rotina tem três passos: baixar config.php ou index.html, editar, enviar de volta. Esqueça o último e o servidor continua com a versão antiga. Faça isso a partir de dois Macs e você sobrescreve, sem perceber, a alteração de outra pessoa.

Montar o servidor como um disco parece mais simples, já que o editor pode abrir o arquivo direto. Mas os apps salvam mal diretamente em um disco de rede: muitos gravam um arquivo temporário e o colocam no lugar do original, deixam arquivos de bloqueio ou esperam cada ida e volta com um servidor lento. O resultado pode ser um arquivo que perde o dono e as permissões, ou um editor que trava ao salvar.

O ideal é ter as duas coisas: um arquivo local com que o editor trabalha bem e uma cópia no servidor que acompanha cada salvamento.

Passo 1: conectar-se ao servidor por SFTP

Na edição do site do Folia Files, as conexões SFTP passam pelo rclone, uma ferramenta gratuita e de código aberto. Instale-o uma vez no Terminal com brew install rclone (se ele faltar, a janela de conexões oferece um botão para isso). Depois:

  1. Escolha Ferramentas › Conexões (Servidores e Nuvens)… (⌘K), clique em Nova Conexão e escolha SFTP / SCP (SSH).
  2. Digite o endereço do servidor, seu nome de usuário e uma senha ou sua chave SSH (deixe a senha vazia para usar a chave ou o agente SSH).
  3. Em Pasta inicial, digite a pasta em que você costuma trabalhar, por exemplo /var/www. O Folia Files monta o servidor inteiro a partir da raiz: você pode subir para qualquer lugar; a pasta inicial é só a que abre.
  4. Clique em Testar Conexão e depois em Montar. O servidor aparece na seção Servidores da barra lateral.

A janela de conexões com uma conexão SFTP para vps.alex.dev, ainda não montada, com seu usuário e a pasta inicial /var/www

Deixe Somente Leitura desativado nas opções da conexão se quiser editar: numa conexão somente leitura, os arquivos abrem como estão, sem nada para enviar de volta. Para saber mais sobre rclone, chaves SSH e S3, veja como conectar-se a SFTP e S3 no Mac sem macFUSE.

Passo 2: abrir o arquivo e editá-lo

Navegue pelo servidor num painel como em qualquer pasta e então:

  • clique duas vezes no arquivo para abri-lo no app padrão, ou
  • clique com o botão direito e escolha Abrir Com para usar outro app: TextEdit, BBEdit, Visual Studio Code, Nova ou o editor que preferir.

O Folia Files baixa uma cópia de trabalho para o Mac e a abre. Um aviso informa: “‘index.html’ abre a partir de uma cópia neste Mac”, e acrescenta que cada salvamento é enviado de volta para o seu servidor e pode ser acompanhado em Operações. Se o download levar mais de um segundo, você vê primeiro “Abrindo ‘index.html’…” com o nome do servidor.

Agora edite e salve como sempre com ⌘S. Cerca de um segundo depois que o app termina de gravar, o Folia Files envia o arquivo. Ele só mostra Salvo no servidor quando o servidor tem de fato o novo conteúdo: com SFTP, pergunta diretamente ao servidor em vez de confiar na montagem.

Alguns detalhes que importam num servidor web:

  • As permissões continuam as mesmas. O arquivo é regravado no lugar, então mantém o dono e as permissões no servidor em vez de receber os padrões de um arquivo novo.
  • Uma cópia por arquivo. Abrir o mesmo arquivo de novo reabre a mesma cópia de trabalho, com o que ainda não foi enviado.
  • Só documentos. Arquivos de até 200 MB passam por uma cópia. Vídeos, arquivos compactados, imagens de disco e apps abrem direto do servidor.

Esse funcionamento vem ativado. A opção fica em Ajustes › Arquivos e Rede: “Editar documentos de um servidor a partir de uma cópia neste Mac, enviada de volta a cada salvamento”. Desativada, os arquivos abrem direto do servidor, e você ainda pode clicar com o botão direito num arquivo e escolher Editar e Enviar de Volta ao Servidor.

Ajustes do Folia Files, página Arquivos e Rede: a opção para editar documentos de um servidor a partir de uma cópia no Mac

Não é só para SFTP: vale também para os arquivos das suas outras conexões e de qualquer volume de rede montado no Mac, como um compartilhamento SMB ou um servidor WebDAV.

Passo 3: acompanhar os envios em Operações › Arquivos Remotos

Clique em Operações na barra de ferramentas (as duas setas) ou escolha Janela › Operações em Andamento (⌃⌘O). Enquanto houver arquivos de um servidor abertos, as páginas Tudo e Em Andamento mostram uma seção Arquivos Remotos, com uma linha por arquivo:

  • o nome do arquivo e, abaixo, a conexão e o caminho do arquivo no servidor;
  • o estado: Atualizado, Enviado às tal hora, Enviando…, Alterações ainda não enviadas, Alterado no servidor nesse meio-tempo ou o erro que interrompeu o último envio;
  • três botões: Enviar de Volta ao Servidor, Mostrar a Cópia neste Mac e Concluir (apaga a cópia neste Mac).

Conclua um arquivo quando terminar. Se o servidor não tiver sua última versão, o Folia Files pergunta antes: “Concluir sem enviar as últimas alterações?”. Cópias atualizadas e sem mudanças há uma semana são removidas sozinhas.

Quando o servidor diz não

O servidor se recusa a gravar o arquivo

É o caso clássico de um arquivo de configuração que pertence a outro usuário, como um php.ini do root quando você se conecta como alex. O rclone responde com um seco “permission denied”; o Folia Files traduz isso em palavras claras, no aviso e em Arquivos Remotos:

O servidor se recusa a gravar este arquivo: o usuário da conexão não tem permissão para modificá-lo (dono ou permissões do arquivo no servidor).

Sua alteração não se perde: ela fica no Mac, e o aviso oferece Tentar Novamente. Para resolver, mude o dono ou as permissões do arquivo no servidor, ou conecte-se com um usuário que possa gravá-lo, e envie de novo. O mesmo vale para “O servidor não tem mais espaço para este arquivo.”. Se o servidor nunca confirmar o recebimento, você verá “O servidor não confirmou o recebimento do arquivo. A alteração permanece neste Mac.”.

Se a conexão cair no meio de um envio, a versão que o servidor tinha antes fica guardada no Mac, e o botão Mostrar do aviso leva até ela.

Alguém alterou o arquivo no servidor

Antes de cada envio, o Folia Files compara o arquivo do servidor com o que você abriu. Se ele mudou (um colega, um script de deploy, outro editor), nada é sobrescrito. Um aviso diz “‘index.html’ mudou no servidor” e oferece:

  • Substituir a Versão do Servidor: sua versão vai para o servidor; se o Folia Files não viu o que está lá, ele guarda antes uma cópia no Mac;
  • Manter Ambos: sua versão é salva ao lado com o nome “index (minha versão).html”, e os próximos salvamentos vão para esse arquivo.

O servidor não está conectado

Se você salvar enquanto a conexão estiver caída, o aviso diz que o servidor não está conectado e que a alteração fica guardada neste Mac. Clique em Conectar e Enviar para montá-lo de novo e enviar. O registro da conexão (clique com o botão direito no servidor na barra lateral › Registro da conexão) lista cada arquivo enviado e cada falha, útil quando um problema se repete. Se os discos de rede costumam travar o seu Mac, este artigo explica por que o Finder trava numa unidade de rede.

Encerrar com alterações que não estão no servidor

Deixe o Folia Files aberto enquanto edita: é ele que envia cada salvamento. Se você encerrar quando uma alteração ainda não chegou ao servidor, ele pergunta:

Algumas alterações em arquivos remotos não estão no servidor. Elas continuam neste Mac: o Folia Files vai oferecê-las na próxima abertura (Operações › Arquivos Remotos).

Clique em Cancelar para ficar e enviá-las, ou em Encerrar: na próxima abertura, o arquivo mostra “Alterações ainda não enviadas” em Arquivos Remotos, e o botão da seta o envia. Uma alteração que ficou sem envio numa sessão anterior e não foi salva de novo desde então, como um arquivo que o servidor continua recusando, não faz a pergunta voltar a cada encerramento: ela espera em Arquivos Remotos até você enviá-la ou concluí-la.

Edição do site e edição da Mac App Store

Tudo o que foi dito acima descreve a edição do site, em que o SFTP funciona assim que o rclone é instalado. A edição por meio de uma cópia existe nas duas edições, também para compartilhamentos SMB e WebDAV. Na edição da Mac App Store, as conexões SFTP precisam do Folia Files Companion, um pequeno app gratuito, porque a sandbox da Apple não deixa um app iniciar o rclone.

Saiba mais sobre conexões, nuvens e edição no lugar na página de servidores e nuvens.