Die Geschichte der Erstellung einer Home Cloud. Teil 3. Erstellen einer persönlichen Cloud - Installieren und Konfigurieren von Nextcloud

Auf dem Weg zur Erstellung unseres eigenen Cloud-Service haben wir uns an das Debian-System gewöhnt und einen Webserver erstellt . Jetzt ist es Zeit für den letzten Schritt - das Erstellen und Konfigurieren einer persönlichen Cloud basierend auf dem Nextcloud-Server.





Inhaltsverzeichnis


Teil 1. Einrichten Ihrer Debian-Umgebung für den täglichen Gebrauch
Teil 2. Server erstellen - LAMP in Debian einrichten
Teil 3. Erstellen einer persönlichen Cloud - Installieren und Konfigurieren von Nextcloud
Teil 4. Update 2018 - Debian 9 und Nextcloud 13
Teil 5. Aktualisierung 2019 - PHP 7.2, MariaDB 10.4 und Nextcloud 17



Schnelle Kapitelnavigation


Vorwort
Vorbereiten eines Servers für die Installation von Nextcloud
Installieren Sie Nextcloud
Organisation des Nextcloud-Speichers
Konfigurieren Sie den Nextcloud Virtual Machine-Zugriff über das lokale Netzwerk
Nextcloud-Setup
Erweiterte Feinabstimmung von Nextcloud
Schutz für Nextcloud
Smartphone Cloud Sync
Personal Computer Cloud Sync
Nachwort



Vorwort


So kamen wir zu dem Punkt, für den alles begonnen hatte und zu dem wir nicht schnell vorangekommen sind. In diesem Teil werden die Installation und einige Punkte bei der Konfiguration des Nextcloud-Servers in der virtuellen VMWare-Maschine sowie einige Erfahrungen mit der Synchronisierung des Inhalts eines Windows-basierten Smartphones und Ordners auf einem Desktop-Computer beschrieben. Die folgenden Installationsanweisungen für Nextcloud implizieren, dass der Dienst auf einem Server bereitgestellt wird, der gemäß den Anweisungen im vorherigen Teil meiner Geschichte erstellt wurde.

Ursprünglich sollte dieses Kapitel klein sein, da ich mich nur auf die Beschreibung der Installation und Konfiguration von Nextcloud beschränken wollte, um diese Geschichte über "nur Linux für eine bestimmte Aufgabe eingeben" zu beenden. Da er jedoch dachte, dass dies für jemanden interessant erscheinen könnte, beschloss er zu zeigen, wie ich das Problem der Synchronisierung der Ordner meines Heimcomputers gelöst habe, sodass dieses letzte Kapitel reibungslos aus klaren Anweisungen darüber resultierte, was und wie beim Programmieren zu tun ist. Dies erklärt einige „Vinaigrette“ in diesem Teil - sie beginnt mit der Arbeit und den Einstellungen unter Linux, geht auf die Ebene der Netzwerk- und virtuellen Softwareeinstellungen über und endet mit dem Planen von Krücken unter Windows. Andererseits hat diese Artikelserie den Titel "Geschichte der Schöpfung ..." und ich habe beschlossen, ihn bis zum Ende zu erzählen.

Hinweis
Beim weiteren Lesen der Konstruktionen des Formulars http: // 127.0.0.1 (https: // 127.0.0.1) muss der Leerzeichen nach http: // (https: //) beim Aufrufen der Adressleiste des Browsers entfernt werden. Beim Veröffentlichen dieses Artikels wurde ein Leerzeichen eingefügt, um zu verhindern, dass die Engine automatisch Text in Links konvertiert.



Vorbereiten eines Servers für die Installation von Nextcloud


Nextcloud ist eine Webanwendung, die eine Reihe von Dateien enthält und mit einer bestimmten MySQL-Datenbank arbeitet. Die Webanwendung wird als reguläre Site installiert, für deren Installation Sie die "Engine" -Dateien auf den Server hochladen, die Installationsdatei ausführen und die Details des Zugriffs auf die Datenbank angeben müssen, die zuvor für diese Site während der Installation erstellt wurde.

Erstellen Sie ein Verzeichnis, in dem Nextcloud-Dateien abgelegt werden:
# mkdir / var / www / nextcloud

Ich habe beschlossen, HTTP abzulehnen und den Zugriff nur über HTTPS zu belassen. Dazu müssen Sie Apache konfigurieren.

Öffnen Sie die Datei:
# nano /etc/apache2/sites-available/default-ssl.conf
Fügen Sie vor dem Tag den folgenden Inhalt hinzu:

<Directory /var/www/nextcloud> Options FollowSymLinks AllowOverride All Require all granted </Directory> 


HTTP-Konfiguration deaktivieren:
# a2dissite 000-default.conf

Port 80 schließen:
# ufw delete allow 80

Und starten Sie den Webserver neu:
# service apache2 restart

Jetzt müssen Sie eine Datenbank für nextcloud erstellen. Wir geben MySQL ein, indem wir das Passwort vom MySQL-Superuser eingeben:
# mysql -u root -p

Erstellen Sie eine Datenbank mit dem Namen nextcloud:
mysql> CREATE DATABASE `nextcloud`;

Erstellen Sie einen Benutzer mit dem Namen nextcloud und dem einfachen Passwort nc123:
mysql> CREATE USER 'nextcloud' @ 'localhost' IDENTIFIED BY 'nc123';

Wir gewähren dem nextcloud-Benutzer vollen Zugriff auf die nextcloud-Datenbank:
mysql> GEWÄHRLEISTUNG FÜR ALLE PRIVILEGIEN FÜR "nextcloud". * TO "nextcloud" @ "localhost";

Berechtigungstabelle aktualisieren:
mysql> FLUSH PRIVILEGES;

Beenden Sie mysql:
mysql: mysql> exit

Darüber hinaus müssen Sie zusätzliche Module für PHP installieren:
# apt-get install curl libcurl3 libcurl3-dev php5-curl
# a2enmod umschreiben

Im ersten Teil dieser Geschichte haben wir Ports für die Netzwerk- und E-Mail-Interaktion geöffnet, aber für unser Ziel sind sie nicht erforderlich und es ist besser, sie zu schließen. Löschen Sie die Regeln:
# ufw delete allow 138 / udp
# ufw delete allow 139 / udp
# ufw delete allow 139 / tcp
# ufw delete allow 445 / tcp
# ufw delete allow 25
# ufw delete allow 465
# ufw delete allow 110
# ufw delete allow 143
# ufw delete allow 993



Installieren Sie Nextcloud


Laden Sie die Dateien herunter und entpacken Sie sie in das vorgesehene Verzeichnis:
# wget download.nextcloud.com/server/releases/nextcloud-11.0.2.tar.bz2
# tar xjf nextcloud-11.0.2.tar.bz2 -C / var / www

Ordnerberechtigungen ändern:
# chmod 755 / var / www / nextcloud

Und wir weisen dem Besitzer dieses Ordners einen Webserver zu, damit es keine Probleme beim Schreiben gibt:
# chown -R www-data: www-data / var / www / nextcloud

Das ist alles! Der Dienst wird installiert. Wenn Sie im Browser https: // 127.0.0.1/nextcloud eingeben, wird der Installationsassistent geöffnet. Aber warten wir damit, nachdem wir zuvor einen Ort zum Speichern von Benutzerdaten vorbereitet haben.

Es ist erwähnenswert, dass Nextcloud Version 11.0.2 derzeit ziemlich veraltet ist und Schwachstellen enthält, die in neueren und aktuelleren Versionen nicht vorhanden sind. Wenn Sie also den 11.x-Zweig installieren, ist es besser, eine neuere Version zu installieren (Anfang 2018 - dies Version 11.0.7).



Organisation des Nextcloud-Speichers


Dieser Teil ist optional und kann problemlos übersprungen werden - alles wird ohne ihn funktionieren. Wenn Sie jedoch ein Datenverzeichnis außerhalb der virtuellen Maschine erstellen, empfehlen wir Ihnen, sich damit vertraut zu machen.

Standardmäßig werden synchronisierte Inhalte im Verzeichnis / var / www / nextcloud / nxcdata gespeichert. Diese Option passte aus mehreren Gründen nicht sofort zu mir. Einerseits möchte ich die Dateigröße einer virtuellen Festplatte nicht ständig erhöhen. Andererseits möchte ich eine separate und von der Datenspeicherlösung der virtuellen Maschine unabhängige Lösung haben. Das Einfachste, was einem sofort in den Sinn kommt, ist die Verwendung eines USB-Laufwerks. Wenn nicht genügend Platz vorhanden ist, kann das Laufwerk einfach ausgetauscht werden. Bei Bedarf kann es an einen anderen Computer angeschlossen werden und die erforderlichen Dateien herunterladen. Mobil und bequem. Ich wollte USB 2.0 jedoch nicht verwenden, da die Bandbreite für moderne Standards relativ gering ist, und ich war mit USB 3.0 nicht erfolgreich - die Virtualisierungssoftware (WMVare und VirtualBox) wollte normalerweise keine Geräte weiterleiten, die über einen USB 3.0-Controller verbunden sind.

Mein Appetit beim Erstellen der Cloud hat zugenommen und ich hatte nicht mehr als ein Terabyte. Am Ende entschied ich mich, eine normale Zwei-Terabyte-Festplatte an die virtuelle Maschine anzuschließen, die sich bereits im Computer befand und mit diesem verbunden war. Bei Bedarf kann es problemlos herausgezogen und über den vorhandenen SATA <-> USB 3.0-Adapter angeschlossen werden.

