[LINUX] Ich habe versucht, mit "Syncthing" Dateien auf mehreren PCs zu synchronisieren

Ich wollte Dateien auf mehreren PCs ohne "Git Push" teilen, also habe ich "Syncthing" ausprobiert, das von der Firma eingeführt wurde!

Was ist Synchronisierung?

Offizielles Repository https://github.com/syncthing/syncthing/

Syncthing ist ein kontinuierliches Dateisynchronisierungsprogramm. Es synchronisiert Dateien zwischen zwei oder mehr Computern. (Aus dem offiziellen Repository)

Wörtlich übersetzt heißt es: "Dateien zwischen zwei oder mehr PCs teilen."

Das Image ähnelt DropBox und OneDrive, aber im Gegensatz zu diesen werden die Dateien nicht auf den Server hochgeladen.

Kompatibles Betriebssystem usw.

Ab März 2020 werden folgende unterstützt.

Installation

Ich habe einen Mac und Ubuntu zur Hand, also werde ich sie mit diesen beiden ausprobieren. Zuerst werde ich das Einstellungsverfahren mit der GUI beschreiben, aber da es anscheinend nur mit der CLI möglich ist, werde ich es später beschreiben.

Ubuntu

Referenz https://apt.syncthing.net/

curl -s https://syncthing.net/release-key.txt | sudo apt-key add -
echo "deb https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
sudo apt update && sudo apt install syncthing
#Ausführen → Browser starten
syncthing

Mac

brew install syncthing
#Ausführen → Browser starten
syncthing

CentOS / Anderes Linux

Ich habe es nicht bestätigt, da es keine Umgebung gibt, aber es scheint, dass die Binärinstallation wie auf der folgenden Site gezeigt durchgeführt werden kann. https://computingforgeeks.com/install-and-configure-syncthing-on-centos-linux/

Android

Ich habe dies nicht bestätigt, da es keine Umgebung gibt, aber es gibt eine App im Store. https://play.google.com/store/apps/details?id=com.nutomic.syncthingandroid&hl=ja


Wenn Sie den Befehl syncthing ausführen, wird der Browser gestartet und der folgende Bildschirm angezeigt. image.png

Registrieren / Ausführen als Service

Wenn Sie den Befehl "syncthing" gemäß dem obigen Verfahren ausführen, ist die Synchronisierung nur möglich, wenn Sie die Konsole laufen lassen. Registrieren Sie sie daher als Dienst.

Ubuntu

sudo systemctl enable syncthing@${USER}.service
sudo systemctl start syncthing@${USER}.service

Mac

brew services start syncthing

Auf dem Mac wird Syncthing gestartet, aber ich kann die Web-GUI nicht sehen ... Wenn es bereits eingestellt ist, wird die Synchronisation ordnungsgemäß durchgeführt.

Wenn Sie die Web-GUI auf Ihrem Mac starten möchten, verwenden Sie den separaten Befehl "syncthing -browser-only".

Einstellungen synchronisieren

Es sind die folgenden Schritte zum Synchronisieren erforderlich.

  1. Starten Sie "Syncthing" auf allen Geräten, die Sie synchronisieren möchten
  2. Registrieren Sie das "Zielgerät"
  3. Fügen Sie einen zu synchronisierenden Ordner hinzu
  4. Einstellungen für freigegebene Ordner
  5. Warten Sie, bis die Synchronisierung abgeschlossen ist

Da 1. abgeschlossen ist, werden wir aus 2 erklären.

Registrieren Sie "Zielgerät"

Unten rechts auf dem im Browser angezeigten Bildschirm befindet sich die Schaltfläche "Verbundenes Gerät hinzufügen". Drücken Sie sie. Dann wird das folgende Popup angezeigt. image.png

Wenn sich die zu synchronisierenden Geräte im selben Netzwerk befinden und syncsync läuft Die Geräte-ID des anderen Terminals wird automatisch angezeigt, sodass Sie sie einfach auswählen können.

Wenn sie nicht im selben Netzwerk vorhanden sind, müssen Sie die Geräte-ID ermitteln und eingeben.

So finden Sie die Geräte-ID

Sie können die Geräte-ID überprüfen, indem Sie oben rechts auf dem Bildschirm Menü → ID anzeigen auswählen. image.png

