ดูเหมือนว่า SSHFS จะทำงานได้ แต่ Sublime + SSHFS ไม่ได้หรือไม่


9

ฉันใช้คำสั่งเพื่อติดตั้งระบบไฟล์ระยะไกลของฉันโดยใช้ SSHFS:

$ sshfs -o uid=1000 -o gid=1000 root@10.0.1.198:/ "/home/chendy/my_mount"

ดูเหมือนว่าทุกอย่างจะมีความสุขเว้นแต่ฉันจะลองเปิดและบันทึกไฟล์ด้วย Sublime ...

ดูและเปลี่ยนชื่อไฟล์? ใช่:

... ฉันสามารถดูไฟล์ของฉันใน file explorer และฉันสามารถเปลี่ยนชื่อไฟล์ได้สำเร็จโดยใช้ file explorer

สิทธิ์ / ผู้ใช้ / กลุ่ม? ใช่

... เมื่อตรวจสอบการอนุญาตทุกอย่างดูเหมือนจะอยู่ในลำดับ:

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

แก้ไขไฟล์ด้วย VIM? ใช่

... ฉันยังสามารถเปิดไฟล์ด้วย VIM และบันทึกได้

แก้ไขไฟล์ด้วย Sublime? ข้อผิดพลาด

... แต่เมื่อฉันเปิดไฟล์ใน Sublime (Sublime Text 3 Build 3059) โดยการโหลดมันผ่าน file explorer หรือใช้บรรทัดคำสั่ง:

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

ฉันได้รับข้อผิดพลาดเดียวกัน:

ไม่สามารถบันทึกข้อผิดพลาด ~ / my_mount / home / kano / test.py: เปลี่ยนชื่อ (/home/chendy/my_mount/home/kano/.subl979.tmp, /home/chendy/my_mount/home/kano/test.py) ล้มเหลว : ไม่อนุญาตให้ใช้งาน

เกิดอะไรขึ้น? มีวิธีใดบ้างในการแก้ปัญหา?


1
touch /home/chendy/my_mount/home/kano/.subl979.tmpลองใช้
Braiam

คำตอบ:


7

เช่นเดียวกับบรรณาธิการจำนวนมาก Sublime จะบันทึกเป็นไฟล์ชั่วคราวจากนั้นย้ายไฟล์ชั่วคราวนั้นเข้าที่ มันทำแบบนี้ในกรณีที่ระบบล่มระหว่างการบันทึก: รับประกันได้ว่าไฟล์ต้นฉบับหรือเวอร์ชันใหม่จะปรากฏคุณไม่เสี่ยงที่จะสูญเสียไฟล์

SSHFS ถูกสร้างขึ้นที่ด้านบนของ SFTP ซึ่ง (อย่างน้อยตามที่นำมาใช้โดย OpenSSH) ไม่อนุญาตให้เปลี่ยนชื่อไฟล์และเขียนทับอะตอมมิกเป้าหมาย (สิ่งนี้ถูกกล่าวถึงในคำถามที่พบบ่อยของ SSHFS )

คุณสามารถหลีกเลี่ยงข้อ จำกัด นี้ได้โดยบอก SSHFS ให้อนุญาตการเปลี่ยนชื่อและเขียนทับ แต่ทำให้การดำเนินการไม่ใช่อะตอมมิก (ดังนั้นจึงมีเวลาน้อยมากในระหว่างที่ไฟล์เก่าถูกลบ แต่ไฟล์ใหม่ยังคงมีชื่อชั่วคราว) นี่เป็นปัญหาสำหรับบางกรณีการใช้งาน แต่ไม่ใช่เมื่อแก้ไขไฟล์

เพิ่มตัวเลือก-o workaround=renameในsshfsบรรทัดคำสั่งของคุณ


1

ตอบสั้น ๆ ตั้งค่านี้ในการกำหนดค่าของคุณ:

"atomic_save": false

มันจะหลีกเลี่ยงการเปลี่ยนชื่อผ่าน sshfs (SFTP) ซึ่งไม่รองรับ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.