Die Hauptidee besteht also darin, einen permanenten Punkt zum Verbinden eines Verzeichnisses mit Benutzerinhalten außerhalb des Verzeichnisses / var / www / nextcloud zu organisieren, in dem ein symbolischer Link namens nxcdata erstellt wird, der auf das Verzeichnis der realen Daten verweist, das auf verschiedene Weise auf verschiedenen Medien verbunden werden kann.

Erstellen Sie ein Verzeichnis:
# mkdir / mnt / nxcdata

Wir ändern die Rechte:
# chmod 770 / mnt / nxcdata

Wir machen den Webserver-Besitzer:
# chown www-data: www-data / mnt / nxcdata

Ich kann die Daten überall und überall platzieren. Die Hauptsache ist, einen symbolischen Link zu diesem Verzeichnis im Verzeichnis / mnt / nxcdata zu platzieren und es nxcdata zu nennen, d. H. Der vollständige Pfad sieht aus wie / mnt / nxcdata / nxcdata.

Zuerst habe ich die Lösung für den lokalen Ordner getestet, den ich im Home-Verzeichnis erstellt habe.

Erstellt einen Ordner an der richtigen Stelle:
$ mkdir / home / user / nxcdata

Rechte geändert:
# chmod 755 / home / user / nxcdata

Besaß den Webserver:
# chown -R www-data: www-data / home / user / nxcdata

Erstellt eine symbolische Verknüpfung:
# ln -s / home / user / nxcdata / mnt / nxcdata / nxcdata

Diese Lösung war praktikabel, sodass Sie weitermachen können. Das externe Datenverzeichnis kann auf zwei Arten verbunden werden - über den gemeinsam genutzten VMWare-Dienst oder direkt als physische Festplatte oder Partition. Es versteht sich, dass die erste Lösung nur möglich ist, wenn VMware-Tools installiert sind, die nur dann problemlos installiert werden, wenn eine grafische Oberfläche des Betriebssystems vorhanden ist (andernfalls müssen Sie die Installationsskripte von VMware-Tools bearbeiten). Wenn wir die grafische Oberfläche verlassen, bleibt nur die Möglichkeit, das Laufwerk direkt mit der virtuellen Maschine zu verbinden, aber mit dieser Lösung musste ich viel leiden. Nach einiger Zeit fand ich immer noch eine stabile Arbeitsversion, unter Berücksichtigung der Tatsache, dass ein universelles Skript erfunden wurde, das beide Verbindungsoptionen enthielt.

Für einen Ordner, der über freigegebene VMWare-Ordner im Abschnitt Freigegebene Ordner der Einstellungen der virtuellen Maschine verbunden ist, müssen Sie den erforderlichen Ordner vom Hostsystem aus verbinden und ihm den Namen vmw-nxcdata geben. Dieser Ordner kann auf ein Verzeichnis auf der Festplatte oder direkt auf das Stammverzeichnis einer Festplatte auf dem Hostsystem verweisen.

Der bereitgestellte Ordner wird im virtuellen System automatisch unter dem Pfad / mnt / hgfs / vmw-nxcdata angezeigt. Das Problem ist jedoch, dass der Webserver nicht über genügend Rechte zum Schreiben von Dateien entlang dieses Pfads verfügt und die Standardmittel des Systems die Rechte für dieses Verzeichnis nicht neu zuweisen können. Daher musste ich herausfinden, wie solche Ressourcen manuell bereitgestellt werden können.

Erstellen Sie einen Ordner:
# mkdir / mnt / vmw-nxcdata

Wir mounten mit dem vmhgfs-Modul, das mit vmware-tools installiert wurde:
# mount -t vmhgfs -o uid = www-data, gid = www-data, fmask = 007, dmask = 007 .host: / vmw-nxcdata / mnt / vmw-nxcdata

Die Montage muss mit genau diesen Parametern durchgeführt werden, damit der Webserver in Zukunft problemlos funktioniert. Anfangs habe ich ohne Angabe von UID / GID und Masken gemountet, aber dann hat es zu nichts Gutem geführt, da es nicht mehr möglich war, die Rechte nach dem Mounten zu ändern. Nach Abschluss des Mount wird möglicherweise Folgendes angezeigt: "Eintrag zu mtab konnte nicht hinzugefügt werden, Fortsetzung", aber es wird gemountet und funktioniert.

Großartig, wir haben das Verzeichnis gemountet. Jetzt können Sie einen symbolischen Link zu diesem Verzeichnis in / mnt / nxcdata platzieren. Ich möchte dies jedoch nicht jedes Mal manuell tun, wenn ich den Server starte oder neu starte. Am einfachsten ist es, den obigen Befehl in die Datei /etc/rc.local einzugeben, um ihn in die Zeile „exit 0“ einzubinden. Ich wollte jedoch, dass das automatische Aushängen erfolgt, wenn die virtuelle Maschine aus Gründen der zuverlässigen Datensicherheit ausgeschaltet wird. Und ich habe mich entschlossen, alles auf Service-Ebene zu tun und mich ein wenig mit den init / update-rc-Mechanismen zu beschäftigen. Umso mehr war ich neugierig und es stellte sich als ziemlich interessant heraus.

Die folgenden Aktionen bedeuten, dass ein Systemdienst erstellt wird, der aufgerufen wird und vordefinierte Befehle ausführt, wenn das System ein- oder ausgeschaltet wird. Der Dienst wird durch ein Skript beschrieben, das nach bestimmten Regeln kompiliert wurde und sich in /etc/init.d befindet. Der INIT INFO-Block befindet sich ganz am Anfang des Skripts und enthält Zusatzinformationen, in denen ich die Anweisungen Default-Start und Default-Stop erwähnen möchte. Sie geben die Ausführungsebenen an, auf denen das Skript standardmäßig gestartet oder gestoppt werden soll.

Ausführungsstufen:

0 - Skriptausführung beim Ausschalten des Systems
1 - Skriptausführung beim Systemstart im Einzelbenutzermodus
2 - Skriptausführung beim Systemstart im Mehrbenutzermodus
3 - 5 - reserviert
6 - Skriptausführung beim Systemneustart

Nach dem Schreiben des Skripts wird es mithilfe des update-rc-Mechanismus aktiviert, der tatsächlich Links zum Skript in den erforderlichen Verzeichnissen /etc/rc0.d - /etc/rc6.d erstellt, deren Inhalt den von den Ausführungsebenen ausgeführten Aufgaben entspricht. Links können unabhängig voneinander erstellt werden. Im Gegensatz zum Aktivieren oder Deaktivieren der Apache-Webserverkonfigurationen müssen Sie hier jedoch viele Nuancen berücksichtigen, sodass Sie den Dienst über update-rc aktivieren oder deaktivieren müssen.

Erstellen Sie also eine Datei:
# nano /etc/init.d/nxcdata_automount.sh

Und schreiben Sie den folgenden Inhalt hinein:

 #!/bin/sh # nxcdata_automount.sh 1.0 ### BEGIN INIT INFO # Provides: myscript # Required-Start: # Required-Stop: # Default-Start: 1 2 3 4 5 # Default-Stop: 0 6 # Short-Description: nxcdata_automount.sh 1.0 # Description: nxcdata_automount.sh 1.0 ### END INIT INFO . /lib/lsb/init-functions # Start actions perform_start() { log_daemon_msg «Start nxcdata_automount» sleep 30 mount -t vmhgfs -o uid=www-data,gid=www-data,fmask=007,dmask=007 .host:/vmw-nxcdata /mnt/vmw-nxcdata #mount -t ntfs-3g -o uid=www-data,gid=www-data,fmask=007,dmask=007 /dev/sdb1 /mnt/sdb1 #mount -t ext4 /dev/sdb1 /mnt/sdb1 sleep 5 service fail2ban restart log_end_msg 0 return 0 } # Stop actions perform_stop() { log_daemon_msg «Stop nxcdata_automount» umount /mnt/nxcdata log_end_msg 0 return 0 } case $1 in start) perform_start ;; stop) perform_stop ;; *) echo “Usage: /etc/init.d/myscript {start|stop}” exit 3 ;; esac 


Achten Sie auf einige auskommentierte Teams im Abschnitt perform_start - dies ist unsere Grundlage für die Zukunft. Nach dem Mounten wird der fail2ban-Dienst neu gestartet.

Das Paradoxe ist, dass ich mich nach einem Jahr nicht mehr daran erinnere, warum ich das getan habe, aber ich bezweifle sehr, dass es einfach so gemacht wurde. Offensichtlich stürzte der Dienst nach dem Mounten des Dienstes aus irgendeinem Grund ab oder konnte zunächst nicht gestartet werden und musste manuell neu gestartet werden.

Nach einer solchen Ablenkung konfigurieren wir weiter. Erstellen Sie eine symbolische Verknüpfung:
# ln -s / mnt / vmw-nxcdata / mnt / nxcdata / nxcdata

Wir machen unser Skript ausführbar:
# chmod + x /etc/init.d/nxcdata_automount.sh

Fügen Sie das Skript zum Start hinzu:
# update-rc.d nxcdata_automount.sh Standardeinstellungen

Wir starten das System neu und stellen sicher, dass die automatische Bereitstellung erfolgreich war und alles auf die richtige Weise zugänglich ist.

Um das Skript zu entfernen, müssen Sie einige Befehle ausführen:
# update-rc.d -f nxcdata_automount.sh entfernen
# rm -f /etc/init.d/nxcdata_automount.sh

Wenn Sie ein Laufwerk nicht über freigegebene VMWare-Ordner bereitstellen, sollten Sie die gleichen Schritte wie beim Bereitstellen über freigegebene VMWare-Ordner ausführen, jedoch die Tatsache berücksichtigen, dass im System ein vollständiges zweites Laufwerk angezeigt wird. Wie finde ich den Laufwerksbuchstaben heraus?

