Szenario: Eine IDE wird auf einer Linux-Desktop-Box eingerichtet und bearbeitet PHP-Dateien lokal. Jedes Mal, wenn ich eine Datei speichere, soll diese Änderung auf dem Linux-Server angezeigt werden, auf dem Apache ausgeführt wird. Der Server hat ssh (und Samba und NFS für diese Angelegenheit).
Als Referenz, als ich Dateien unter Windows bearbeitete, kam ich endlich über WinSCP als genau das Werkzeug, das ich brauchte - WinSCP bietet genau diese Funktion mit anfänglicher Synchronisierung und anschließendem kontinuierlichen Update unter Verwendung des Dateisystem-Überwachungsdienstes: "Keep Remote Directory up to Datum".
Unter Linux könnte man argumentieren, dass sshfs eingesetzt werden könnte, um die Notwendigkeit einer vollständigen Synchronisation zu umgehen. Unter Windows würde eine Samba-Freigabe dasselbe tun. Ich möchte jedoch, dass die IDE mit lokalen Dateien (auf einer SSD-Festplatte!) Arbeitet und nicht über das Netzwerk gehen muss, um PHP-Indizierungen und so weiter durchzuführen, was ewig dauert.
Aber sshfs könnte trotzdem ein Teil der Lösung sein - so dass die kontinuierliche Synchronisation nur zwischen zwei lokalen Verzeichnissen erfolgen musste.
Irgendwelche Ideen oder Hinweise?
Antworten:
Sie können auch
inotifywait
das Paket inotify-tools verwenden.quelle
rsync
/scp
hat eine nervige Verzögerung beim Aufbau der ssh-Verbindung.Lsyncd wäre dafür eine gute Lösung.
Unterm Strich werden für die Ausführung der Arbeit dieselben Tools verwendet (inotify und rsync), die in anderen Antworten vorgeschlagen wurden, aber es ist einfacher, sie für Personen einzurichten, die mit Shell-Skripten nicht vertraut sind.
quelle
Ich brauche das sehr, da mein Code auf Remote-Boxen ausgeführt werden muss und ich Code auf einem lokalen Computer schreibe. Ich habe ein nützliches Tool gefunden, mit dem Sie Ihre lokalen Ordner fortlaufend überwachen und mit Remote- oder lokalen Ordnern synchronisieren können: https://github.com/axkibe/lsyncd
Ein einfacher Befehl zum kontinuierlichen Synchronisieren eines lokalen Verzeichnisses mit einem Remote-Computer über ssh lautet:
Vergewissern Sie sich wie bei jedem anderen rsync-Befehl, dass Sie den Ordnerpfad richtig angegeben und überprüft haben, bevor Sie den Befehl ausführen. Ich hätte fast einen meiner Remote-Computer getötet, weil ich kein korrektes Zielverzeichnis angegeben habe. Stellen Sie sicher, dass Sie den Remote-Pfad nicht verpassen und '/' nicht verwenden, es sei denn, Sie wissen, was Sie tun.
quelle
Wenn Sie das Dateisystem beobachten müssen, ist inotify der richtige Weg, dies zu tun. Ich würde ein einfaches Python-Skript mit pyinotify schreiben , um die Synchronisierung durchzuführen, wenn das Dateisystem geändert wird. Siehe Dokumentation . Sie können sich auch von autosync.py inspirieren lassen. Habe Spaß.
quelle
Was ich einmal gemacht habe, ist, dass ein Bash-Skript
ls -l
in einer Schleife ausgeführt wird (mit etwas Ruhezustand) und mit der vorherigen Ausgabe verglichen wird. Wenn es sich geändert hat, führen Sie die Synchronisierung durch.Starten Sie dieses Skript in einem neuen Terminal mit den Dateinamen als Argumente (nach dem Einfügen Ihres Synchronisationstools).
(Ich habe dies verwendet, um eine Kompilierung zu starten, nicht um zu synchronisieren, aber dies würde auf ähnliche Weise funktionieren.)
quelle
Viel einfacher Ansatz:
Exportiere dein / var / www mit Samba (oder nfs) und bearbeite die Dateien direkt auf dem Server.
Eine andere Lösung: Die meisten IDEs erlauben verschiedene Bereitstellungskonfigurationen - prüfen Sie, ob eine für Sie geeignet ist.
Oder legen Sie ein Quellcode-Verwaltungssystem wie Git, Bazaar usw. fest.
Viel Glück !!
quelle