Comment puis-je synchroniser mon code pour une machine distante en utilisant ssh?
Pour un cours actuel je suis, nous sommes à l'aide d'un ordinateur distant afin d'exécuter notre code.
Je suis codage en local sur mon MacBook et je suis à la recherche d'un bon moyen de garder un code local jusqu'à ce jour sur le cluster.
La façon dont je le faisais, c'était d'avoir un terminal ouvert pour l'exécution de SCP pour copier le répertoire, et un autre terminal qui a été SSH-ed dans le cluster pour l'élaboration et l'exécution de mon code.
Cela semble moins optimale pour moi. Est-il une manière que je pourrais automatiser l'envoi des fichiers vers le cluster lorsqu'ils sont modifiés?
Ou suis-je coincé avec une ligne de commande pour déplacer tout?
OriginalL'auteur Dan McClain | 2009-03-19
Vous devez vous connecter pour publier un commentaire.
Si vous pouvez utiliser rsync, ce serait probablement la meilleure façon.
Serait à l'aide d' sshfs (fusible) monter le dossier distant(s) être une option? Vous pouvez soit modifier les fichiers directement, ou utiliser rsync, l'unisson ou tout un dossier à l'outil de synchronisation ensuite.
OriginalL'auteur Evan
Votre meilleure option, autre qu'un contrôle de version distribué, est à l'aide de rsync over ssh. J'ai garder un couple de machines à synchroniser en effectuant les opérations suivantes sur chacun d'eux:
Vous avez mentionné à l'aide d'un MacBook - rsync est sur Mac OS X. autant Que je sache, il n'a pas besoin d'être installé supplémentaire. Et la beauté de rsync, c'est qu'il ressemble de modification et de copie uniquement les fichiers modifiés. Il ne fait pas de fusion des modifications simultanées comme un contrôle de version distribué système, mais si vous êtes comme moi, où vous faire un peu de travail sur votre ordinateur portable, puis un peu de travail sur votre bureau, rsync est la meilleure façon d'envoyer tous les fichiers modifiés (et uniquement les fichiers modifiés) de l'un à l'autre lorsque vous changez de mode.
Remarque: les options de rsync utilisés ici sont:
-u
,- mise à jour d'ignorer les fichiers qui sont plus récents sur le récepteur-r
, --recursive recurse dans les répertoires-l
, --liens copier les liens symboliques comme liens symboliques-t
, --la fois de préserver des moments de modification-v
, --verbose augmenter la verbosité--delete
supprimer les fichiers superflus de dest dirs, agit comme--delete-during
enfin,
-e
est l'option qui vous permet de spécifier votre shell distant, dans ce cas sshNon, vous avez besoin de rsync aux deux extrémités du tunnel ssh. Ceci est très fréquent, cependant, je n'hésiterais pas à le sucer et à voir.
Je vais vérifier cela quand je rentre à la maison. Encore une question, ne rsync trouver des modifications?
Oui, rsync ne sauvegardes incrémentielles.
sa vaut la peine de mentionner que si vous ne voulez pas mettre à jour les anciens fichiers que vous savez n'avez pas changé, vous devez utiliser le
--ignore-existing
drapeau et jetez le-u
OriginalL'auteur Paul Tomblin
Je sais que ce n'est pas la réponse que vous savez, mais vous pouvez configurer un SVN ou CVS serveur, ce qui serait tellement plus facile.
Sinon j'irais pour rsync.
OriginalL'auteur dr. evil
Même mieux que rsync est le L'unisson synchroniseur de fichiers, ce qui vous permettra de faire des changements à chaque extrémité et permet de détecter et de résoudre les conflits. Il fonctionne à travers ssh.
OriginalL'auteur Norman Ramsey
Probablement pas ce que vous cherchez, mais vous devriez jeter un oeil à un DSCM comme git:
OriginalL'auteur J.C. Inacio