Die meisten Linux-Blockgeräte sind über die SCSI-Schnittstelle verbunden, sodass Festplatten in den meisten Fällen mit den Buchstaben sd beginnen. Der dritte Buchstabe im Datenträgernamen bedeutet die Seriennummer im System und wird alphabetisch angegeben: sda - die erste Festplatte, sdb - die zweite Festplatte, sdc - die dritte und so weiter. Dann kommt die Nummer, die die Partitionsnummer auf der Festplatte definiert: sda1, sda2 und so weiter. Der einfachste Weg, alle zugeordneten Laufwerke anzuzeigen, besteht darin, den Inhalt des Verzeichnisses / dev / zu überprüfen und die SD-Geräte herauszufiltern:

$ ls -l / dev / | grep sd

Zum Beispiel müssen wir ein SDB1-Laufwerk mit einem NTFS-Dateisystem verbinden.

Erstellen Sie ein Verzeichnis und hängen Sie die Festplatte darin ein:
# mkdir / mnt / sdb1
# mount -t ext4 / dev / sdb1 / mnt / sdb1

Erstellen Sie ein Verzeichnis für die Daten, legen Sie die Rechte und den Benutzer dafür fest:
# mkdir / mnt / sdb1 / nxcdata & chmod 770 / mnt / sdb1 / nxcdata & chown -R www-Daten: www-Daten / mnt / sdb1 / nxcdata

Als Nächstes müssen Sie außerdem ein Skript für die automatische Bereitstellung erstellen und den Befehl mount im Skript anpassen (Beispiele für das Verbinden eines Laufwerks mit NTFS und EXT4 sind bereits im Skript enthalten und auskommentiert) und das Skript zum Start hinzufügen.

B Erstellen Sie eine symbolische Verknüpfung zum Datenverzeichnis:
# ln -s / mnt / sdb1 / nxcdata / mnt / nxcdata / nxcdata

Tatsächlich ist all dieses Problem mit einer Reihe von nxcdata-Verzeichnissen auf eine Sache ausgelegt: Um in Zukunft eine einfache Übertragung des Datenverzeichnisses zu ermöglichen - Sie müssen die Konfiguration in der Nextcloud-Engine nicht bearbeiten und im Allgemeinen darauf zugreifen - müssen Sie lediglich eine neue Festplatte anschließen und kopieren ihm Daten und erstellen Sie eine symbolische Verknüpfung, die zu einem neuen Verzeichnis mit Daten führt. Gleichzeitig gehen alle Aktionen nicht über das Verzeichnis / mnt hinaus. Es stellte sich heraus, dass alles evolutionär kompliziert war. Ich wollte einfach nicht die Lösungen verlieren, die ich hatte.

Was ist der beste Weg, um Daten außerhalb der virtuellen Maschine zu übertragen? Ich werde meine Erfahrungen darüber teilen, welche Option ich gestoppt habe und warum.

USB-Laufwerke wurden automatisch erfasst, wenn die virtuelle Maschine hochfuhr, sich korrekt und vollständig einschaltete, und alles funktionierte immer, jedoch nur, bis das Laufwerk aus irgendeinem Grund vom System getrennt wurde. Neustart oder physische Trennung und Verbindung einer Festplatte halfen. Die Entscheidung erwies sich als unzuverlässig. Es gab kein solches Problem mit Flash-Laufwerken, aber das Volumen und die Geschwindigkeit der Arbeit passten kategorisch nicht zu mir. Vielleicht hat es sich gelohnt, ein externes Laufwerk mit autonomer Leistung zu testen.

Die Verzeichnisweiterleitung über freigegebene VMWare-Ordner funktionierte stabil und perfekt. Diese Lösung erfüllte die Aufgabe der Synchronisierung zweier Smartphones vollständig. Alles funktionierte mehrere Tage, zehn Gigabyte Daten wurden gepumpt. Als ich mich jedoch entschied, Daten vom Computer zur Cloud hinzuzufügen, stellte ich plötzlich ein Problem mit langen Pfaden und Dateinamen fest. Theoretisch beträgt das NTFS-Datei- / Ordnernamenlimit 255 Zeichen, in der Praxis jedoch die Windows-API 244 Zeichen. Theoretisch beträgt die Begrenzung der Länge des Pfads zu einer Datei oder einem Ordner in NTFS 32.767 Zeichen. In der Praxis beschränkt die Windows-API die Länge jedoch auf 245 Zeichen. Da ich ein großer Fan von Strukturierungsinformationen bin, kann die Länge meines Pfades sehr groß sein. Der nicht abgekürzte Titel der Bücher kann auch leicht 100-150 Zeichen enthalten, einschließlich Leerzeichen. Diese Einschränkung ist ein bekanntes Problem bei freigegebenen VMWare-Ordnern, das selbst bei Verwendung von Windows 10 mit allen möglichen cleveren Schlüsseln in der Registrierung zum Entfernen der Beschränkung auf 255 Zeichen nicht behoben werden konnte. Ein möglicher Grund sind die Einschränkungen von vmhgfs. Diese bequeme Art der Verbindung musste aufgegeben werden. Der Grund ist sicher behoben - das Problem liegt im virtuellen Dateisystem, das im Mechanismus für freigegebene VMWare-Ordner verwendet wird.

Die nächste Lösung besteht darin, die Festplatte direkt mit der virtuellen Maschine zu verbinden. Es hat auch nicht reibungslos geklappt. Die Datenstruktur (oder das Dateisystem, und dies war sowohl für NTFS als auch für EXT2 / 3/4 offensichtlich) brach ständig zusammen, entweder wenn die Festplatte oder ihre Partition von der Software der virtuellen Maschine „erfasst“ wurde oder wenn sie an das Hostsystem zurückgegeben wurde, selbst wenn ich das Ganze übertragen habe Fahren Sie auf dem Hostsystem offline. In einigen Modi schreibe oder lese ich keine Daten - ich konnte die weitergeleitete Festplatte oder Partition nicht einmal richtig formatieren. Es ist uns jedoch gelungen, einen Arbeitsmodus zu finden: Eine in NTFS formatierte physische Festplatte mit einer Partition wurde in einem bestimmten Verbindungsmodus mit der virtuellen Maschine verbunden: SATA / Independent / Persistent / Einzelne Partition verwenden. Der Ordner nxcdata mit den Daten sollte sich auf der Festplatte befinden.



Konfigurieren Sie den Nextcloud Virtual Machine-Zugriff über das lokale Netzwerk


Wir haben keine Probleme beim Öffnen von Websites innerhalb einer virtuellen Maschine oder von einem Hostsystem aus. Aber wie kann man die erstellte Site von einem anderen Computer im lokalen Netzwerk aus öffnen? Schauen wir uns die unten abgebildete Struktur unseres Netzwerks an.



Das Bild zeigt, dass der Router direkt mit dem Internet verbunden und so konfiguriert ist, dass er automatisch IP-Adressen an verbundene Geräte im Bereich 192.168.0.2-192.168.0.254 verteilt. Die Adresse 192.168.0.2 wurde von unserem Computer empfangen und 192.168.0.3 - der zweite Computer, auf dem wir den Server herstellen. Die Virtualisierungssoftware ist jedoch auf dem zweiten Computer installiert, der einen eigenen virtuellen Router erstellt und sein DHCP im Subnetz 192.168.233.0/24 konfiguriert hat. Unser virtueller Server hat die IP 192.168.133.138 erhalten.

Ich kann die Site in der virtuellen Maschine 192.168.233.138 problemlos öffnen. Ich kann die Site einfach vom Computer 192.168.0.3 aus öffnen, indem ich einfach die gewünschte IP-Adresse in den Browser eingebe. Die Virtualisierungssoftware hat sich bereits um die korrekte Konfiguration der Netzwerkumgebung auf dem Hostcomputer gekümmert. Aber wie komme ich vom Computer 192.168.0.2 zur Site? Wenn ich die IP-Adresse 192.168.233.138 eingebe, öffnet sich nichts für mich, da weder mein Computer noch der echte Router etwas über dieses Subnetz wissen. Wenn ich die Adresse 192.168.0.3 eingebe, wird auch für mich nichts geöffnet, da sich auf diesem Computer wirklich keine Site befindet - sie befindet sich in der virtuellen Maschine.

Um dieses Problem zu beheben, müssen Sie den virtuellen Router des Computers 192.168.0.3 konfigurieren. Wir wissen bereits, dass der Zugriff auf die Sites über die Ports 80 und 443 erfolgt. Beim Zugriff auf diese Ports auf die Maschine 192.168.0.3 müssen wir das Routing erstellen, damit Anforderungen an die virtuelle Maschine 192.168.233.138 umgeleitet werden. Zum Glück haben wir die Tools zur Verfügung. VMWare Workstation verfügt über ein Tool für den virtuellen Netzwerkeditor, das über das Menü der virtuellen Maschine (Bearbeiten -> Editor für virtuelle Netzwerke) geöffnet werden kann.



Mit diesem Tool können Sie Netzwerkeinstellungen sehr flexibel verwalten. Wir müssen die virtuelle Netzwerkkarte VMNet8 auswählen und auf die Schaltfläche "NAT-Einstellungen ..." klicken, die verfügbar geworden ist. In dem sich öffnenden Fenster müssen Sie Regeln hinzufügen, um das benötigte Routing zu erstellen.



Geben Sie den Host-System-Port an und geben Sie dann die IP-Adresse und den Port der virtuellen Maschine an, an die Anforderungen umgeleitet werden sollen. Um HTTPS-Verkehr weiterzuleiten, müssen Sie den Hostsystem-Port 443 und -Port 443 sowie die Adresse der virtuellen Maschine 192.168.233.138 angeben. Klicken Sie nach dem Erstellen der Regeln in allen Fenstern auf „OK“. Die virtuelle Netzwerkumgebung wird automatisch neu konfiguriert.

