Scenariusz: IDE jest skonfigurowane na komputerze stacjonarnym z Linuksem, lokalnie edytując pliki PHP. Za każdym razem, gdy zapisuję plik, chcę, aby ta zmiana pojawiła się na serwerze Linux, na którym działa Apache. Serwer ma ssh (i samba i nfs w tym zakresie).
Jako odniesienie, kiedy edytowałem pliki w systemie Windows, w końcu znalazłem WinSCP jako dokładne narzędzie, którego potrzebowałem - WinSCP ma właśnie tę funkcję, z początkową synchronizacją, a następnie ciągłą aktualizacją, za pomocą usługi obserwowania systemu plików: „Zachowaj zdalny katalog do Data".
W systemie Linux można argumentować, że można zastosować sshfs, aby całkowicie ominąć potrzebę synchronizacji. W systemie Windows udział samba zrobiłby to samo. Jednak chcę, aby IDE działało z plikami lokalnymi (na dysku SSD!), Bez konieczności przechodzenia przez sieć w celu indeksowania PHP i tym podobnych, co zajmuje wieki.
Niemniej jednak sshfs może być częścią rozwiązania - tak więc ciągła synchronizacja musiała zostać wykonana między dwoma lokalnymi katalogami.
Jakieś pomysły lub wskazówki?
Odpowiedzi:
Możesz także skorzystać
inotifywait
z pakietu inotify-tools.źródło
rsync
/scp
ma irytujące opóźnienie podczas nawiązywania połączenia ssh.Lsyncd byłoby dobrym rozwiązaniem.
Podsumowując, używa tego samego rodzaju narzędzi do wykonania zadania (inotify i rsync), jak sugerują inne odpowiedzi, ale łatwiej jest skonfigurować kogoś, kto nie zna skryptów powłoki.
źródło
Potrzebuję tego bardzo, ponieważ mój kod musi działać na zdalnych urządzeniach i piszę kod na lokalnej maszynie. Znalazłem fajne narzędzie, którego można użyć do ciągłego monitorowania folderów lokalnych i synchronizowania ich z folderem zdalnym lub lokalnym: https://github.com/axkibe/lsyncd
Prostym poleceniem ciągłej synchronizacji lokalnego katalogu z maszyną zdalną przez ssh będzie:
Podobnie jak w przypadku każdego innego polecenia rsync, upewnij się, że podałeś prawidłową ścieżkę do folderu i sprawdź przed uruchomieniem polecenia. Prawie zabiłem jedną ze zdalnych maszyn, ponieważ nie udało mi się podać prawidłowego katalogu docelowego. Upewnij się, że nie przegapisz ścieżki zdalnej i nie używaj „/”, chyba że wiesz, co robisz.
źródło
Jeśli musisz obserwować system plików, możesz to zrobić za pomocą inotify. Napisałbym prosty skrypt Pythona przy użyciu pyinotify, aby przeprowadzić synchronizację po zmianie systemu plików. Zobacz dokumentację . Możesz także pobrać plik autosync.py, aby uzyskać inspirację. Baw się dobrze.
źródło
To, co kiedyś zrobiłem, to uruchomienie skryptu bash
ls -l
w pętli (z pewnym czasem uśpienia) i porównanie z poprzednim wyjściem. Jeśli to się zmieniło, wykonaj synchronizację.Uruchom ten skrypt w nowym terminalu z nazwami plików jako argumentami (po włożeniu narzędzia do synchronizacji).
(Użyłem tego do uruchomienia kompilacji, a nie do synchronizacji, ale działałoby to w podobny sposób.)
źródło
Znacznie prostsze podejście:
Wyeksportuj / var / www z samba (lub nfs) i pracuj nad plikami bezpośrednio na serwerze.
Inne rozwiązanie: większość IDE pozwala na różne konfiguracje wdrażania - sprawdź, czy istnieje taka, która Ci odpowiada.
Lub ustaw system zarządzania kodem źródłowym, taki jak Git, Bazaar itp.
Powodzenia !!
źródło