[LINUX] J'ai essayé d'utiliser "Syncthing" pour synchroniser des fichiers sur plusieurs PC

Je voulais partager des fichiers sur plusieurs PC sans git push, alors j'ai essayé Syncthing introduit par la société!

Qu'est-ce que Syncthing?

Dépôt officiel https://github.com/syncthing/syncthing/

Syncthing est un programme de synchronisation de fichiers en continu. Il synchronise les fichiers entre deux ou plusieurs ordinateurs (à partir du référentiel officiel)

Traduit littéralement, il dit: «Partager des fichiers entre deux ou plusieurs PC».

L'image est similaire à DropBox et OneDrive, mais contrairement à ceux-ci, les fichiers ne sont pas téléchargés sur le serveur.

Système d'exploitation compatible, etc.

À partir de mars 2020, les éléments suivants sont pris en charge.

Installation

J'ai un Mac et Ubuntu sous la main, donc je vais les essayer avec ces deux-là. Tout d'abord, je décrirai la procédure de configuration avec GUI, mais comme il semble que cela ne puisse être fait qu'avec CLI, je la décrirai plus tard.

Ubuntu

référence 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
#Exécuter → Lancer le navigateur
syncthing

Mac

brew install syncthing
#Exécuter → Lancer le navigateur
syncthing

CentOS / Autre Linux

Je ne l'ai pas confirmé car il n'y a pas d'environnement, mais il semble que l'installation binaire puisse être effectuée comme indiqué sur le site suivant. https://computingforgeeks.com/install-and-configure-syncthing-on-centos-linux/

Android

Je n'ai pas confirmé cela car il n'y a pas d'environnement, mais il y a une application dans le magasin. https://play.google.com/store/apps/details?id=com.nutomic.syncthingandroid&hl=ja


Lorsque vous exécutez la commande syncthing, le navigateur sera lancé et l'écran suivant sera affiché. image.png

S'inscrire / exécuter en tant que service

Si vous exécutez la commande syncthing selon la procédure ci-dessus, la synchronisation ne sera possible que si vous laissez la console en marche, donc enregistrez-la en tant que service.

Ubuntu

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

Mac

brew services start syncthing

Sur Mac, Syncthing démarre, mais je ne vois pas l'interface graphique Web ... S'il est déjà défini, la synchronisation sera effectuée correctement.

Si vous souhaitez lancer l'interface graphique Web sur votre Mac, utilisez la commande séparée syncthing -browser-only.

Paramètres de synchronisation

Il y a les étapes suivantes pour synchroniser.

  1. Lancez syncthing sur tous les appareils que vous souhaitez synchroniser
  2. Enregistrez le "périphérique de destination"
  3. Ajoutez un dossier à synchroniser
  4. Paramètres du dossier partagé
  5. Attendez la fin de la synchronisation

Puisque 1. est terminé, nous expliquerons à partir de 2.

Enregistrer "l'appareil de destination"

Il y a un bouton «Ajouter un appareil connecté» en bas à droite de l'écran affiché sur le navigateur, alors appuyez dessus. Ensuite, la fenêtre contextuelle suivante s'affiche. image.png

Si les appareils à synchroniser sont sur le même réseau avec syncsync opérationnel L'ID d'appareil de l'autre terminal s'affiche automatiquement, vous pouvez donc simplement le sélectionner.

S'ils n'existent pas sur le même réseau, vous devez rechercher et saisir l'ID de l'appareil.

Comment trouver l'ID de l'appareil

Vous pouvez vérifier l'ID de l'appareil en sélectionnant Menu → Afficher l'ID en haut à droite de l'écran. image.png

Définissez les paramètres ci-dessus pour 2 unités.

Ajouter un dossier à synchroniser

Cette fois, je vais essayer de synchroniser le dossier ~ / github d'Ubuntu.

Paramètres de la source de synchronisation (Ubuntu)

Il y a un bouton «Ajouter un dossier» sur le côté gauche du navigateur de source de synchronisation, alors appuyez dessus. image.png