Nach diesen Änderungen werden unsere Websites vom Computer 192.168.0.2 aus geöffnet, wenn Sie auf die Adresse 192.168.0.3 zugreifen.

Ähnliche Einstellungen für die Portweiterleitung sind nicht nur für VMWare, sondern auch für VirtualBox verfügbar (Einstellungen → Netzwerk → Wählen Sie den gewünschten Adapter aus → Erweitert → Portweiterleitung). Während der Experimente zum Anschließen der Festplatte an diese Phase fand ich jedoch den kostenlosen VMWare Player installiert, in dem sich der Virtual Network Editor nicht befand. Ich habe im Internet nichts über die Portweiterleitung für VMWare Player gefunden und musste eine Testversion von VMWare Workstation verwenden. Bei der Installation des Produkts steht eine kostenlose Nutzung von 30 Tagen zur Verfügung. Nach 30 Tagen kann das Produkt entfernt, gereinigt und wieder installiert werden, aber eine solche Aufmerksamkeit für den Server ist irgendwie redundant und eindeutig unerwünscht.Und dann ging ich zu einem kleinen (oder großen) Trick. Der VMWare Workstation-Dateisatz enthält das Dienstprogramm vmnetcfg, das im Wesentlichen über das Element Virtual Network Editor ausgeführt wird. Es befand sich jedoch nicht im VMWare Player-Dateisatz. Aber konfiguriert VMWare Player bei der Installation irgendwie seine Netzwerkumgebung? Ich habe dieses Dienstprogramm einfach genommen und mit VMWare Player in den Ordner kopiert und dann gestartet. Überraschenderweise hat alles geklappt. Es ist möglich, dass Thin Network-Einstellungen in der VMWare Player-Umgebung nicht funktionieren, aber eine Portweiterleitung bereitgestellt wird und ich keine weiteren benötige.

Um über das Internet auf unseren Server zuzugreifen, müssen Sie die Ports eines Routers weiterleiten, der auf die gleiche Weise mit dem Internet verbunden ist. In der Firmware der meisten Router gibt es einen Abschnitt zur Portweiterleitung, in dem Sie das Routing konfigurieren können, indem Sie den externen Port sowie den Port und die IP-Adresse des internen Computers angeben. Es gibt jedoch eine leichte Nuance. Wenn der Anbieter uns eine echte IP-Adresse gegeben hat oder wir sie von ihm gekauft haben, gibt es keine Probleme - wir geben diese IP-Adresse von einem Computer von überall auf der Welt ein. Der reale Router leitet den Datenverkehr zu einem Computer mit einer virtuellen Maschine um, auf der der virtuelle Router den Datenverkehr direkt zur virtuellen umleitet ein Auto. Aber was tun mit jemandem, der nicht die Möglichkeit hat, eine echte IP-Adresse zu erhalten, dynamische Adressen erhält oder hinter NAT steht ?Anbieter, eine "graue" IP-Adresse bekommen? Ich musste ein solches Problem nicht lösen, da ich eine statische "weiße" IP habe. Jeder, der ein solches Problem auf die eine oder andere Weise lösen muss, muss sich mit diesem Problem befassen. Ich würde empfehlen, bei dynamischen Adressen in Richtung dyndns oder freedns.afraid.org zu schauen oder ein billiges VDS zu kaufen, um selbst ein Routing zu entwickeln, da dieses Problem auf jeden Fall ohne einen externen Server mit einer statischen IP-Adresse nicht gelöst werden kann.

Nach der Konfiguration des Routings habe ich die IP-Adressen der Computer 192.168.0.3 und 192.168.233.138 korrigiert und sie manuell in die Netzwerkkarteneinstellungen dieser Computer geschrieben, um deren automatische Neuzuweisung auszuschließen.



Nextcloud-Setup


Jetzt ist es Zeit, https: // 127.0.0.1/nextcloud im Browser der virtuellen Maschine, https: // 192.168.233.138/nextcloud vom Host-System oder, basierend auf dem oben beschriebenen konfigurierten Routing, https: // 192.168.0.3/nextcloud von einem beliebigen zu öffnen Computer im lokalen Netzwerk.

Als Nächstes legen wir die Anmeldung / das Kennwort für den Administrator fest, greifen auf die zuvor erstellte Datenbank zu und geben als Speicherort den vollständigen Pfad zum Verzeichnis nxcdata an: / mnt / nxcdata / nxcdata. Dieser Einrichtungsschritt unterscheidet sich nicht von der Installation einer Site.

In den Administratoreinstellungen habe ich die folgenden einfachen Änderungen vorgenommen:

- Persönlich → Russisch ausgewählt und eine E-Mail für den Administrator user @ localhost angegeben
- Administration → Freigabe → Alle Elemente deaktiviert
- Administration → Nutzungsumfrage → Alle Elemente deaktiviert
- Administration → Erweiterte Einstellungen → Dateiverwaltung: „Maximale Upload-Dateigröße“ auf 25 GB festgelegt.
- Benutzer → hat die Benutzergruppe erstellt und dem Benutzer einen neuen Benutzer hinzugefügt.

Nach dem Einrichten müssen Sie das Caching aktivieren.

Öffnen Sie die Datei:
# nano /var/www/nextcloud/config/config.php

Und ganz am Ende vor ");" Fügen Sie Folgendes hinzu: Jetzt müssen Sie den externen Zugriff auf die Site auf der Ebene ihrer "Engine" zulassen. Öffnen Sie die Datei: # nano /var/www/nextcloud/config/config.php Fügen Sie im Abschnitt trust_domains die Server-IP-Adresse zum Array hinzu und fügen Sie die Adresse hinzu, auf der Nexcloud installiert ist. Der Abschnitt "trust_domains" in unserem Fall sieht folgendermaßen aus:

'memcache.local' => '\OC\Memcache\Memcached',
'memcache.distributed' => '\OC\Memcache\Memcached',
'memcached_servers' => array(
array('localhost', 11211),
),









'trusted_domains' =>
array (
0 => '127.0.0.1',
1 => '192.168.233.138',
),


Jetzt können Sie die Wartungsfreundlichkeit des Dienstes überprüfen - öffnen Sie die Site und melden Sie sich als Benutzer an. Wenn die Autorisierung erfolgreich war, ist der Dienst kampfbereit. Sie können die Anwendung für die Synchronisierung auf Computern und Smartphones installieren. Geben Sie für den Zugriff die IP-Adresse 192.168.0.3 und die für jedes Gerät erstellten Kontozugriffsdetails ein.
Glücklicherweise oder unglücklicherweise musste ich nicht das volle Potenzial des erstellten Dienstes nutzen, da ich anfangs ein Backup-System mit Verifikation brauchte und anfangs nur mit Subversion auskommen wollte, aber die Geschwindigkeit der Festschreibungen einer besonders großen Anzahl kleiner Dateien machte mich sehr traurig. Ich habe alles getan, um zu wachsen, aber ich wollte es nicht ausnutzen, und dann wurde es irgendwie nicht mehr der Cloud gewachsen.

Eine detailliertere Übersicht über die Nutzung des Dienstes hat der wtigga- Benutzer Ende 2017 in seinem Artikel „Herunterladen von VPS: Ihre Nextcloud-Cloud“ erstellt . Aus Sicht des Benutzers gibt der Artikel einen Überblick über den neueren Nextcloud-Server, Version 12.



Erweiterte Feinabstimmung von Nextcloud


Während des Betriebs der Cloud im ersten Arbeitsmonat tauchten einige Probleme auf, die ich mithilfe der Community oder alleine lösen musste. Ich muss sagen, dass ich den Service sehr hart genutzt und ihn tatsächlich auf Stressresistenz überprüft habe. Das Synchronisieren einiger Gigabyte Daten von Telefonen über den Abend und von bis zu einer Million kleiner Dateien von einem Computer war eine übliche Sache. Generell hat mich der Service sehr positiv beeindruckt.

Ich würde nicht sagen, dass die folgenden Lösungen korrekt und schön sind, aber diese Krücken funktionieren zumindest für Version 11.0.2, da es sonst unmöglich wäre, den Dienst zu nutzen. In Version 12.x wurde möglicherweise etwas verbessert und behoben, daher würde ich nicht empfehlen, diese Einstellungen sofort als Teil der Starteinstellungen festzulegen, während sie für die 11.x-Zeile sofort angewendet werden können.

Problem 1

Während der Synchronisation tritt ein Fehler wie "Datei ist gesperrt" auf. Die Synchronisation wird gestoppt. Das Problem ist bekannt - Sie müssen den Inhalt der Tabelle oc_file_locks löschen, indem Sie die folgende Abfrage über die MySQL-Konsole ausführen (wenn Sie den Benutzer nextcloud autorisieren):
mysql> DELETE FROM oc_file_locks WHERE 1

Da solche Fehler nicht ungewöhnlich sind, habe ich mir nichts Besseres
ausgedacht, als ein Skript zu erstellen und es direkt im Stammordner abzulegen : # nano / root / empty_oc_file_locks Skriptinhalt

:

 #!/bin/bash mysql -unextcloud > -pnc123 -D nextcloud <<MY_QUERY DELETE FROM oc_file_locks WHERE 1 MY_QUERY 