Stellen Sie die obigen Einstellungen für 2 Einheiten ein.

Fügen Sie einen zu synchronisierenden Ordner hinzu

Dieses Mal werde ich versuchen, den Ordner "~ / github" von Ubuntu zu synchronisieren.

Einstellungen für die Synchronisierungsquelle (Ubuntu)

Auf der linken Seite des Synchronisierungsquellbrowsers befindet sich die Schaltfläche "Ordner hinzufügen". Drücken Sie sie also. image.png

Dann wird das folgende Popup angezeigt. Geben Sie den Ordner, den Sie freigeben möchten, im Ordnernamen an. Ich war zufällig ein Ordner in meinem Home-Verzeichnis, also ist es in Ordnung, aber in anderen Fällen legen Sie auch den Ordnerpfad fest.

image.png

Notieren Sie sich diese Ordner-ID, da sie wichtig ist.

Im Popup befindet sich eine Registerkarte "Ignorierter Dateiname", sodass Sie Dateien ausschließen können, die Sie hier nicht freigeben möchten. Ich habe es direkt in der Konfigurationsdatei gemacht.

https://docs.syncthing.net/users/ignoring.html

Einstellungen für das Synchronisierungsziel (Mac)

Nehmen Sie die gleichen Einstellungen am Synchronisationsziel vor. Der Punkt ist, die "Ordner-ID" gleich zu machen. image.png

Freigegebene Ordnereinstellungen

Klicken Sie auf die Schaltfläche Bearbeiten des angeschlossenen Geräts. image.png

Klicken Sie im angezeigten Popup auf "Freigeben", überprüfen Sie den Ordner, den Sie in "Ordner für dieses Gerät freigeben" freigeben möchten, und speichern Sie ihn. image.png

Warten Sie, bis die Synchronisierung abgeschlossen ist

Wenn die Synchronisationseinstellung erfolgreich ist, müssen Sie nur warten, bis die Synchronisation wie unten gezeigt beginnt! image.png

Synchronisieren Sie in einer Nur-CLI-Umgebung

Mit den Standardeinstellungen können Sie den Web-GUI-Bildschirm nur von localhost aus öffnen. Wenn Sie die Einstellungen so ändern, dass die Web-GUI von außen angezeigt werden kann, können Sie die Einstellungen daher auch in einer Nur-CLI-Umgebung problemlos festlegen.

In einer öffentlichen Umgebung wie VPS oder EC2 kann jedoch jeder die Einstellungen ändern. Stellen Sie daher sicher, dass Sie ein Kennwort festlegen.

Konfigurationsdatei bearbeiten

Der Speicherort der Einstellungsdatei ist je nach Umgebung unterschiedlich.

~/.config/syncthing/config.xml
~/Library/ApplicationSupport/Syncthing/config.xml

Da es eine GUI-Einstellung gibt, ändern Sie diese wie folgt.

before


<gui enabled="true" tls="false" debugging="false">
    <address>127.0.0.1:8384</address>
    <apikey>aNw6DrLYWukHvLK22Ed7M5hoR5tixPJG</apikey>
    <theme>dark</theme>
</gui>

after


<gui enabled="true" tls="false" debugging="false">
    <!--0 hier.0.0.Auf 0 festgelegt-->
    <address>0.0.0.0:8384</address>
    <apikey>aNw6DrLYWukHvLK22Ed7M5hoR5tixPJG</apikey>
    <theme>dark</theme>
</gui>

Wenn die Synchronisierung ausgeführt wird, starten Sie die Synchronisierung neu.

Jetzt können Sie es von außen sehen, aber wie oben erwähnt, befindet es sich in einem öffentlichen Zustand, sodass Sie eine Warnung erhalten. image.png

Klicken Sie unten rechts auf die Schaltfläche "Einstellungen" und legen Sie den Benutzer und das Kennwort der GUI fest. image.png

Ich möchte die Synchronisation vollständig nur mit der CLI einstellen

Es war auch möglich, es vollständig in der Befehlszeile festzulegen, indem einfach "config.xml" festgelegt wurde. Es war jedoch etwas ärgerlich, da ich das XML direkt bearbeiten muss und es auf allen mehreren Terminals beschrieben werden muss.