Ensuite, la fenêtre contextuelle suivante s'affiche. Spécifiez le dossier que vous souhaitez partager dans le nom du dossier. Il se trouve que j'étais un dossier dans mon répertoire personnel, donc ça va comme ça, mais dans d'autres cas, définissez également le chemin du dossier.

image.png

Notez cet «ID de dossier» car il est important.

Il y a un onglet «nom de fichier ignoré» dans la fenêtre contextuelle, vous pouvez donc exclure les fichiers que vous ne voulez pas partager ici. Je l'ai fait directement dans le fichier de configuration.

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

Paramètres de destination de synchronisation (Mac)

Effectuez les mêmes réglages sur la destination de synchronisation. Le but est de rendre l'ID de dossier identique. image.png

Paramètres du dossier partagé

Cliquez sur le bouton Modifier de l'appareil connecté. image.png

Appuyez sur «Partager» dans la fenêtre contextuelle affichée, cochez le dossier que vous souhaitez partager dans «Dossier à partager avec cet appareil» et enregistrez-le. image.png

Attendez la fin de la synchronisation

Si le réglage de synchronisation est réussi, il vous suffit d'attendre que la synchronisation démarre comme indiqué ci-dessous! image.png

Synchroniser dans un environnement CLI uniquement

Avec les paramètres par défaut, vous ne pouvez ouvrir l'écran GUI Web qu'à partir de localhost. Par conséquent, si vous modifiez les paramètres afin que l'interface graphique Web puisse être affichée de l'extérieur, vous pouvez facilement définir les paramètres même dans un environnement CLI uniquement.

Cependant, dans un environnement public tel que VPS ou EC2, n'importe qui peut modifier les paramètres, assurez-vous donc de définir un mot de passe.

Modifier le fichier de configuration

L'emplacement du fichier de paramètres varie en fonction de l'environnement.

--Pour Linux

~/.config/syncthing/config.xml

--Pour Mac

~/Library/ApplicationSupport/Syncthing/config.xml

Puisqu'il existe un paramètre GUI, modifiez-le comme suit.

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 ici.0.0.Fixé à 0-->
    <address>0.0.0.0:8384</address>
    <apikey>aNw6DrLYWukHvLK22Ed7M5hoR5tixPJG</apikey>
    <theme>dark</theme>
</gui>

Si la synchronisation est en cours, redémarrez la synchronisation.

Maintenant, vous pouvez le voir de l'extérieur, mais comme mentionné ci-dessus, il est dans un état public, vous recevrez donc un avertissement. image.png

Cliquez sur le bouton Paramètres en bas à droite et définissez l'utilisateur et le mot de passe de l'interface graphique. image.png

Je souhaite définir complètement la synchronisation avec uniquement la CLI

Il était également possible de le définir complètement sur la ligne de commande simplement en définissant config.xml. Cependant, c'était un peu ennuyeux car je dois éditer le XML directement et il doit être décrit sur tous les terminaux multiples.

Bien qu'il soit léger, je décrirai la méthode de réglage.

Installation

La procédure d'installation est exactement la même que ci-dessus.

Enregistrement de l'appareil

Je pense qu'il existe une balise device, alors copiez ce contenu et définissez-le directement en dessous. Définissez l'ID de l'appareil que vous souhaitez synchroniser avec l'ID de l'appareil.

<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>

L'ID de l'appareil est le journal affiché lorsque la commande syncthing est exécutée, l'écran WEB dans le cas de l'interface graphique et le service (démon) dans le cas de l'exécution. Vérifiez à partir de la commande suivante.

syncthing -device-id

Enregistrement de dossier

Il y a une balise de folder id =" default " en haut de config.xml, donc copiez-la et définissez-la directement ci-dessous.

<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>

Réécrivez la partie suivante des paramètres copiés.

Après avoir modifié les paramètres, redémarrez syncthing.

Exemple de réglage

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="ID appareil 1" introducedBy=""></device>
    <device id="ID de l'appareil 2" introducedBy=""></device>
    <device id="ID de l'appareil 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>

