Wydaje się, że SSHFS działa, ale Sublime + SSHFS nie?

9

Korzystam z polecenia, aby zamontować mój zdalny system plików za pomocą SSHFS:

$ sshfs -o uid=1000 -o gid=1000 [email protected]:/ "/home/chendy/my_mount"

Wszystko wydaje się być szczęśliwe, chyba że spróbuję otworzyć i zapisać plik w Sublime ...

Wyświetlić pliki i zmienić ich nazwy? TAK:

... Mogę przeglądać moje pliki w Eksploratorze plików i mogę z powodzeniem zmieniać nazwy plików za pomocą Eksploratora plików.

Uprawnienia / Użytkownicy / Grupy? TAK

... Podczas sprawdzania uprawnień wszystko wydaje się w porządku:

$ ls -l '/home/chendy/my_mount/home/kano/test.py'
-rwxrwxrwx 1 chendy chendy 927 Apr 15 16:24

Czy edytować plik za pomocą VIM? TAK

... mogę również otworzyć plik za pomocą VIM i zapisać go.

Edytować plik za pomocą Sublime? BŁĄD

... Ale kiedy otwieram plik w Sublime (Sublime Text 3 Build 3059), ładując go przez eksplorator plików lub używając wiersza poleceń:

 $ /opt/sublime_text/sublime_text '/home/chendy/my_mount/home/kano/test.py'

Otrzymuję ten sam błąd:

Nie można zapisać ~ / my_mount / home / kano / test.py Błąd: zmiana nazwy (/home/chendy/my_mount/home/kano/.subl979.tmp, /home/chendy/my_mount/home/kano/test.py) nie powiodła się : Operacja niedozwolona

Co się dzieje? Czy jest jakiś sposób na rozwiązanie?

Chendy
źródło
1
spróbuj użyć touch /home/chendy/my_mount/home/kano/.subl979.tmp.
Braiam

Odpowiedzi:

7

Podobnie jak wielu redaktorów, Sublime zapisuje plik tymczasowy, a następnie przenosi ten plik tymczasowy na miejsce. Odbywa się to w przypadku awarii systemu podczas zapisywania: gwarantuje się obecność oryginalnego pliku lub nowej wersji, nie ryzykujesz utraty pliku.

SSHFS jest zbudowany na SFTP, który (przynajmniej tak jak zaimplementowany przez OpenSSH) nie pozwala na zmianę nazwy pliku i atomowe nadpisanie celu. (Jest to wspomniane w SSHFS FAQ ).

Można obejść to ograniczenie, mówiąc SSHFS, aby zezwalał na zmianę nazwy i zastąpienie, ale czyniąc operację nieatomową (więc jest bardzo krótki czas, w którym stary plik jest usuwany, ale nowy plik nadal ma swoją nazwę tymczasową). Jest to problem w niektórych przypadkach użycia, ale nie tylko podczas edycji pliku.

Dodaj opcję -o workaround=renamedo sshfswiersza poleceń.

Gilles „SO- przestań być zły”
źródło
1

Krótka odpowiedź, ustaw to ustawienie w swojej konfiguracji:

"atomic_save": false

Pozwoli to uniknąć zmiany nazwy na sshfs (SFTP), która nie jest obsługiwana.

Wainer Chiari
źródło