2016-04-07 18 views
0

Ich habe ein einfaches Skript erstellt, das auf Inotify-Tools basiert, aber nachdem ich mich entschieden habe, remotepath zu überwachen, was von NAS mit dem Befehl mount.cifs gemountet wurde, war es nicht möglich.Remote-Pfad für die Überwachung von Änderungen

So nach einigen Untersuchungen fand ich Informationen, die Inotify-Tools nicht unterstützt Remote-Ordner.

Hat jemand von Ihnen Erfahrung mit einem einfachen Werkzeug, das mir eine Chance geben wird, Remote-Ordner zu sehen, und wenn sich etwas ändern wird, dann wird rsync laufen.

Vielleicht sollte ich nur mit rsync gehen und remote Ordner nur mit neuen Dateien synchronisieren?

Danke für irgendwelche Ideen.

In der Zwischenzeit habe ich ein einfaches Bash-Skript erstellt, was das macht, was ich will, aber ich kämpfe mit einem Problem, was passiert, wenn etwas aus dem Zielordner gelöscht wird und ich diese gelöschte Datei nicht noch einmal synchronisieren möchte. Irgendeine Idee, wie man dieses Problem behebt?

#!/bin/bash 

### Logs path 
path="/var/log/compare" 
log="compare.log" 
listing1="listing1.log" 
listing2="listing2.log" 
### Path which will be monitored 
destination="/path/to/destination/" 
source="/path/to/remote/folder" 


## Watching for content in source folder 
ls -lh $source > $path/$listing1 
### I`m checking if something was changed 
     echo "$(date)" 'INFO' 'I will compare listing files' >> "$path/$log" 
     if cmp -s "$path/$listing1" "$path/$listing2" 
### Files are the same 
     then 
     echo "$(date)" 'INFO' 'Listings are the same' >> "$path/$log" 
### Files are different 
     else 
     rsync -art $source $destination 
     echo "$(date)" 'INFO' 'Finished synchronization' >> "$path/$log" 
fi 
cp $path/$listing1 $path/$listing2 
+0

Soll ich über Rdiff-Backup denken? – jagrok

Antwort

0

Inotify ist in der Tat das falsche Werkzeug für den Job; Es funktioniert, indem es die Dateisystemaktivität im Kernel abfängt, so dass Remote-Aktivitäten völlig übersehen werden.

Eine ideale Lösung wäre, inotify auf der NAS-Box laufen zu lassen. Dies ist mit einigen Geräten sicher möglich, aber Sie sagen nicht, welches Gerät Sie haben (und wenn Sie das getan haben, habe ich wahrscheinlich nicht das gleiche).

Jedes andere Tool, das existiert, wird genau das tun, was Ihr Skript macht (wenn auch vielleicht hübscher), also glaube ich nicht, dass Sie diesen Weg verfolgen müssen.

In jedem Fall ist Ihr Skript vollständig redundant! Wenn Sie nur rsync regelmäßig ausführen, würde es genau dasselbe tun (rsync -t vergleicht nur die Dateinamen, Größen und Zeitstempel). Der einzige Unterschied besteht darin, dass rsync die Remote-Dateiliste mit Ihren echten Dateien vergleicht, nicht mit einer zwischengespeicherten Kopie der Dateiliste. Übrigens bedeutet -a sowohl -r als auch -t, also rsync -a ist ausreichend.

Eine Sache, die ich untersuchen würde: Rsync auf dem NAS-Gerät direkt ausführen. Der Zugriff auf die Dateiliste über CIFS ist weniger effizient als die lokale Ausführung. Wenn Ihr NAS also rsync unterstützen kann, tun Sie dies auf diese Weise. (Synology NAS Boxen haben rsync, aber ich weiß nicht über andere Geräte.)

+0

Hallo Herr, Vielen Dank für Ihre schnelle Antwort. In Bezug auf Ihre Frage, ich benutze Synology-Lösung in Verbindung mit Linux-Servern, auf der Linux-Website gibt es kein Problem mit inotify oder rsync oder einem anderen Tool. Im Falle von Synology kann es aufgrund geschlossener Betriebssysteme und fehlender Pakete zu Komplikationen kommen. Wenn die Inotify-Tools auf dem NAS ausgeführt werden können, dann Ja, ich gehe lieber auf die Synology. Über rsync, ich habe darüber nachgedacht, aber das Problem ist, wenn ich einige Dateien auf dem Linux-Server (das ist das Ziel) löschen wird, wird Rsync mit ihrer Quelle von Synology synchronisieren. – jagrok

+0

Ich habe keine Synology mehr (ich ersetzte sie durch ein NUC), aber ich habe Pakete aus dem Projekt nlsu2 mit 'ipkg' installiert. Es funktioniert wie "apt-get" usw. – ams

+0

Über die gelöschten Dateien ersetzt werden, verstehe ich nicht, wie Sie das Skript ändert? Es ändert sich nur, wenn es passiert. In jedem Fall weist das Flag '--existing' rsync an, vorhandene Dateien zu aktualisieren, ohne neue zu erstellen. – ams