Obwohl es hell ist, werde ich die Einstellmethode beschreiben.

Installation

Der Installationsvorgang ist genau der gleiche wie oben.

Geräteregistrierung

Ich denke, es gibt ein "Gerät" -Tag, also kopieren Sie diesen Inhalt und setzen Sie ihn direkt darunter. Legen Sie die ID des Geräts fest, das Sie mit der ID des Geräts synchronisieren möchten.

<device id="XXXXXXXXX" name="xxx-ubuntu" compression="metadata" introducer="false" skipIntroductionRemovals="false" introducedBy="">
     <address>dynamic</address>
     <paused>false</paused>
     <autoAcceptFolders>false</autoAcceptFolders>
     <maxSendKbps>0</maxSendKbps>
     <maxRecvKbps>0</maxRecvKbps>
     <maxRequestKiB>0</maxRequestKiB>
</device>

Die Geräte-ID ist das Protokoll, das angezeigt wird, wenn der Befehl "syncthing" ausgeführt wird, der WEB-Bildschirm im Fall der GUI und der Dienst (Dämon) im Fall der Ausführung. Überprüfen Sie anhand des folgenden Befehls.

syncthing -device-id

Ordnerregistrierung

Oben in config.xml befindet sich das Tagfolder id = "default". Kopieren Sie also alles und legen Sie es direkt darunter fest.

<folder id="default" label="Default Folder" path="/Users/xxxx/Sync" type="sendreceive" rescanIntervalS="3600" fsWatcherEnabled="true" fsWatcherDelayS="10" ignorePerms="false" autoNormalize="true">
    <filesystemType>basic</filesystemType>
    <device id="XXXXXXXXX" introducedBy=""></device>
    <minDiskFree unit="%">1</minDiskFree>
    <versioning></versioning>
    <copiers>0</copiers>
    <pullerMaxPendingKiB>0</pullerMaxPendingKiB>
    <hashers>0</hashers>
    <order>random</order>
    <ignoreDelete>false</ignoreDelete>
    <scanProgressIntervalS>0</scanProgressIntervalS>
    <pullerPauseS>0</pullerPauseS>
    <maxConflicts>-1</maxConflicts>
    <disableSparseFiles>false</disableSparseFiles>
    <disableTempIndexes>false</disableTempIndexes>
    <paused>false</paused>
    <weakHashThresholdPct>25</weakHashThresholdPct>
    <markerName>.stfolder</markerName>
    <copyOwnershipFromParent>false</copyOwnershipFromParent>
    <modTimeWindowS>0</modTimeWindowS>
</folder>

Schreiben Sie den folgenden Teil der kopierten Einstellungen neu.

Starten Sie nach dem Ändern der Einstellungen die Synchronisierung neu.

Einstellungsbeispiel

example


<folder id="github-folder-id" label="github" path="/Users/xxxxx/github" type="sendreceive" rescanIntervalS="3600" fsWatcherEnabled="true" fsWatcherDelayS="10" ignorePerms="false" autoNormalize="true">
    <filesystemType>basic</filesystemType>
    <device id="Geräte-ID 1" introducedBy=""></device>
    <device id="Geräte-ID 2" introducedBy=""></device>
    <device id="Geräte-ID 3" introducedBy=""></device>
    <minDiskFree unit="%">1</minDiskFree>
    <versioning></versioning>
    <copiers>0</copiers>
    <pullerMaxPendingKiB>0</pullerMaxPendingKiB>
    <hashers>0</hashers>
    <order>random</order>
    <ignoreDelete>false</ignoreDelete>
    <scanProgressIntervalS>0</scanProgressIntervalS>
    <pullerPauseS>0</pullerPauseS>
    <maxConflicts>-1</maxConflicts>
    <disableSparseFiles>false</disableSparseFiles>
    <disableTempIndexes>false</disableTempIndexes>
    <paused>false</paused>
    <weakHashThresholdPct>25</weakHashThresholdPct>
    <markerName>.stfolder</markerName>
    <copyOwnershipFromParent>false</copyOwnershipFromParent>
    <modTimeWindowS>0</modTimeWindowS>
</folder>

das ist alles. Lassen Sie es uns für eine Weile verwenden und seine Verwendbarkeit überprüfen.

