Die beste Methode zum Synchronisieren von Code auf dem Remote-Server mithilfe von SCP (SSH-Copy) [closed]

8

Für einen aktuellen Kurs verwende ich einen Remote-Computer, um unseren Code auszuführen (Es ist ein Cluster mit vier Knoten, der mit MPI und C ++ programmiert).

Ich programmiere lokal auf meinem MacBook und suche nach einer guten Möglichkeit, meinen lokalen Code auf dem Cluster aktuell zu halten.

Die Art und Weise, wie ich das gemacht habe, war, dass ein Terminal zum Ausführen von SCP geöffnet wurde, um das Verzeichnis zu kopieren, und ein anderes Terminal, das in den Cluster geschickt wurde, um meinen Code zu erstellen und auszuführen.

Das scheint für mich nicht optimal zu sein. Gibt es eine Möglichkeit, das Senden der Dateien an den Cluster zu automatisieren, wenn sie geändert werden? Oder gibt es eine IDE (XCode, wenn möglich), die mir dies erlaubt?

Oder stecke ich mit dem einzeiligen Befehl fest, um alles zu verschieben? Ich verwende derzeit TextMate, um den Code zu schreiben.

    
Dan McClain 19.03.2009, 12:23
quelle

5 Antworten

14

Wenn Sie rsync verwenden können, wäre das wahrscheinlich der beste Weg.

Würde es sshfs ermöglichen, die Remote-Ordner als Option zu fusionieren? Sie können die Dateien entweder direkt bearbeiten oder rsync, unison oder ein beliebiges Ordner-zu-Ordner-Synchronisierungstool verwenden.

    
Evan 19.03.2009, 12:39
quelle
9

Ihre beste Option, außer einer verteilten Versionskontrolle, verwendet rsync über ssh. Ich halte ein paar Maschinen synchron, indem ich Folgendes für jeden mache:

%Vor%

Sie haben erwähnt, dass Sie ein MacBook verwenden - rsync ist unter Mac OS X. Soweit ich weiß, muss es nicht extra installiert werden. Und das Schöne an rsync ist, dass es nach Änderungen sucht und nur modifizierte Dateien kopiert. Es führt nicht gleichzeitige Änderungen wie ein verteiltes Versionskontrollsystem, aber wenn Sie wie ich sind, wo Sie etwas auf Ihrem Laptop arbeiten, dann arbeiten einige auf Ihrem Desktop, rsync ist die beste Möglichkeit, alle geänderten Dateien zu senden (und nur die geänderten Dateien) von einem zum anderen, wenn Sie den Modus wechseln.

Hinweis: Die hier verwendeten rsync-Optionen sind:

  • -u , --update Überspringt Dateien, die neuer auf dem Empfänger sind
  • -r , --recursive recurse in Verzeichnisse
  • -l , --links kopieren Symlinks als Symlinks
  • -t , - behält die Änderungszeiten bei
  • -v , --verbose erhöht Ausführlichkeit
  • --delete löscht überflüssige Dateien von Zielverzeichnissen, fungiert als --delete-during

Schließlich ist -e die Option, mit der Sie Ihre entfernte Shell angeben können, in diesem Fall ssh

    
Paul Tomblin 19.03.2009 12:29
quelle
4
___ answer662032 ___

Ihre beste Option, außer einer verteilten Versionskontrolle, verwendet rsync über ssh. Ich halte ein paar Maschinen synchron, indem ich Folgendes für jeden mache:

%Vor%

Sie haben erwähnt, dass Sie ein MacBook verwenden - rsync ist unter Mac OS X. Soweit ich weiß, muss es nicht extra installiert werden. Und das Schöne an rsync ist, dass es nach Änderungen sucht und nur modifizierte Dateien kopiert. Es führt nicht gleichzeitige Änderungen wie ein verteiltes Versionskontrollsystem, aber wenn Sie wie ich sind, wo Sie etwas auf Ihrem Laptop arbeiten, dann arbeiten einige auf Ihrem Desktop, rsync ist die beste Möglichkeit, alle geänderten Dateien zu senden (und nur die geänderten Dateien) von einem zum anderen, wenn Sie den Modus wechseln.

