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