Das Skript kann manuell ausgeführt werden, dies ist jedoch nicht unsere Methode. Ich habe beschlossen, es automatisch alle 15 Minuten mit cron (https://ru.wikipedia.org/wiki/Cron) auszuführen.
Erstellen Sie dazu eine Datei:
# nano / root / crontab

Mit folgendem Inhalt: Jetzt müssen Sie Änderungen am Scheduler vornehmen: # crontab / root / crontab Sie können nach folgenden Änderungen suchen : # crontab -l Problem 2 Bei der Synchronisierung über webDAV in den Protokollen (siehe Admin-Panel, vom Administrator autorisiert) Die folgenden Fehler können auftreten:

*/15 * * * * root bash /root/empty_oc_file_locks












Error PHP reset() expects parameter 1 to be array, null given at /var/www/nextcloud/apps/files_versions/lib/Storage.php#783
Error PHP ksort() expects parameter 1 to be array, null given at /var/www/nextcloud/apps/files_versions/lib/Storage.php#782
Error PHP Invalid argument supplied for foreach() at /var/www/nextcloud/apps/files_versions/lib/Storage.php#759
Error PHP Undefined index: by_file at /var/www/nextcloud/apps/files_versions/lib/Storage.php#759
Error PHP Undefined index: all at /var/www/nextcloud/apps/files_versions/lib/Storage.php#757


Diesmal tat die Gemeinde nichts und musste die Ermittlungen alleine durchführen. Der Grund lag im Fehler "Undefinierter Index ... Storage.php # 757", der mehrere weitere Fehler kaskadiert. Wir sehen uns den Code für diese Datei an. Das ganze Problem lag in der Quote. In dieser Zeile im Code (Storage.php # 757) wird der freie Speicherplatz unter Berücksichtigung des Volumens der Archivdateien berechnet. Bei der Berechnung geht etwas schief, obwohl das Kontingent auf "unbegrenzt" festgelegt ist. Um den Fehler im Administrationsbereich zu beheben, habe ich für jeden Benutzer ein "unendliches, aber numerisches" Kontingent festgelegt, z. B. 100 TB.

Problem 3

Das Problem beim Synchronisieren von .htaccess-Dateien - sie werden einfach nicht synchronisiert! Und ich war nicht allein, in einigen Foren stellten sie ähnliche Fragen. Ich habe jedoch keine fertige Lösung gefunden. Ich musste selbst noch einmal nachdenken. Als Ergebnis von Googeln, Anzeigen von Protokollen und Code-Analyse fiel mir nichts Besseres ein, als die nextcloud-Engine-Datei zu reparieren.
In der Datei /var/www/nextcloud/lib/private/Files/filesystem.php suchen wir nach der folgenden Zeile: Und wir bringen sie in die folgende Form:

$blacklist = \OC::$server->getConfig()->getSystemValue('blacklisted_files', array('.htaccess'));




$blacklist = \OC::$server->getConfig()->getSystemValue('blacklisted_files', array(''));




Schutz für Nextcloud


Mit fail2ban können Sie unseren Service vor der Auswahl von Passwörtern für das Admin-Panel schützen. Dazu müssen Sie den charakteristischen Ausdruck beschreiben, der in nextcloud-Protokollen auftritt, wenn die Authentifizierung fehlschlägt. Danach wird der entsprechende Trigger ausgelöst.

Erstellen Sie die Datei:
# nano /etc/fail2ban/filter.d/nextcloud.conf

Mit folgendem Inhalt:

[Definition]
failregex = {"reqId": ". *", "RemoteAddr": ". *", "App": " core "," message ":" Login fehlgeschlagen: '. *' \ (Remote IP: '' \) "," level ": 2," time ":". * "}
ignoreregex =

Öffnen Sie die Datei:
# nano / etc. /fail2ban/jail.local Fügen Sie

am Ende der Datei Folgendes hinzu: Starten Sie den Dienst neu: # service fail2ban restart Suchen Sie nach einem aktiven Filter:

# nextcloud
[nextcloud]
enabled = true
port = http,https
protocol = tcp
filter = nextcloud
logpath = /var/log/nextcloud.log






# fail2ban-client status nextcloud

Vergessen Sie nicht, dass gemäß den fail2ban-Einstellungen aus dem vorherigen Teil Ihre IP- Adresse 30 Tage lang blockiert wird, wenn das Kennwort 12 Stunden lang sechsmal hintereinander falsch eingegeben wird. Ich habe irgendwie zwei Abende wegen eines falschen Passworts auf einem der Telefone verbracht, bis ich diese einfache Tatsache in den Systemprotokollen herausgefunden habe.



Smartphone Cloud Sync


Um den Inhalt von Telefonen mit Android zu synchronisieren, gibt es eine wunderbare Anwendung FolderSync. Das Programm rechtfertigt seinen niedrigen Preis voll und ganz.

Zuerst müssen Sie ein neues Konto erstellen, in dem Sie https: // 192.168.0.3/nextcloud als Serveradresse angeben, die Anmeldung und das Kennwort für das zuvor erstellte Konto eingeben und das selbstsignierte Zertifikat aktivieren. Klicken Sie auf die Schaltfläche "Test" und stellen Sie sicher, dass die Verbindung zum Server in Ordnung ist.

Als nächstes müssen Sie eine Aufgabe erstellen. Geben Sie in der Aufgabe das zuvor erstellte Konto an und wählen Sie die Art der Synchronisierung aus - "Zum Remote-Ordner". Geben Sie den Remote-Ordner an (Sie können ihn direkt aus der Anwendung erstellen "und wählen Sie den lokalen Ordner für die Synchronisierung aus. Ich habe den Zeitplan jeden Tag auf 2 Uhr morgens festgelegt. In den Synchronisierungseinstellungen habe ich" Synchronisierung von Unterordnern "und" Synchronisierung der enthaltenen Ordner "aktiviert Die Option, alte Dateien immer zu ersetzen, und im Konfliktfall erlaubte ich standardmäßig, die lokale Datei zu verwenden. Im Abschnitt "Verbindungen" habe ich alle Verbindungen außer Wi-Fi deaktiviert und die SSID meines Heim-Wi-Fi-Netzwerks im Abschnitt "Zulässige WiFi-SSIDs" - Anwendung registriert Knospe Ich kann nur in meinem Heimnetzwerk synchronisieren und nicht versuchen, den Server in anderen Netzwerken zu durchsuchen. Die restlichen Einstellungen habe ich standardmäßig beibehalten.Hier können Sie Filter hinzufügen. Ich habe einen neuen Filter "Der Ordnername enthält" erstellt und den Wert [nosync] angegeben. Daher kann ich einige Ordner im angegebenen lokalen Ordner von der Synchronisierung ausschließen, indem ich am Ende einfach den Namen "[nosync]" hinzufüge.

Diese Einstellung wurde für lokale Ordner wie DCIM, Download, Telegramm, Viber, WhatsApp vorgenommen. Plus ein paar meiner Benutzerordner von mehreren Gigabyte Größe. Einmal am Tag wird der Inhalt dieser Ordner mit dem Server synchronisiert, und alte Versionen von Dateien auf dem Server werden nicht gelöscht, sondern umbenannt und in das Archiv verschoben. Dadurch konnte ich versehentlich versehentlich gelöschte Dateien schnell wiederherstellen oder Änderungen in einigen anderen Dateien rückgängig machen.



Personal Computer Cloud Sync


Ich betrachte mich nicht als echten Programmierer. In den letzten zehn Jahren habe ich in Programmiersprachen programmiert, die nur bei der Entwicklung von Prozessoren oder Chipsätzen verwendet werden. Aufgrund der Tatsache, dass ich 15 Jahre lang nichts in C / C ++ getan hatte, aber etwas auf dem Computer automatisieren musste, verwendete ich eher aktiv Skriptsprachen wie BAT / CMD oder Software wie Sign 0f Mistery oder xStarter. Nachdem ich herausgefunden und ausprobiert hatte, was AutoIt ist, ist dies eine neue Ära in meiner PC-Automatisierung.

Nachdem ich von der Stabilität und Zuverlässigkeit des Synchronisationssystems auf Smartphones überzeugt war, dachte ich, dass es schön wäre, Daten auf meinem Heimcomputer zu synchronisieren. Nextcloud hat einen eigenen Client für Windows und war natürlich der erste Kandidat für Tests. Ich wollte ein Datenvolumen in der Größenordnung von einem Terabyte synchronisieren, das aus Hunderttausenden von Dateien unterschiedlicher Größe bestand. Die Daten waren unterschiedlich: Musik, Bilder, Dokumente, E-Books, Distributionen, Backup-Sites und so weiter und so fort. Es wäre vernünftig, all dies auf die Synchronisation kritischerer Daten wie beispielsweise Dokumente zu reduzieren, aber die Aufregung ergriff mich und ich wollte die Stärke des Dienstes überprüfen.

Zehn Stunden nach dem Start der Synchronisierung und dem ersten Hochladen von Inhalten auf den Server stolperte der Client über eine Datei mit einem langen Namen. Zu diesem Zeitpunkt habe ich auf dem Server auch die externe Speicherverbindung über freigegebene VMWare-Ordner verwendet. Ich musste ein Dutzend Clients ausprobieren und dann einfache Experimente zum manuellen Kopieren von Dateien auf den Server durchführen, um zu verstehen, dass das Problem auf der Serverseite liegt. Nach einer Woche erfolgreichem Start des Dienstes musste ich ein Rollback auf die virtuelle Backup-Maschine durchführen und den Mechanismus für freigegebene VMWare-Ordner aufgeben, um von vorne zu beginnen. Am Ende habe ich diesen Engpass auf der Serverseite beseitigt, die Zuverlässigkeit der Lösung für eine Woche der Synchronisierung von Smartphones getestet und mich entschlossen, wieder zu meinem Heimcomputer zurückzukehren. Diesmal stolperte der Kunde nicht über die unglückselige Akte und ich war bereits frohNach einem halben Tag der Synchronisierung kleiner Dateien fror der Client jedoch erneut ein. Nun stellte sich heraus, dass der Pfad auf der Seite des Heimcomputers zu lang ist und der Nextcloud-Client ihn nicht richtig verarbeiten kann. Leider funktionierte der native Nextcloud-Client nicht und sein Informationsgehalt war nicht sehr hoch, so dass ich ihn aufgeben musste.

Ich habe einige Zeit damit verbracht, ein geeignetes Programm für die Synchronisierung zu finden, das die Befehlszeilenverwaltung unterstützt. Ich wollte meine Aufgabe für jeden großen Ordner auf dem Computer erledigen und sie im Batch-Modus ausführen. Zuvor hatte ich bereits eine Reihe von BAT-Dateien für die Synchronisierung mithilfe von Skripten und die Verwaltung von FreeFileSync über die Befehlszeile erstellt und ausgearbeitet. Das Problem langer Pfade oder Dateinamen wurde gelöst, indem lokale Ordner der Form "\\? \ D: \ Info" festgelegt wurden, d. H. Im Wesentlichen wird der lokale Ordner als Netzwerkordner bezeichnet. Was jedoch webdav FreeFileSync ist, weiß nicht. Leider gab es keine vollständigen Analoga von FolderSync für Windows, aber mehr als einmal in den Foren wurde GoodSync empfohlen, und nachdem ich ein Dutzend anderer Programme gecastet hatte, entschied ich mich, es zu versuchen. Leider ist GoodSync viel teurer,Aber eine einmalige Verschwendung von 15 US-Dollar für die Sicherheit ihrer wertvollen Daten ist im Prinzip eine machbare Verschwendung. Das Programm verfügt über einen Testmodus, sodass Sie zunächst die Leistung und Stabilität überprüfen können.

GoodSync erwies sich als ziemlich freundliche Software. Es gibt eine spezielle tragbare Version namens GoodSync2Go. Also interessierte sie mich. Während der Installation müssen Sie den Laufwerksbuchstaben auswählen und das Programm wird darauf im GoodSync-Ordner installiert. Ich habe den Synchronisierungsordner im Stammverzeichnis des Laufwerks erstellt, sagen wir D, und den erstellten GoodSync-Ordner mit dem gesamten Inhalt dorthin verschoben.

[ Dieser Text wurde speziell für die Site geektimes.ru von AlexanderS geschrieben .
Der Link zur Quelle ist optional, aber die Referenz ist sehr wünschenswert!
]]

Nach der Installation muss das Programm Aufgaben erstellen: Der lokale Ordner und der Remote-Ordner für die Synchronisierung werden angezeigt. In den Auftragsparametern habe ich die Synchronisierung von links nach rechts mit den Optionen "Synchrones Löschen" und "Frühere Versionen gelöschter / ersetzter Dateien speichern" ausgewählt. In den Einstellungen auf der linken Seite habe ich "Sichere Kopie" und "Ordner _gsdata_ nicht erstellen" auf der rechten Seite ausgewählt - "Sichere Kopie" und "Schnelle Voranalyse nach Zeitstempeln". Somit werden Aufgaben für jeden erforderlichen Ordner erstellt. Angenommen, ich habe die Aufgabe im Ordner "Info" konfiguriert und "bck_Info" genannt.
Als Nächstes wird im Ordner D: \ Sync die Datei bck_Info.bat mit den folgenden Inhalten erstellt:

 @set dir=%~dp0 @%dir%GoodSync\GoodSync2Go-v10.exe /miniwin /exit sync "%~n0" 


Dies ist die BAT-Skriptsprache. In der ersten Codezeile wird der aktuelle Pfad für das ausgeführte Skript auf die Variable festgelegt. In der zweiten Zeile wird die Datei GoodSync2Go-v10.exe aus dem Ordner GoodSync in diesem Pfad gestartet, in dem die Aufgabe mit dem Namen dieser Datei ausgeführt werden soll (bck_Info), das Fenster zur Ausführung der Aufgabe minimiert wird und das Programm nach Abschluss der Aufgabe automatisch geschlossen wird. Ich kann dieses Skript mehrmals kopieren und jedes Mal nur seinen Namen in den Namen einer zuvor in GoodSync erstellten Aufgabe ändern. Durch einfaches Klicken auf die Eingabetaste in der BAT-Datei kann ich die Synchronisierung der Ordner starten, die ich einzeln benötige.

Um eine neue Aufgabe in FreeFileSync hinzuzufügen, könnte ich einfach die XML-Skriptdatei kopieren und manuell korrigieren, d. H. Das Ausführen der grafischen Shell des Programms war überhaupt nicht erforderlich. In GoodSync werden alle Aufgaben in der Datei D: \ Sync \ GoodSync \ GoodSync \ Profile \ jobs.tic registriert. Um eine neue Aufgabe hinzuzufügen, müssen Sie das Programm öffnen und erstellen, da Das Bearbeiten dieser Datei ist etwas problematisch und es ist nicht bekannt, wozu dies führen könnte.
Um alle Ordner zu synchronisieren, können Sie jetzt ein einfaches Skript bck_all.bat schreiben:

 @set dir=%~dp0 call %dir%bck_Info.bat call %dir%bck_Info2.bat call %dir%bck_Info3.bat call %dir%bck_Info4.bat 

Jede Zeile des Skripts bewirkt einfach die Ausführung eines separaten Skripts, das die Synchronisierung startet.

Dies alles funktioniert sehr gut und bequem, aber es gibt keine Fehlerkontrolle während der Synchronisation. Wenn der Server beispielsweise nicht eingeschaltet ist, werden alle Aufgaben schnell abgeschlossen, und ich bin nach einer Stunde zurückgekehrt und denke, dass die Synchronisierung bereits abgeschlossen ist. Gleichzeitig werden die Protokolle aller Aufgaben entlang des Pfads D: \ Sync \ GoodSync \ GoodSync \ Profile \ * erstellt. Protokoll. Es reicht aus, nur das Protokoll jeder Synchronisation auf das Vorhandensein des Wortes "ERROR" zu überprüfen. Aus irgendeinem Grund werden die Synchronisationsfehler auf diese Weise im Protokoll gemeldet. Daher wurde beschlossen, nach allen Synchronisierungen ein kleines Programm zur Analyse dieser Protokolle zu schreiben, das nach der Synchronisierung aller Ordner automatisch gestartet werden sollte. Das Programm erhielt den stolzen Namen log_analayser und ist in der Semi-Scripting-Sprache AutoIt geschrieben . Wenn jemand interessiert ist, dann laden Sie die Vollversion herunterSie können auf der offiziellen AutoIt-Website, die die erforderlichen Bibliotheken enthält, den Compiler und SciTE - einen plattformübergreifenden Editor für den Code, aus dem Sie das Programm kompilieren können.

Die Zeit, die ich für die Entwicklung und das Debuggen des Codes aufgewendet habe, war eine log_analayser.au3-Datei mit folgendem Inhalt:

 ; LOG Analyser 1.0 ;      - #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Res_Field=ProductName|LOG Analyser #AutoIt3Wrapper_Res_Fileversion=1.0.0.0 #AutoIt3Wrapper_Res_Field=OriginalFilename|log_analyser.exe #AutoIt3Wrapper_Res_Comment=     - #AutoIt3Wrapper_Res_Description= - ;**** #AutoIt3Wrapper_Res_Language=1049 #AutoIt3Wrapper_Res_ProductVersion=1.0 #AutoIt3Wrapper_Compile_Both=y #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** ;AutoItSetOption ("WinTitleMatchMode", 2) ;       ;#NoTrayIcon ;         If WinExists('[CLASS:AutoIt v3;TITLE:' & @ScriptName & ']') Then MsgBox(48, @ScriptName, "     !"); ;             ;WinActivate('  ') Exit EndIf AutoItWinSetTitle(@ScriptName) #include <Array.au3> #include <_FileDirList.au3> ;  Local $msg_title = "LOG Analyser 1.0" Local $path = @ScriptDir Local $soft_open_log = "notepad.exe" Local $path, $dir_mode, $word, $file_analyse_name, $file_analyse_ext, $log_path, $log_msg_on Local $file_log, $word_detect, $file_analyse, $cnt_files, $i ;    if ($CmdLine[0] < 6) then MsgBox(0x10, $msg_title, "   !" & @CRLF & @CRLF & "  ") Exit else if (StringCompare($CmdLine[1], "file") = 0) then $dir_mode = 0 elseif (StringCompare($CmdLine[1], "dir") = 0) then $dir_mode = 1 else MsgBox(0x10, $msg_title, "     'file'  'dir'!" & @CRLF & @CRLF & "  ") Exit endif $word = $CmdLine[2] if ($dir_mode = 0) then $file_analyse_name = $CmdLine[3] else $dir_analyse = $CmdLine[3] endif $file_analyse_ext = $CmdLine[4] $log_path = $CmdLine[5] if (StringCompare($CmdLine[6], "err_msg_on") = 0) then $log_msg_on = 1 elseif (StringCompare($CmdLine[6], "err_msg_off") = 0) then $log_msg_on = 0 else MsgBox(0x10, $msg_title, "     'log_msg_on'  'log_msg_off'!" & @CRLF & @CRLF & "  ") Exit endif endIf ;   $file_log = $log_path & "\" & "log_analyser" & "-" & @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & "-" & @MIN & "-" & @SEC & ".log" $word_detect = 0 ;    if ($dir_mode = 0) then $file_analyse = $file_analyse_name & "." & $file_analyse_ext if (_file_analyser($file_analyse, $msg_title, $word, $file_log, $word_detect) = 1) then $word_detect = 1 endif else ;     $dir_arr = _FileDirList($dir_analyse, "*."&$file_analyse_ext, 1, 1, 0) ;_ArrayDisplay($dir_arr) ;    -       if ($dir_arr = 0) then MsgBox(0x10, $msg_title, "       !" & @CRLF & @CRLF & "  ") Exit endif $cnt_files = $dir_arr[0] ;    $i = 0 While $i <> $cnt_files $i = $i + 1 $file_analyse = $dir_arr[$i] if (_file_analyser($file_analyse, $msg_title, $word, $file_log, $word_detect) = 1) then $word_detect = 1 endif WEnd endif ;    if ($word_detect = 1) and ($log_msg_on = 1) then if (MsgBox (0x41034, $msg_title, " !" & @CRLF & "      : " & $file_log & @CRLF & @CRLF & "   ?")) = 6 then ShellExecuteWait($soft_open_log, $file_log) endif endif Exit ;                    ;   ,   ,     Func _file_analyser($file_analyse, $msg_title, $word, $file_log, $word_detect) Local $file1, $file2, $file_line, $write_once $word_detect = 0 $write_once = 0 $file1 = FileOpen($file_analyse, 0) ;     If $file1 = -1 Then FileClose($file1) MsgBox(0x10, $msg_title, "   !" & @CRLF & @CRLF & "  ") Exit EndIf ;       While 1 $file_line = FileReadLine($file1) If @error = -1 Then ExitLoop if (StringInStr($file_line, $word) <> 0) then $word_detect = 1 ;            if (FileExists($file_log) = 0) then $file2 = FileOpen($file_log, 1) FileClose($file2) endif ;        if ($write_once = 0) then $write_once = 1 $file2 = FileOpen($file_log, 1) FileWriteLine($file2, " : " & $file_analyse) FileClose($file2) endif ;       $file2 = FileOpen($file_log, 1) FileWriteLine($file2, $file_line) FileClose($file2) endif WEnd ;     ,          if ($word_detect = 1) then $file2 = FileOpen($file_log, 1) FileWriteLine($file2, @CRLF) FileClose($file2) endif FileClose($file1) Return $word_detect EndFunc 

Drücken Sie nach Eingabe des Codes die Taste F7 im SciTE-Editor und rufen Sie die Datei log_analayser.exe am Ausgang ab.

Das Programm analysiert die Datei auf das Vorhandensein eines Wortes. Wenn es gefunden wird, wird eine Protokolldatei erstellt, in die die gefundene Zeile mit diesem Wort kopiert wird.

Das Programm kann in zwei Modi arbeiten:

- Analyse einer bestimmten Datei
- Analyse des Ordners mit den zu analysierenden Dateien (alle Unterordner werden ebenfalls analysiert).

Wenn Sie einen Konsolenaufruf tätigen, müssen Sie sechs Parameter für das Programm festlegen:

1 - Betriebsmodus [Datei = Dateianalyse; dir = Analyse des Ordners mit den Dateien]
2 - Suchwort
3 - Dateiname oder vollständiger Pfad zum Ordner
4 - Dateierweiterung oder Dateien zur Analyse im Ordner
5 - der vollständige Pfad zu dem Ordner, in dem sich das Programmprotokoll befindet;
6 - Fensteranzeige nach Analyse aller Dateien, wenn das angegebene Wort gefunden wird [err_msg_on = display; err_msg_off = nicht anzeigen]

Daher haben wir ein neues Skript bck_auto.bat erhalten:

 @echo Start Backup @set dir=%~dp0 call %dir%bck_all.bat log_analyser.exe dir  %dir%GoodSync\Profile log %dir%LOG err_msg_on exit 

Das Skript startet eine Datei, aus der die Aufgaben zum Synchronisieren aller erforderlichen Ordner einzeln nacheinander aufgerufen werden. Anschließend wird der Synchronisationsprotokollanalysator aufgerufen. Im Fehlerfall wird eine Meldung angezeigt, in der Sie aufgefordert werden, die Protokollzeilen zu überprüfen, in denen diese Fehler gefunden wurden, und zu verstehen, welche Aufgabe Sie ausführen können Probleme sind aufgetreten. Diese Zeilen werden in eine separate Protokolldatei im Ordner D: \ Sync \ LOG geschrieben.
Und dann erlitt ich einen schrecklichen Misserfolg. Log Analyzer hat nicht funktioniert. Nein, es hat bei Testdateien hervorragend funktioniert, wollte aber hartnäckig keine Fehler in den Protokollen sehen. Lange Zeit konnte ich nicht verstehen, was der Grund war, bis ich eine schreckliche Sache herausfand: Nicht nur, dass im englischsprachigen Protokoll der Fehler durch das einzige russischsprachige Wort "ERROR" angezeigt wird, sondern auch die Kodierung dieses kyrillischen Alphabets ist Macintosh! Ich weiß nicht, warum die Programmierer von Siber Systems dies getan haben. Dies ist höchstwahrscheinlich das Ergebnis einer schrecklichen Krücke in der Software. Wer hat gesagt, dass Programmieren langweilig sein sollte?

Es blieb keine andere Wahl, als eine Krücke mit einer anderen zu stützen, und als Ergebnis erschien eine funktionierende Konstruktion:

 @echo Start Backup @set dir=%~dp0 call %dir%bck_all.bat log_analyser.exe dir Ћ˜€ЃЉЂ %dir%GoodSync\Profile log %dir%LOG err_msg_on exit 

Das folgende Problem trat jedoch auf: GoodSync selbst löscht keine Protokolldateien, bei jeder neuen Aufgabenausführung werden neue Dateien angezeigt. Und wenn eine Synchronisierung fehlgeschlagen ist, findet unser Analysator diese Datei immer und meldet den Fehler fröhlich. Daher wurde vor dem Start der Synchronisierung beschlossen, den Ordner D: \ Sync automatisch von allen Protokolldateien zu bereinigen. Hierzu wurde ein elegantes Skript clean_logs.bat erstellt:

 @echo off set dir=%~dp0 For /R %dir% %%i in (*.log) Do ( Del /q "%%i") @echo on 

Das Skript deaktiviert die Ausgabe von Nachrichten, ermittelt das Skriptstartverzeichnis, durchsucht alle Dateien (einschließlich Unterordner) bis zum Ende und löscht alle Dateien mit der Protokollerweiterung. Am Ende der Arbeit wird die Nachrichtenausgabe eingeschaltet.
Das Skript bck_auto.bat wurde geändert:

 @echo Start Backup @set dir=%~dp0 @call clean_logs.bat call %dir%bck_all.bat log_analyser.exe dir Ћ˜€ЃЉЂ %dir%GoodSync\Profile log %dir%LOG err_msg_on exit 

Alles funktioniert sehr gut, aber es geht darum, Routinemaßnahmen zu automatisieren. Warum nicht einfach den Computer nachts ausschalten und schlafen gehen, und er wird eine Reihe von Dateien selbst synchronisieren, analysieren und den Pfad ausschalten?

Ändern wir unser Skript bck_auto.bat:

 @echo Start Backup & PCOFF @set dir=%~dp0 start MonitorOnOff.exe 0 @call clean_logs.bat call %dir%bck_all.bat log_analyser.exe dir Ћ˜€ЃЉЂ %dir%GoodSync\Profile log %dir%LOG err_msg_off shutdown /s /t 0 exit 

Im Skript wurden zwei neue Zeilen angezeigt. Die MonitorOnOff-Anwendung schaltet den Monitor einfach aus (damit er den Raum nicht beleuchtet, aber jeden Abend manuell auszuschalten und jeden Morgen einzuschalten ist sehr faul), und der Befehl zum Herunterfahren schaltet den Computer aus. Der Parameter, der für die Anzeige von Nachrichten verantwortlich ist, wenn ein Fehler gefunden wurde, hat sich in log_analyser geändert, da es nach der Synchronisierung nicht erforderlich ist, die Ausführung des Skripts durch diese Nachricht zu verlangsamen, sondern den Computer auszuschalten.

MonitorOnOff ist auch in AutoIt geschrieben.

 ; Monitor On Off 1.0 ;   /  #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Res_Field=ProductName|Monitor On Off #AutoIt3Wrapper_Res_Fileversion=1.0.0.0 #AutoIt3Wrapper_Res_Field=OriginalFilename|MonitorOnOff.exe #AutoIt3Wrapper_Res_Comment=  /  #AutoIt3Wrapper_Res_Description=  /  ;**** #AutoIt3Wrapper_Res_Language=1049 #AutoIt3Wrapper_Res_ProductVersion=1.0 #AutoIt3Wrapper_Compile_Both=y #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** ;AutoItSetOption ("WinTitleMatchMode", 2) ;       ;#NoTrayIcon ;         If WinExists('[CLASS:AutoIt v3;TITLE:' & @ScriptName & ']') Then MsgBox(48, @ScriptName, "     !"); ;             ;WinActivate('  ') Exit EndIf AutoItWinSetTitle(@ScriptName) HotKeySet("{F10}", "_Monitor_ON") HotKeySet("{F11}", "_Monitor_OFF") HotKeySet("{Esc}", "_Quit") Global Const $lciWM_SYSCommand = 274 Global Const $lciSC_MonitorPower = 61808 Global Const $lciPower_Off = 2 Global Const $lciPower_On = -1 Global $MonitorIsOff = False if ($CmdLine[0] <> 0) then _Monitor_OFF() endif While 1 Sleep(10) WEnd Func _Monitor_ON() $MonitorIsOff = False Local $Progman_hwnd = WinGetHandle('[CLASS:Progman]') DllCall('user32.dll', 'int', 'SendMessage', _ 'hwnd', $Progman_hwnd, _ 'int', $lciWM_SYSCommand, _ 'int', $lciSC_MonitorPower, _ 'int', $lciPower_On) EndFunc Func _Monitor_OFF() $MonitorIsOff = True Local $Progman_hwnd = WinGetHandle('[CLASS:Progman]') While $MonitorIsOff = True DllCall('user32.dll', 'int', 'SendMessage', _ 'hwnd', $Progman_hwnd, _ 'int', $lciWM_SYSCommand, _ 'int', $lciSC_MonitorPower, _ 'int', $lciPower_Off) _IdleWaitCommit(0) Sleep(20) WEnd EndFunc Func _IdleWaitCommit($idlesec) Local $iSave, $LastInputInfo = DllStructCreate ("uint;dword") DllStructSetData ($LastInputInfo, 1, DllStructGetSize ($LastInputInfo)) DllCall ("user32.dll", "int", "GetLastInputInfo", "ptr", DllStructGetPtr ($LastInputInfo)) Do $iSave = DllStructGetData ($LastInputInfo, 2) Sleep(60) DllCall ("user32.dll", "int", "GetLastInputInfo", "ptr", DllStructGetPtr ($LastInputInfo)) Until (DllStructGetData ($LastInputInfo, 2)-$iSave) > $idlesec Or $MonitorIsOff = False Return DllStructGetData ($LastInputInfo, 2)-$iSave EndFunc Func _Quit() _Monitor_ON() Exit EndFunc 

Das gestartete Programm wird über drei Tasten gesteuert: F10 schaltet den Monitor ein, F11 - schaltet sich aus und die ESC-Taste beendet das Programm und entlädt es aus dem Speicher. Wenn Sie beim Starten des Programms einen Parameter angeben, schaltet das laufende Programm den Bildschirm sofort aus.

Jetzt war alles in Ordnung - bevor ich ins Bett ging, lief ich einfach bck_all.bat anstelle von "Computer ausschalten" und ging ins Bett. Der Monitor beleuchtete nicht den gesamten Raum, die Synchronisation wurde automatisch durchgeführt und der Erfolg wurde automatisch analysiert. Am Morgen mussten Sie nur den Inhalt des Ordners D: \ Sync \ GoodSync \ LOG \ nach mindestens einigen Dateien durchsuchen. Dies ist aber auch nicht der Fall - warum Zeit verschwenden, wenn alles in Ordnung ist? Ich muss einen Protokollanalysator für den Protokollanalysator erstellen und ihn beim Systemstart aufhängen, damit er am nächsten Tag beim Hochfahren des Computers funktioniert und meine Aufmerksamkeit nur dann beeinträchtigt, wenn die Synchronisierung fehlschlägt. So entstand das Programm check_file_exist.

 ; Check File Exist 1.0 ;        #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Res_Field=ProductName|Check File Exist #AutoIt3Wrapper_Res_Fileversion=1.0.0.0 #AutoIt3Wrapper_Res_Field=OriginalFilename|check_file_exist.exe #AutoIt3Wrapper_Res_Comment=       #AutoIt3Wrapper_Res_Description=   ;**** #AutoIt3Wrapper_Res_Language=1049 #AutoIt3Wrapper_Res_ProductVersion=1.0 #AutoIt3Wrapper_Compile_Both=y #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** ;AutoItSetOption ("WinTitleMatchMode", 2) ;       ;#NoTrayIcon ;         If WinExists('[CLASS:AutoIt v3;TITLE:' & @ScriptName & ']') Then MsgBox(48, @ScriptName, "     !"); ;             ;WinActivate('  ') Exit EndIf AutoItWinSetTitle(@ScriptName) #include <Array.au3> #include <_FileDirList.au3> ;  Local $msg_title = "Check File Exist 1.0" Local $path = @ScriptDir Local $soft_open_dir = "explorer.exe" Local $path, $dir_analyse, $words, $msg_open ;    if ($CmdLine[0] < 5) then MsgBox(0x10, $msg_title, "   !" & @CRLF & @CRLF & "  ") Exit else $dir_analyse = $CmdLine[1] $file = $CmdLine[2] $words0 = $CmdLine[3] $words1 = $CmdLine[4] if (StringCompare($CmdLine[5], "msg_on") = 0) then $msg_open = 1 elseif (StringCompare($CmdLine[5], "msg_off") = 0) then $msg_open = 0 else MsgBox(0x10, $msg_title, "     'msg_on'  'msg_off'!" & @CRLF & @CRLF & "  ") Exit endif endIf ;      $dir_arr = _FileDirList($dir_analyse, "*"&$file&"*", 1, 0, 0) ;_ArrayDisplay($dir_arr) ;      if ($dir_arr = 0) then if (StringCompare($words0, "0") <> 0) then if ($msg_open = 0) then MsgBox(0x41030, $msg_title, $words0) else if (MsgBox(0x41034, $msg_title, $words0 & @CRLF & @CRLF & "     ?")) = 6 then ShellExecuteWait($soft_open_dir, $dir_analyse) endif endif endif else if (StringCompare($words1, "0") <> 0) then if ($msg_open = 0) then MsgBox(0x41030, $msg_title, $words1) else if (MsgBox(0x41034, $msg_title, $words1 & @CRLF & @CRLF & "    ?")) = 6 then ShellExecuteWait($soft_open_dir, $dir_analyse) endif endif endif endif Exit 

Im Wesentlichen handelt es sich bei diesem Programm um eine leicht verkürzte log_analyser-Funktionalität. Das Programm analysiert den angegebenen Ordner (ausgenommen Unterordner) auf Dateien und Namen, die zumindest teilweise mit dem angegebenen Suchwort übereinstimmen, und zeigt eine Meldung über das Ergebnis des Scans an.

Programmparameter:

1 - der vollständige Pfad zum Ordner (ohne Schrägstrich - /)
2 - das Schlüsselwort für die Suche in Dateinamen oder der vollständige Dateiname
3 - Textzeichenfolge, die angezeigt wird, wenn die Datei nicht gefunden wird, wenn = 0 - Meldung
4 - Text nicht anzeigen Die Zeile, die angezeigt wird, wenn die Datei gefunden wird. Wenn = 0 - Keine Meldung anzeigen
5 - Nachrichtenausgabe: msg_off - es wird nur eine Nachricht über das Vorhandensein / Fehlen von Dateien angezeigt, msg_on - im angezeigten Fenster wird auch vorgeschlagen, den Ordner zu öffnen, in dem die Dateien erkannt oder nicht gefunden werden.

Jetzt habe ich für dieses Programm das Skript Check_LOG_from_log_analyser.bat erstellt, dessen Link ich in das übliche eingefügt habe Windows-Start:

 @set dir=%~dp0LOG start check_file_exist.exe %dir% .log 0 "     !" msg_on exit 

Somit haben wir im Finale eine völlig autonome Lösung erhalten, die nicht vom Speicherort des Synchronisierungsordners abhängt und von überall auf unserem Computer korrekt funktioniert. Die Lösung ist nicht nur praktikabel, sondern auch stabil - unter Windows 7 x64 funktionierte dieser Satz von Skripten ein Jahr lang und es gab absolut keine Probleme damit.

Vielleicht scheint das alles jetzt etwas monströs, aber es ist nichts Kompliziertes daran. Wenn Sie sich den AutoIt-Code genau ansehen, ist die Grundkonstruktion die übliche If-Then-else-End-Schleife des gleichen Typs für jede Programmiersprache, in der einige sich wiederholende AutoIt-Operatoren und -Funktionen gelernt werden, die an einigen Abenden buchstäblich gelernt werden. Die Skriptsprache BAT kann nicht einmal unterrichtet werden, da die meisten Lösungen Standard sind und seit langem im Internet beschrieben werden. Programmieren zu können ist nicht nur interessant, sondern kann auch sehr nützlich sein.

Ode an den Code von Dark Dragon




Nachwort


Um ehrlich zu sein, nahm ich an, aber ich hatte nicht mit einer solchen Menge an Artikeln gerechnet, die ich bis zu fünfzig Stunden verbringen musste. In der Regel reduziert sich die Installation Ihrer Cloud im Internet auf folgende Aussagen: "Ja, Sie müssen dort mehrere Befehle ausführen." Es ist wahr - die Installation ist trivial. Wenn Sie wissen, welche Befehle in die Konsole eingegeben werden müssen und was sie bedeuten. Wenn Sie die Essenz des Routings im Netzwerk verstehen. Wenn Sie bereits einen funktionierenden Server haben und wissen, wie Sie einen Host hinzufügen. Wenn Sie wissen, wie Sie eine Site einrichten. Das heißt, um diese verschiedenen Befehle anzuwenden, müssen Sie über ein gewisses Maß an Wissen und Erfahrung verfügen. Der Zweck dieser drei Artikel ist der Versuch, ein solches Gepäck zu erstellen, indem die erforderlichen ausreichenden Informationen an einem Ort gesammelt und die korrekte Verwendung erläutert werden. Ich hoffe aufrichtigdass diese Artikelserie jemandem hilft, seine ersten bewussten Schritte in die Welt der freien Software zu unternehmen.



Kehren Sie zum Anfang zurück, zum Inhaltsverzeichnis .



Die Geschichte der Erstellung einer Home Cloud. Teil 3. Erstellen einer persönlichen Cloud - Installieren und Konfigurieren von Nextcloud.
Textversion: 1.2.1.
Datum der Erstveröffentlichung: 02/08/2018.
Letzte Änderung: 15.01.2020.

Protokoll aktualisieren
1.2.1 [15-01-2020]
.

1.2.0 [08-02-2018]
.

1.1.0 [08-02-2018]
.

1.0.0 [08-02-2018]
.
Nextcloud 11.0.2 VMWare, VMWare , Nextcloud.



Informationen zur Verwaltung der Ressource (vermuteter Fehler)
- (, code blockquote) :
[Definition]
failregex={«reqId»:".*",«remoteAddr»:".*",«app»:«core»,«message»:«Login failed: '.*' \(Remote IP: ''\)»,«level»:2,«time»:".*"}
ignoreregex =

! , .. . (/) — . :


— , « Nextcloud» , ,
— ,



Source: https://habr.com/ru/post/de410011/


All Articles