Nowe posty

xx Problem ze sterownikami. (5)
2024-04-13, 21:25:16
xx Instalacja xfce4 (2)
2024-04-13, 16:20:17
xx Serie kompilacji bez instalacji dla “emerge” w Gentoo (2)
2024-04-08, 18:40:04
xx Plasma 6 w Neonie ssie trochę mniej ... (17)
2024-04-05, 10:03:46
xx Problem z Linux Lite po instalacji (3)
2024-04-03, 14:23:40
xx Jak właczyć num locka przy starcie systemu debian 12? (12)
2024-04-02, 17:43:54
xx Brak dźwieku w systemie. (5)
2024-04-02, 16:13:41
xx Dystrybucja pod HP Omen (7)
2024-03-29, 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
xx Ile pingwinów? (1)
2024-03-27, 08:59:24

Autor Wątek: Monitorowanie folderu zdalnego  (Przeczytany 1101 razy)

jagrok

  • Gość
Monitorowanie folderu zdalnego
« dnia: 2016-04-08, 12:01:03 »
Witam,

Panowie jest to mój pierwszy post na forum, dlatego na samym początku pragnąłbym wszystkich przywitać, za nim przejdę do sedna sprawy.

W ostatnim czasie borykam się z monitorowaniem folderu zdalnego w którym to po pojawieniu się nowego pliku dochodziło by do synchronizacji.
Na samym początku napisałem prostu skrypt, wykorzystujący inotify-tools.
Świetnie sprawdzał się w przypadku lokalnych folderów, w przypadku zdalnych już niestety nie.

Dlatego pomyślałem że będę monitorował sobie /zdalny/folder za pomocą komendy listującej.
W momencie gdy porównam listingi za pomocą komendy cmp i wykryje zmianę, zacznę synchronizować zawartość katalogów.
Wszystko pięknie działa.

Niestety nie przewidziałem jednej rzeczy.
Mój skrypt nie powinien synchronizować plików które już były synchronizowane, a np zostały skasowane bo były nie potrzebne.
Czy jest jakiś sposób by tego uniknąć ?

#!/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