Γειά σας και Χρόνια Πολλά!
Το Λειτουργικό είναι Linux Mint Debian Edition 6 βασισμένο σε Debian GNU/Linux 12 “Bookworm”.
Πρόθεσή μου είναι να συγχρονίζω τα περιεχόμενα έγγραφα κειμένου του καταλόγου «Έγγραφα» του χρήστη με αντίστοιχο κατάλογο ενός Raspberry Pi στο οποίο είναι εγκατεστημένο το NextcloudPi (πρόκειται για μια προσαρμογή του Nextcloud ώστε να λειτουργεί σαν Λειτουργικό Σύστημα όταν εγκατασταθεί στο Raspberry Pi…). Εγκατέστησα το πακέτο Lsyncd στο LMDE διότι αυτό κάνει χρήση του προγράμματος inotifywait (από το πακέτο inotify_tools) μέσω του οποίου το Lsyncd ενεργοποιείται όταν γίνεται τροποποίηση ενός κάποιου εγγράφου του καταλόγου «Έγγραφα» και στην συνέχεια καλείται να εκτελέσει τον συγχρονισμό. Αυτό το κάνει βάσει αρχείου ρυθμίσεων γραμμένο σε lua… Το ίδιο το πακέτο Lsyncd παρέχει υποδείγματα τέτοιων αρχείων και από αυτά πήρα το πιο κατάλληλο, το προσάρμοσα ως προς τους καταλόγους source και target αλλά και ως προς την διεύθυνση ΙΡ του Raspberry Pi και τους καταλόγους-στόχους του.
Παρότι ακολούθησα τα προαπαιτούμενα, όπως π.χ. την αντιγραφή του κλειδιού SSH στο Raspberry Pi και την ενεργοποίηση του SSH, όταν εκτελώ την εντολή «lsyncd /etc/lsyncd/lsyncdssh.conf.lua» το τερματικό μου δείνει:
20:04:55 Normal: --- Startup, daemonizing ---
Cannot open logfile [/var/log/lsyncd/lsyncd.log]!
και δεν γίνεται συγχρονισμός προς τον (κενό) κατάλογο-στόχο του Raspberry Pi.
Να σημειώσω, επίσης, ότι παρά την μεταφορά του κλειδιού SSH στο Raspberry Pi η σύνδεση σε αυτό εξακολουθεί αν μου ζητάει κωδικό, παρότι το κλειδί το ρύθμισα χωρίς κωδικό ώστε να συνδέομαι στο Raspberry Pi χωρίς password!
Το περιεχόμενο του αρχείου ρυθμίσεων του Lsyncd είναι ως εξής:
cat /etc/lsyncd/lsyncdssh.conf.lua
----
-- User configuration file for lsyncd.
--
-- Simple example for default rsync, but executing moves through on the target.
--
settings{logfile = "/var/log/lsyncd/lsyncd.log", statusFile="/var/log/lsyncd/lsyncd.status"}
sync{default.rsyncssh, source="/home/anvo/Nextcloud", host="192.168.1.130", targetdir="/media/King"}
Γνωρίζει κανείς από Lsyncd και Rsync να μου πει πού κάνω λάθος…; Δεν είναι παράξενο που το μόνο σφάλμα που εμφανζει η εκτέλεση του lsyncd είναι για το αρχείο log, χωρίς να διαμαρτύρεται για άλλη δυσλειτουργία…;
Ευχαριστώ για την απάντησή σου!
Έδωσα την άδεια για εγγραφή στον χρήστη ncpadmin, αλλά το «aa-status» μου δίνει «command not found»!
Είναι αναγκαία η ύπαρξη του apparmor στο RaspberryPi/NextcloudPi…;
EDIT: Εν τω μεταξύ, εγκατέστησα στο Raspberry το πακέτο apparmor-utils και τώρα η εντολή aa-status λέει ότι είναι ενεργοποιημένο… Πρέπει να χειριστώ και το apparmor με κάποιον τρόπο ώστε να λειτουργήσει το Lsyncd…;
Το nextcloudpi με ποιον τρόπο είναι εγκατεστημένο;
Φυσιολογικά θα έπρεπε να προϋπήρχε εγκατεστημένο το apparmor σε debian based διανομή, δηλαδή στο raspberry pi os(νομίζω).
Πρέπει να βρεις το προφίλ του nextcloud στο apparmor και να δώσεις τις επιθυμητές άδειες.
Το προφίλ θα βρίσκεται στο μονοπάτι /etc/apparmor.d/
σε κάποιο PHP.
Εκεί θα προσθέσεις για τα αρχεία log την άδεια ανάγνωσης και εγγραφής.
/var/www/nextcloud/var/log/** rw,
Παρεμπιπτόντως, με τη σύνδεση ssh τι έγινε, λειτουργεί;
Υπάρχει σχετικό βίντεο αν ενδιαφέρεσαι:
Επίσης χρήσιμη διεύθυνση για log files είναι η παρακάτω:
Ευχαριστώ θερμά για την προθυμία σου!
Αν δεν με απατά η μνήμη μου, η εγκατάσταση του NextcloudPi έγινε μέσω εικόνας που αποσυμπίεσα στην κάρτα SD του Raspberry…
Να διορθώσω ότι, τα αρχεία καταγραφής (.log) και κατάστασης (.status) που προαιρετικά ζητούνται από το Lsyncd δεν τοποθετούνται στο Raspberry/NextcloudPi αλλά στον υπολογιστή με το LMDE!
Όσο αφορά στο ζήτημα με την σύνδεση ssh, εντάξει, όλα ΟΚ!
EDIT: Αν και δίνω «sudo chown anvo:anvo /var/log/lsyncd» και «sudo chmod -R +wr /var/log/lsyncd» στον desktop υπολογιστή, η εντολή «lsyncd /etc/lyncsd/lsyncdssh.conf.lua» επιμένει να μου λέει «Cannot open logfile [/var/log/lsyncd.log]!»!!! Ο κατάλογος-στόχος, επίσης, του συγχρονισμού στο Raspberry παραμένει κενός!!!
@m01 Ευχαριστώ θερμά!
Η εκχώριση αδειών στον χρήστη «anvo» όντως έφερε αποτέλεσμα!
Εξετάζω, τώρα, το περιεχόμενο του lsyncd.log που παρήγαγε η εντολή
lsyncd /etc/lsyncd/lsyncdssh.conf.lua
anvo@deadend:~/.ssh$ cat /var/log/lsyncd/lsyncd.log
Wed Jan 1 01:32:08 2025 Normal: --- Startup, daemonizing ---
Wed Jan 1 01:32:08 2025 Normal: recursive startup rsync: /home/anvo/Nextcloud/ -> 192.168.1.130:/media/King/
Please note that SSH may not work until a valid user has been set up.
See http://rptl.io/newuser for details.
Permission denied, please try again.
Permission denied, please try again.
root@192.168.1.130: Permission denied (publickey,password).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(231) [sender=3.2.7]
Wed Jan 1 01:32:08 2025 Error: Temporary or permanent failure on startup of "/home/anvo/Nextcloud/". Terminating since "insist" is not set.
Wed Jan 1 01:41:09 2025 Normal: --- Startup, daemonizing ---
Wed Jan 1 01:41:09 2025 Normal: recursive startup rsync: /home/anvo/Nextcloud/ -> 192.168.1.130:/media/King/
Please note that SSH may not work until a valid user has been set up.
See http://rptl.io/newuser for details.
Permission denied, please try again.
Permission denied, please try again.
root@192.168.1.130: Permission denied (publickey,password).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(231) [sender=3.2.7]
Wed Jan 1 01:41:09 2025 Error: Temporary or permanent failure on startup of "/home/anvo/Nextcloud/". Terminating since "insist" is not set.
Thu Jan 2 19:37:55 2025 Normal: --- Startup, daemonizing ---
Thu Jan 2 19:37:55 2025 Normal: recursive startup rsync: /home/anvo/Nextcloud/ -> 192.168.1.130:/media/King/
Please note that SSH may not work until a valid user has been set up.
See http://rptl.io/newuser for details.
anvo@192.168.1.130: Permission denied (publickey).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(231) [sender=3.2.7]
Thu Jan 2 19:37:55 2025 Error: Temporary or permanent failure on startup of "/home/anvo/Nextcloud/". Terminating since "insist" is not set.
Εκτός από την ύπαρξη τριών(!) πανομοιότυπων παραγράφων μέσα σε αυτό, εντύπωση μου κάνει η υπόμνηση «Please note that SSH may not work until a valid user has been set up.». Σε ποιά συσκευή αναφέρεται…; Στον desktop υπολογιστή LMDE ή στο Raspberry…; Δεδομένου ότι συνδέομαι επιτυχώς «passwordless» στο RaspberryPi/NextcloudPi ως χρήστης «ncpadmin» μέσω SSH!
EDIT: Στο αρχείο log φαίνεται ότι το Lsyncd προσπαθεί να συνδεθεί στο RaspberryPi/NextcloudPi ως «anvo», χρήστης που δεν υπάρχει στο NextcloudPi! Είναι σωστό να φτιάξω στο RaspberryPi έναν τέτοιον χρήστη με τα κατάλληλα δικαιώματα μόνο και μόνο για να λειτουργήσει ο συγχρονισμός…; Υπερβολικό δεν είναι…; Μήπως όμως είναι αναγκαίος μονόδρομος…;
Μάλιστα.
Καλώς ήρθες στο club των αγανακτισμένων με το lsyncd.
Short story, από περιέργεια το δοκίμασα το καλοκαίρι και βλαστημούσα. Κάποια στιγμή κατάφερα να δουλέψει αλλά δεν έβλεπα λόγο να το κρατήσω. Έτσι κι αλλιώς παίρνω καθημερινά backup, οπότε και το ξήλωσα.
Η lua είναι ένας μπελάς άνευ προηγουμένου.
Το log που αναφέρεται στο Nextcloud είναι διότι δεν συνδέεται με ssh (το ποίο είναι ψιλοβλακεία να ερμηνεύεται έτσι - δυστυχώς).
Πρώτον βεβαιώσου ότι έχεις rsync εγκατεστημένο ΚΑΙ στο rpi. Για να δουλέψει πρέπει να υπάρχει και στις “δύο πλευρές”.
Δεύτερον για να κάνει write το rsync σε remote μηχάνημα, χρειάζεται να επέμβεις στην /etc/ssh/sshd_conf του remote και να ορίσεις PermitRootLogin yes. Που λογικά ακυρώνει τα κλειδιά rsa του user και θα κάνει root δουλειές over ssh. Μπλέξιμο.
Τρίτον, αν αυτά δεν δουλέψουν, τότε εύχομαι από καρδίας υπομονή.
Τέταρτον, ευτυχώς, υπάρχουν εναλλακτικές. Το rsync να τρέξει σαν systemd service ή μέσω crontab.
Ενημέρωσε όταν θα έχεις νεώτερα.
Υ.Γ. Μόλις είδα το edit σου. Δεν θυμάμαι τι είχα κάνει για να δουλέψει. Χλωμό να είναι η δημιουργία χρήστη anvo. Αλλά τι χάνεις να το δοκιμάσεις; Αν δεν σου δουλέψει το ξηλώνεις.
@m01 Ευχαριστώ για την επικοινωνία! Γόνιμο το μήνυμα…!
Όντως στο RaspberryPi/NextcloudPi είναι ήδη εγκατεστημένο το Rsync, αλλά πριν προχωρήσω στις αλλαγές του «sshd_config» που προτείνεις, ήθελα να μου ξεκαθαρίσει αυτό που γράφεις περί «ακύρωσης»… Δηλαδή, αν αλλάξω το «PermitRootLogin prohibit-password» σε «PermitRootLogin yes» ΔΕΝ θα δουλεύει το «ssh ncpadmin@192.168.1.130»;
EDIT: Βάζεις και σοβαρότερα θέματα, στο μήνυμά σου: Γιατί πιστεύεις ότι η lua είναι τόσο κακή γλώσσα…; Υπάρχουν και άλλες τέτοιες κριτικές…; Κάποιο url;
Όταν λές «το οποίο είναι ψιλοβλακεία να ερμηνεύεται έτσι» ποιό εννοείς…; Και πώς πρέπει να «ερμηνεύεται»…;
EDIT: Ξέχασα να συμπληρώσω ότι το lsync το επέλεξα ΜΟΝΟ ΚΑΙ ΜΟΝΟ επειδή μπορεί να ενεργοποιείται όταν κάποιο έγγραφο της «πηγής» αποθηκεύεται μετά από αλλαγές… Το δίδυμο rsync/cron δεν έχει τέτοια δυνατότητα, ή κάνω λάθος;
Όχι δεν έχει σχέση.
Το login με τα κλειδιά του ncpadmin θα δουλεύουν κανονικά.
Νομίζω ότι είναι μία γλώσσα δύσκολη στη σύνταξη. Ένα κόμμα να ξεφύγει άστα βράστα. Βεβαίως δεν την έχω πολυδουλέψει παρά μόνο περιστασιακά.
Ίσως άλλοι γνώστες της lua να έχουν πολύ πιο σωστή άποψη από τη δική μου.
Ταγκάρω τον @Asfodelus γιατί νομίζω ότι κάτι ξέρει παραπάνω(λίγο λέω ) από μένα για lua. Θα βοηθήσει όταν το δει.
Το rsync/cron δεν ενεργοποιείται από αλλαγές. Ακολουθεί ένα χρονικό pattern.
Δεν υπάρχει ουσιαστική επιβάρυνση στο σύστημα από την επαναληψιμότητα του rsync ας πούμε κάθε πέντε λεπτά. Αυτοματοποίηση είναι και μάλιστα αξιόπιστη.
Θα δοκίμαζα όμως τη λύση του systemd service. Ίσως επειδή είμαι fan του systemd.
Εσύ πως το βλέπεις; Σου δίνει startup failure σε ένα directory επειδή δεν κάνει ssh;
Εγώ μόνο βλακεία το βλέπω. Το μήνυμα -ακόμα και τώρα- πιστεύω ότι αποπροσανατολίζει.
[quote=“m01, post:12, topic:5670, full:true”]
Το rsync/cron δεν ενεργοποιείται από αλλαγές. Ακολουθεί ένα χρονικό pattern.
Δεν υπάρχει ουσιαστική επιβάρυνση στο σύστημα από την επαναληψιμότητα του rsync ας πούμε κάθε πέντε λεπτά. Αυτοματοποίηση είναι και μάλιστα αξιόπιστη.
Θα δοκίμαζα όμως τη λύση του systemd service. Ίσως επειδή είμαι fan του systemd.[/quote]
Θα το παλέψω λίγο ακόμη το Lsyncd… Θα ήθελα να του δώσω μια ευκαιρία ακόμη, κι ας φάω τα μούτρα μου, έτσι για την εμπειρία (ελπίζω, χωρίς να χάσω δεδομένα)!!! Δεν έχω άποψη περί systemd και init… Εδώ που τα λέμε, και ένα start-up script μου κάνει! Οίδομεν…
Εντάξει, δεν λέω: λίγο αποπροσανατολιστικό… Αλλά εσύ τι θα έβαζες σε ένα σύντομο, επεξηγηματικό μήνυμα, αν ήσουν ο προγραμματιστής… Άλλωστε, δεν αξίζει να κατηγορείς ολόκληρο το SSH, με τόση μακρόχρονη και σωτήρια παρουσία, για ένα χαζομήνυμα! Υπάρχουν και τα log για να εμβαθύνεις…! Τι λες…;
EDIT: Πάντως, το Lsyncd με αρχείο ρύθμισης για συγχρονισμό σε καταλόγους του ίδιου συστήματος, δουλεύει όπως πρέπει!!!
Εσύ παρανόησες τα γραφόμενά μου
Άνευ σημασίας, επιστροφή στο πρόβλημα.
Θα έλεγα να δοκιμάσεις την εντολή rsync από το station προς το rpi.
Αν δουλέψει, τότε θέλει fine-tuning το lsyncd.
Αν όχι… δες παρακάτω.
FWIW Δοκιμάζω εδώ και μισή ώρα να κάνω rsync ένα local directory προς rpi. Τζίφος. Αντίθέτως προς χ86_64 δεν υπάρχει πρόβλημα.
Που με οδηγεί να αναρωτιέμαι τι μπορεί να συμβαίνει με arm + rsync (ακόμα και αν τρέχει σαν daemon).
EDIT
Το saga συνεχίζεται, ευτυχώς για σένα με ευρύματα.
Στην εντολή rsync προσέθεσα το --rsync-path=“/usr/bin/rsync”
Οπότε το stream από host προς target (x86_64 → armv8) δούλεψε επιτέλους κανονικά.
Άρα θα πρέπει πρώτα να το δοκιμάσεις και εσύ με rsync και στη συνέχεια να περάσεις αυτό το switch στο lsyncd.
Βεβαιώσου για το path του rsync με
which rsync
EDIT 1
SUCCESS & χρωστάς καφέ.
Ο κορμός του .conf.lua για να δουλέψει
Χαίρομαι που βρέθηκε άκρη.
Τα rpi είναι arm. Μην το μπερδεύουμε με aarch64. Άλλο καπέλο αυτό που δεν είναι της παρούσης.
Τέλος πάντων δεν έχουν τόση σημασία αυτά, όσο ότι θα κάνεις τη δουλειά σου.
Νομίζω ότι πρέπει να το σημειώσεις ως λελυμένο ώστε όταν κάποιος αναζητά λύση να μπορεί να κατατοπιστεί. Βέβαια δεν ξέρω πως γίνεται αυτό
Καλή χρονιά εύχομαι με υγεία και όταν βρεθώ Βόλο… τσίπουρα !!!
Νάσαι πάντα καλά.
@m01 Δυστυχώς δεν μπορώ να σημάνω το θρεντ ως SOLVED, μετά την εισαγωγή όσων πρότεινες! Ιδού ο λόγος:
[cmdline] anvo@deadend:~$ cat /var/log/lsyncd/lsyncdssh.log
Fri Jan 3 19:51:55 2025 Normal: — Startup, daemonizing —
Fri Jan 3 19:51:55 2025 Normal: recursive startup rsync: /home/anvo/Nextcloud/ → 192.168.1.130:/media/King/
Fri Jan 3 19:51:55 2025 Error: Cannot open status file “/var/log/lsyncd/lsyncdssh.status” :/var/log/lsyncd/lsyncdssh.status: Permission denied
Please note that SSH may not work until a valid user has been set up.
See http://rptl.io/newuser for details. anvo@192.168.1.130: Permission denied (publickey).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(231) [sender=3.2.7]
Fri Jan 3 19:51:56 2025 Error: Temporary or permanent failure on startup of “/home/anvo/Nextcloud/”. Terminating since “insist” is not set. [/cmdline]
Το δε αρχείο καταγραφής «lsyncdssh.status» είναι κενό! Το ίδιο συμβαίνει και με τον κατάλογο-στόχο «/media/King» του RaspberryPi/NextcloudPi.
Μετά από κάθε αλλαγή του αρχείου ρυθμίσεων «lua», φυσικά, κάνω επανεκκίνηση του lsyncd και διαγράφω τα περιεχόμενα των log files ώστε να υπάρχουν σε αυτά μόνο οι νέες καταγραφές.
Άρα;
Δεν έχει authorized key access ο user anvo.
Αυτό καλείσαι εσύ να λύσεις και όχι το lsyncd.
Θέμα users και δικαιωμάτων over ssh είναι. Ξεκάθαρα.
Κακώς-κάκιστα το προσπέρασα όταν αναφέρθηκες προηγουμένως στους users. Δεν έδωσα σημασία υποθέτοντας ότι είχες διαχειριστεί αυτό το θέμα. My bad.
Ομολογώ ότι διαβάζοντας ξανά αυτά που έχεις γράψει για τους users, συνδέσεις, κλειδιά, με έχουν μπερδέψει.
Οπότε πάμε στοχευμένα. Δοκίμασε να αλλάξεις:
sync{
…
host=“username@192.168.1.xxx”,
…
}
Όπου username είναι αυτό που δημιούργησες κλειδιά.
Επικουρικά,
Αν τρέχεις το lsyncd.service σταμάτα το και πέρνα σε χειροκίνητο από cmd.
Σβήσε από το .conf.lua εντελώς τα settings και άσε μόνο το sync section.
Δίνοντας την εντολή
lsyncd -nodaemon /etc/lsyncd/lsyncd.conf.lua
θα γλυτώνεις χρόνο. Τα logs άλλη ώρα.
με ctrl+c σταματάς το lsyncd.
Λοιπόν!
Με τις πρόσφατες οδηγίες σου η γραμμή «lsyncd --nodaemon /etc/lsyncd/lsyncdssh.conf.lua» δίνει
[cmdline]anvo@deadend:~$ lsyncd --nodaemon /etc/lsyncd/lsyncdssh.conf.lua
14:05:39 Normal: — Startup —
14:05:39 Normal: recursive startup rsync: /home/anvo/Nextcloud/ → anvo@192.168.1.130:/media/King/
Please note that SSH may not work until a valid user has been set up.
See http://rptl.io/newuser for details. anvo@192.168.1.130: Permission denied (publickey).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(231) [sender=3.2.7]
14:05:39 Error: Temporary or permanent failure on startup of “/home/anvo/Nextcloud/”. Terminating since “insist” is not set.[/cmdline]
αν μέσα στο «lsyncdssh.conf.lua» δώσω ως χρήστη σύνδεσης τον anvo, δηλαδή, τον χρήστη του desktop και κάτοχο του κλειδιού SSH.
Από την άλλη, αν ως χρήστη σύνδεσης δώσω ncpadmin, δηλαδή, τον χρήστη του RaspberryPi/NextcloudPi που έχει δικαιώματα χρήσης ΟΛΩΝ των υπηρεσιών NextcloudPi, στο τερματικό βλέπω μεν να επιχυγχάνεται σύνδεση με το RaspberryPi αλλά με σφάλματα άδειας πρόσβασης για εγγραφή στον κατάλογο /media/King:
[cmdline] anvo@deadend:~$ lsyncd --nodaemon /etc/lsyncd/lsyncdssh.conf.lua
14:08:47 Normal: — Startup —
14:08:47 Normal: recursive startup rsync: /home/anvo/Nextcloud/ → ncpadmin@192.168.1.130:/media/King/
Please note that SSH may not work until a valid user has been set up.
See http://rptl.io/newuser for details.
rsync: [generator] failed to set times on “/media/King/.”: Operation not permitted (1)
…
----------------------[/cmdline]
Πρέπει, δηλαδή, να φτιάξω χρήστη ncpadmin στον υπολογιστή μου, για να πετύχει ο συγχρονισμός…;;;;
((((Γιατί δεν λειτουργεί η μορφοποίηση «Εντολή Τερματικού»;;;;))))
Θα σε παρακαλέσω να αφήσεις στην άκρη το lsyncd. Επί του παρόντος.
Το πρόβλημά σου είναι οι συνδέσεις ssh, τα κλειδιά κλπ.
Ο anvo, γράφεις, συνδέεται με κλειδιά στο rpi αλλά δεν του ανήκει τίποτα. Βόλτα κάνει.
Άρα από τη στιγμή που ο anvo συνδέεται με κλειδιά, χρειάζεται να δημιουργηθεί τέτοιος χρήστης στο rpi.
Και ακολούθως στο /home/anvo του rpi να δημιουργηθεί ένα directory που είναι το target για να πάει να γράψει το lsyncd.
Υποψιάζομαι χωρίς να γνωρίζω τίποτα για nextcloud-pi ή όπως λέγεται, ότι ο χρήστης ncpadmin είναι root. Και βεβαίως δεν επιτρέπει εγγραφές από remote source.
Θα πρέπει να δώσεις στο lsync το σωστό target path.
Επίσης το nodaemon είναι με μία παύλα και όχι δύο.
Αυτά και αναμένω feedback.