c'est tout. Utilisons-le pendant un moment et vérifions sa convivialité.

Recommended Posts

J'ai essayé d'utiliser "Syncthing" pour synchroniser des fichiers sur plusieurs PC
J'ai essayé de synthétiser des fichiers WAV en utilisant Pydub.
J'ai essayé de numériser le tampon estampé sur papier en utilisant OpenCV
J'ai essayé de visualiser les données BigQuery à l'aide de Jupyter Lab avec GCP
J'ai essayé d'utiliser Azure Speech to Text.
J'ai essayé de classer le texte en utilisant TensorFlow
En utilisant le RNN avec état de Keras, j'ai essayé de voir s'il pouvait s'agir d'une chanson auto-exploitée basée sur le fichier wav.
J'ai essayé d'utiliser jpholidayp sur proxy pour exécuter cron uniquement en semaine
J'ai essayé de contrôler plusieurs servomoteurs MG996R en utilisant le servomoteur PCA9685.
J'ai essayé d'utiliser l'API à distance avec GAE / J
Je veux visualiser les fichiers csv en utilisant Vega-Lite!
[Pythonocc] J'ai essayé d'utiliser la CAO sur un notebook Jupyter
J'ai créé un jeu ○ ✕ avec TensorFlow
J'ai essayé d'expliquer l'analyse de régression multiple aussi facilement que possible à l'aide d'exemples concrets.
J'ai essayé de créer un BOT de traduction qui fonctionne avec Discord en utilisant googletrans
J'ai essayé d'utiliser argparse
J'ai essayé d'utiliser anytree
J'ai essayé d'utiliser aiomysql
J'ai essayé d'utiliser Summpy
J'ai essayé d'utiliser coturn
J'ai essayé d'utiliser Pipenv
J'ai essayé d'utiliser matplotlib
J'ai essayé d'utiliser "Anvil".
J'ai essayé d'utiliser Hubot
J'ai essayé d'utiliser ESPCN
J'ai essayé d'utiliser openpyxl
J'ai essayé d'utiliser Ipython
J'ai essayé de déboguer.
J'ai essayé d'utiliser PyCaret
J'ai essayé d'utiliser cron
J'ai essayé d'utiliser ngrok
J'ai essayé d'utiliser face_recognition
J'ai essayé d'utiliser Jupyter
J'ai essayé d'utiliser doctest
J'ai essayé d'utiliser du folium
J'ai essayé d'utiliser jinja2
J'ai essayé d'utiliser du folium
J'ai essayé d'utiliser la fenêtre de temps
J'ai essayé d'implémenter Mine Sweeper sur un terminal avec python
J'ai essayé d'obtenir une AMI en utilisant AWS Lambda
J'ai essayé d'approcher la fonction sin en utilisant le chainer
J'ai essayé de devenir un Ann Man en utilisant OpenCV
J'ai essayé d'utiliser PySpark de Jupyter 4.x sur EMR
J'ai essayé d'identifier la langue en utilisant CNN + Melspectogram
J'ai essayé d'accéder aux feuilles de calcul Google en utilisant Python
J'ai essayé d'installer scrapy sur Anaconda et je n'ai pas pu
J'ai essayé de compléter le graphe de connaissances en utilisant OpenKE
J'ai essayé de dessiner un diagramme de configuration à l'aide de diagrammes
J'ai essayé de compresser l'image en utilisant l'apprentissage automatique
J'ai essayé de rechercher des vidéos à l'aide de l'API de données Youtube (débutant)
[Avec image] J'ai essayé d'utiliser neofetch sur différents OS!
[J'ai essayé d'utiliser Pythonista 3] Introduction
J'ai essayé deux façons de combiner plusieurs commits avec Git
J'ai essayé d'utiliser easydict (mémo).
J'ai essayé de simuler l'optimisation des publicités à l'aide de l'algorithme Bandit
J'ai essayé d'organiser SVM.