Hinweis: Die hier verwendeten rsync-Optionen sind:

  • %code% , --update Überspringt Dateien, die neuer auf dem Empfänger sind
  • %code% , --recursive recurse in Verzeichnisse
  • %code% , --links kopieren Symlinks als Symlinks
  • %code% , - behält die Änderungszeiten bei
  • %code% , --verbose erhöht Ausführlichkeit
  • %code% löscht überflüssige Dateien von Zielverzeichnissen, fungiert als %code%

Schließlich ist %code% die Option, mit der Sie Ihre entfernte Shell angeben können, in diesem Fall ssh

    
___ answer662058 ___

Wenn Sie rsync verwenden können, wäre das wahrscheinlich der beste Weg.

Würde es sshfs ermöglichen, die Remote-Ordner als Option zu fusionieren? Sie können die Dateien entweder direkt bearbeiten oder rsync, unison oder ein beliebiges Ordner-zu-Ordner-Synchronisierungstool verwenden.

    
___ antwort662125 ___

Ich weiß, dass das nicht die Antwort ist, die Sie kennen, aber Sie können einen SVN- oder CVS-Server einrichten, was so viel einfacher wäre.

Ansonsten würde ich für rsync gehen.

    
___ qstntxt ___

Für einen aktuellen Kurs verwende ich einen Remote-Computer, um unseren Code auszuführen (Es ist ein Cluster mit vier Knoten, der mit MPI und C ++ programmiert).

Ich programmiere lokal auf meinem MacBook und suche nach einer guten Möglichkeit, meinen lokalen Code auf dem Cluster aktuell zu halten.

Die Art und Weise, wie ich das gemacht habe, war, dass ein Terminal zum Ausführen von SCP geöffnet wurde, um das Verzeichnis zu kopieren, und ein anderes Terminal, das in den Cluster geschickt wurde, um meinen Code zu erstellen und auszuführen.

Das scheint für mich nicht optimal zu sein. Gibt es eine Möglichkeit, das Senden der Dateien an den Cluster zu automatisieren, wenn sie geändert werden? Oder gibt es eine IDE (XCode, wenn möglich), die mir dies erlaubt?

Oder stecke ich mit dem einzeiligen Befehl fest, um alles zu verschieben? Ich verwende derzeit TextMate, um den Code zu schreiben.

    
___ answer663456 ___

Wahrscheinlich nicht das, wonach Sie suchen, aber Sie sollten sich eine DSCM wie git ansehen:

  1. Erstellen Sie ein Repository auf dem Remote-Server.
  2. klonen Sie es mit ssh auf Ihren Entwicklungscomputer.
  3. Code hinzufügen / ändern
  4. Verwenden Sie commit und drücken Sie (erneut, über ssh), um die Änderungen zusammenzuführen.
___ tag123Entwicklungsumgebung ___ Eine Entwicklungsumgebung ist ein integrierter Satz von Programmiertools, die sich in der Regel auf einen Texteditor konzentrieren. ___ answer670246 ___

Noch besser als rsync ist der Unison-Dateisynchronisierer , mit dem Sie Änderungen an beiden vornehmen können beenden und erkennen und helfen bei der Lösung von Konflikten. Es funktioniert über ssh.

    
___ qstnhdr ___ Die beste Methode zum Synchronisieren von Code auf dem Remote-Server mithilfe von SCP (SSH-Copy) [closed] ___ tag123synchronization ___ Synchronisation bezieht sich auf die Verwendung von Steuerelementen, um eine kohärente Darstellung zu erhalten, entweder eine Gruppe von Prozessen, die dasselbe Programm ausführen (Prozesssynchronisierung), oder Darstellungen von Daten (Datensynchronisierung). ___
dr. evil 19.03.2009 13:06
quelle
1

Noch besser als rsync ist der Unison-Dateisynchronisierer , mit dem Sie Änderungen an beiden vornehmen können beenden und erkennen und helfen bei der Lösung von Konflikten. Es funktioniert über ssh.

    
Norman Ramsey 21.03.2009 23:43
quelle
0

Wahrscheinlich nicht das, wonach Sie suchen, aber Sie sollten sich eine DSCM wie git ansehen:

  1. Erstellen Sie ein Repository auf dem Remote-Server.
  2. klonen Sie es mit ssh auf Ihren Entwicklungscomputer.
  3. Code hinzufügen / ändern
  4. Verwenden Sie commit und drücken Sie (erneut, über ssh), um die Änderungen zusammenzuführen.
J.C. Inacio 19.03.2009 18:33
quelle