Synchronisieren eines Ordners zwischen einer virtuellen Maschine und einem Host

0

Ich habe meinen Code auf einem Host und möchte, dass er auf einer virtuellen Debian-Maschine (die auf demselben Host gehostet wird) ausgeführt wird.

Daher verwende ich den Freigabeordner von VmWare, um meinen Code in der virtuellen Maschine freizugeben. Aber mein Programm ist langsamer als wenn sich der Code tatsächlich auf der Festplatte der VM befindet. (wahrscheinlich wegen des anderen Dateisystems (hgfs vs ext4)

Ich sehe zwei mögliche Lösungen:

  • Synchronisieren Sie den freigegebenen Ordner mit einem anderen Ordner auf der VM. Es gäbe also keinen Netzwerkzugriff. Aber ich weiß nicht, welches Tool ich verwenden soll. Wahrscheinlich so etwas wie ein ständiger One-Way-Rsync, der auch die Dateien löscht.

  • Verwenden Sie eine Art "Link" wie einen symbolischen oder physischen Link, der den Ordner replizieren würde, aber ich weiß nicht, ob so etwas existiert.

Wie würdest du das machen ?

(Wenn ich den Code auf der virtuellen Maschine habe und ihn mit Samba teile, ist das Problem dasselbe und der Zugriff auf die Dateien mit meiner IDE ist langsamer.)

Yohan D
quelle
FWIW, wenn Sie über eine Netzwerkfreigabe direkt vom Host auf die Dateien zugreifen, ist dies langsamer als auf der lokalen Festplatte der VM, aber wahrscheinlich schneller als die Verwendung freigegebener Ordner.
Jamesdlin

Antworten:

2

Der rsync ist eine gute Idee, Sie müssen jedoch Änderungen immer auf demselben Host vornehmen, von dem der rsync die Quelle abruft. Sie benötigen einige grundlegende Bash-Skripte, die rsync in einer Schleife mit der --deleteOption ausführen, mit der Dateien aus dem TARGET entfernt werden, die in SOURCE nicht vorhanden sind. Führen Sie das Skript in einem screenwährend des Startvorgangs aus und Sie können loslegen

Eine andere Idee ist, eine Art Cloud-Synchronisation zu verwenden, entweder wie Dropbox, oder einen eigenen owncloud / nextcloud-Server zu spoolen, um dies zu tun.

Und wenn es sich wirklich um den Code handelt, den Sie synchronisieren möchten , besteht der EIGENE Industriestandard darin, das Git-Repository zu verwenden. Sie können unter https://bitbucket.org ein kostenloses Repository erstellen und beide Computer für die Verwendung festlegen und dann Änderungen festschreiben / abrufen wann immer nötig.

bocian85
quelle
Ich möchte vermeiden, Rsync in einer Schleife auszuführen, da es möglicherweise nicht sehr effizient ist. Außerdem ändere ich ständig den Code, damit dies geschieht, bevor ich ihn drücke.
Yohan D
Natürlich ist diese Antwort nicht zu 100% korrekt. Sie können die
bidirektionale
eigentlich ist eine einseitige Synchronisation ziemlich effizient - wenn es nicht viele Änderungen gibt, geht die Synchronisation auch bei komplizierten Verzeichnisstrukturen ziemlich schnell, und wenn Sie diesen Pfad wählen würden, würde ich vorschlagen, ein sleep 10oder so etwas in die Schleife
einzufügen
2
Sie können lsyncd in der VM verwenden, um Dateien mit dem Host zu synchronisieren (oder umgekehrt, wenn der Host Linux ist), was ziemlich effizient sein sollte.
Jamesdlin