웹 애플리케이션용 개발 서버로 사용하는 원격 Linux 시스템이 있습니다. 환경을 로컬에서 재현할 수 없고 파일을 원격 서버에서 실행해야 하는데 로컬에서(vim에서) 편집하고 싶습니다.
이 원격 서버의 파일은 Git을 통해 관리됩니다. 저는 보통 한 번에 수백 개의 파일 중 1~5개만 편집합니다.
제안된 해결 방법과 제대로 작동하지 않는 이유:
sshfs: 이 솔루션은 훌륭해 보이지만 몇 가지 버그가 있습니다.
- 로컬 편집기는 저장하는 동안 몇 초 동안 정지됩니다. 네트워크 지연이 발생하는 경우 비동기적으로 저장되지 않습니다.
- sshfs가 활성화된 동안 네트워크가 다운되면 마운트 해제를 위해 해킹 작업을 수행할 때까지 실제로 파일 시스템의 해당 부분을 차단합니다.http://sourceforge.net/p/fuse/mailman/message/26936619/
- 편집 중인 파일의 로컬 복사본을 생성하는 대신 지속적으로 데이터를 동기화하므로 전반적으로 매우 느립니다.
중력으로 인한 가속도:
- 작업 속도가 느립니다. 파일을 여는 데 시간이 오래 걸리고 디렉터리 트리가 캐시되지 않습니다. 또한 vim이 파일 권한을 짓밟게 만드는 버그(5년 이상)가 있습니다. 이는 원격 SSH를 통해 권한을 지속적으로 업데이트해야 함을 의미합니다.
동기화:
- 이것은 git 저장소이므로 자주 분기를 변경해야 할 수도 있습니다. 때로는 원격 서버가 나를 업데이트해야 할 수도 있고 그 반대의 경우도 마찬가지입니다. 전반적으로 이로 인해 복잡성이 많이 추가되고 원격 서버의 변경 사항을 확인하려고 할 때마다 수동 동기화가 필요합니다.
터미널을 통해 원격 시스템에서 vim 사용:
- 키 입력이 지연되어 미치게 됩니다.
FTP 프로토콜
- 생성된 임시 파일에는 임의의 이름이 있으므로 어떤 탭이 무엇인지 알 수 없습니다.
- 원격 서버를 업데이트하려면 vim을 닫아야 합니다(멍청함)
분명 더 좋은 방법이 있을 텐데요?Windows에서는 기본적으로 로컬에서 편집하는 파일의 임시 복사본을 생성하고 저장하면 백그라운드에서 파일을 동기화하는 winSCP를 사용했습니다(저장 후 즉시 편집기에서 계속할 수 있음).
emacs에 관한 이 질문을 찾았지만 emacs를 사용하고 싶지 않습니다. 원격 서버에 SSH로 접속하고 로컬 Emacs를 사용하여 파일을 편집하는 방법은 무엇입니까?
답변1
목록에서 누락된 옵션 중 하나는 Vim의 것입니다.회로망Vim과 함께 제공되는 플러그인(댓글에서 @godlygeek이 처음 언급함). :edit scp://hostname/path/to/file
시작 시 다음과 같은 URL을 지정할 수도 있습니다 $ vim ftp://hostname/path/to/file
. 여러 프로토콜을 지원하고 :write
원본 파일 이름을 유지하면서 다운로드/업로드를 투명하게(각 프로토콜에서) 처리하므로 파일 형식 감지 등이 계속 작동합니다.
답변2
이는 프로덕션 시스템에 허용되는 솔루션이 아닐 수 있지만 Git과 함께 BitTorrentSync(또는 기타)와 같은 동기화 서비스를 실행할 수 있습니다. 저는 노트북과 데스크탑 사이에서 이 작업을 수행하는데 훌륭하게 작동합니다.
커밋하거나 푸시하는 대신 집에서 로컬 git 저장소에 있는 파일을 수정할 수 있습니다. 작업을 시작하면 동일한 수정 작업을 수행할 수 있습니다. 거기서 끝내고 커밋/푸시할 수 있습니다.
내 기본 BitTorrentSync 폴더인 ~/Git 폴더가 있습니다. 이 폴더 내에는 각 저장소에 대한 여러 하위 디렉터리가 있습니다. BitTorrentSync ".Sync" 폴더를 ".gitignore"에 추가했는지 확인하세요.