Recommended Posts

Ich habe versucht, mit "Syncthing" Dateien auf mehreren PCs zu synchronisieren
Ich habe versucht, WAV-Dateien mit Pydub zu synthetisieren.
Ich habe versucht, den auf Papier gestempelten Stempel mit OpenCV zu digitalisieren
Ich habe versucht, BigQuery-Daten mit Jupyter Lab mit GCP zu visualisieren
Ich habe versucht, Azure Speech to Text zu verwenden.
Ich habe versucht, Text mit TensorFlow zu klassifizieren
Mit Keras 'Stateful RNN habe ich versucht zu prüfen, ob es sich um ein selbstgesteuertes Lied handelt, das auf der WAV-Datei basiert.
Ich habe versucht, jpholidayp über Proxy zu verwenden, um cron nur an Wochentagen auszuführen
Ich habe versucht, mehrere Servomotoren MG996R mit dem Servotreiber PCA9685 zu steuern.
Ich habe versucht, Remote API mit GAE / J zu verwenden
Ich möchte CSV-Dateien mit Vega-Lite visualisieren!
[Pythonocc] Ich habe versucht, CAD auf einem Jupyter-Notebook zu verwenden
Ich habe ein ○ ✕ Spiel mit TensorFlow gemacht
Ich habe versucht, die multiple Regressionsanalyse anhand konkreter Beispiele so einfach wie möglich zu erklären.
Ich habe versucht, einen Übersetzungs-BOT zu erstellen, der mit Discord unter Verwendung von Googletrans funktioniert
Ich habe versucht, Argparse zu verwenden
Ich habe versucht, anytree zu verwenden
Ich habe versucht, aiomysql zu verwenden
Ich habe versucht, Summpy zu verwenden
Ich habe versucht, Coturn zu verwenden
Ich habe versucht, Pipenv zu verwenden
Ich habe versucht, Matplotlib zu verwenden
Ich habe versucht, "Anvil" zu verwenden.
Ich habe versucht, Hubot zu verwenden
Ich habe versucht, ESPCN zu verwenden
Ich habe versucht, openpyxl zu verwenden
Ich habe versucht, Ipython zu verwenden
Ich habe versucht zu debuggen.
Ich habe versucht, PyCaret zu verwenden
Ich habe versucht, Cron zu verwenden
Ich habe versucht, ngrok zu verwenden
Ich habe versucht, face_recognition zu verwenden
Ich habe versucht, Jupyter zu verwenden
Ich habe versucht, doctest zu verwenden
Ich habe versucht, Folium zu verwenden
Ich habe versucht, jinja2 zu verwenden
Ich habe versucht, Folium zu verwenden
Ich habe versucht, das Zeitfenster zu verwenden
Ich habe versucht, Mine Sweeper auf dem Terminal mit Python zu implementieren
Ich habe versucht, mit AWS Lambda einen AMI zu erhalten
Ich habe versucht, die Sündenfunktion mit Chainer zu approximieren
Ich habe versucht, mit OpenCV Ann Man zu werden
Ich habe versucht, PySpark von Jupyter 4.x auf EMR zu verwenden
Ich habe versucht, die Sprache mit CNN + Melspectogram zu identifizieren
Ich habe versucht, mit Python auf Google Spread Sheets zuzugreifen
Ich habe versucht, Scrapy auf Anaconda zu installieren und konnte es nicht
Ich habe versucht, das Wissensdiagramm mit OpenKE zu ergänzen
Ich habe versucht, ein Konfigurationsdiagramm mit Diagrammen zu zeichnen
Ich habe versucht, das Bild mithilfe von maschinellem Lernen zu komprimieren
Ich habe versucht, Videos mit der Youtube Data API (Anfänger) zu suchen.
[Mit Bild] Ich habe versucht, neofetch auf verschiedenen Betriebssystemen zu verwenden!
[Ich habe versucht, Pythonista 3 zu verwenden] Einführung
Ich habe zwei Möglichkeiten ausprobiert, um mehrere Commits mit Git zu kombinieren
Ich habe versucht, easydict (Memo) zu verwenden.
Ich habe versucht, die Anzeigenoptimierung mithilfe des Banditenalgorithmus zu simulieren
Ich habe versucht, SVM zu organisieren.