2009-03-19 10 views
8

Dla bieżącego kursu używam komputera zdalnego do uruchomienia naszego kodu (jest to klaster z czterema węzłami, programowanie z MPI i C++).Najlepszy sposób synchronizacji kodu na serwerze zdalnym za pomocą SCP (SSH-Copy)

Koduję lokalnie na moim MacBooku i szukam dobrego sposobu na aktualizowanie mojego lokalnego kodu w klastrze.

Sposób, w jaki to robiłem, polegał na otwarciu terminala na uruchamianie SCP w celu skopiowania katalogu oraz na inny terminal, który został SSH-ed w klastrze, w celu utworzenia i uruchomienia mojego kodu.

Wydaje mi się to mniej optymalne niż dla mnie. Czy istnieje sposób, który mógłbym zautomatyzować wysyłanie plików do klastra, gdy są one modyfikowane? Czy istnieje IDE (XCode, jeśli to możliwe), który pozwoli mi na to?

A może utknąłem w jednym wierszu polecenia, aby przenieść wszystko? Obecnie używam TextMate do napisania kodu.

Odpowiedz

14

Jeśli możesz użyć rsync, to prawdopodobnie byłby najlepszy sposób.

Czy przy użyciu sshfs można zamontować (zdalne) foldery zdalne? Możesz albo edytować pliki bezpośrednio, albo użyć rsync, unison lub dowolnego narzędzia synchronizacji folderu do folderu.

9

Twoja najlepsza opcja, inna niż kontrola wersji rozproszonej, używa rsync przez ssh. Trzymam kilka maszyn w synchronizacji, wykonując następujące czynności na każdy:

rsync -urltv --delete -e ssh /src.dir [email protected]:/src.dir 

Wspomniałeś użyciu MacBooka - rsync jest na Mac OS X. O ile wiem, to nie musi być zainstalowany dodatkowy. A piękno rsync polega na tym, że szuka modyfikacji i kopiuje jedynie zmodyfikowane pliki. Nie łączy w sobie jednoczesnych modyfikacji, takich jak rozproszony system kontroli wersji, ale jeśli jesteś podobny do mnie, gdzie pracujesz na laptopie, a następnie trochę pracy na pulpicie, rsync to najlepszy sposób na wysłanie wszystkich zmienionych plików (i tylko zmienione pliki) od jednego do drugiego po przełączeniu trybów.

Uwaga: opcje rsync używane są tu:

  • -u, --update pominąć pliki, które są nowsze na odbiorniku
  • -r, --recursive recurse do katalogów
  • -l, - łącza kopiują dowiązania symboliczne jako dowiązania symboliczne
  • -t, - czasy zachowują czas modyfikacji
  • -v, --verbose zwiększają gadatliwość
  • --delete usunąć pliki obcych z dest katalogów, działa jako --delete-during

wreszcie -e jest opcja, która pozwala określić zdalnej powłoki, w tym przypadku ssh

+0

Czy rsync działa tylko na moim komputerze? Zastanawiam się na wypadek, gdy nie mam dostępu do rsync w klastrze. –

+0

Nie, potrzebujesz rsync na obu końcach tunelu ssh. Jest to bardzo powszechne, więc zdecydowanie bym go wyssał i zobaczył. – Evan

+0

Muszę to sprawdzić, kiedy wrócę do domu. Jeszcze jedno pytanie, czy rsync szuka modyfikacji? –

4

Wiem, że nie jest to odpowiedź, którą znasz, ale możesz skonfigurować serwer SVN lub CVS, który byłby o wiele łatwiejszy.

W przeciwnym razie wybrałbym rsync.

0

Prawdopodobnie nie to, czego szukasz, ale trzeba spojrzeć na DSCM jak git:

  1. utworzyć repozytorium na serwerze zdalnym.
  2. Sklonuj go do swojej maszyny programistycznej za pomocą ssh.
  3. dodaj/zmodyfikuj kod
  4. użyj commit i naciśnij (ponownie, przez ssh), aby scalić zmiany.
1

Jeszcze lepiej niż rsync to Unison file synchronizer, który pozwoli na dokonanie zmian na obu końcach i wykryje i pomoże rozwiązać wszelkie konflikty. Działa na ssh.

Powiązane problemy