Init commit

This commit is contained in:
Archie Fox
2025-06-08 06:59:19 +03:00
commit 06b8ee8caf
148 changed files with 18659 additions and 0 deletions

74
bin/rsync.sh Executable file
View File

@@ -0,0 +1,74 @@
#!/bin/bash
export DISPLAY=:1
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
SRC="/home/fox/Share"
DST="fox@archevod.netcraze.pro:/home/fox/"
DST_LOCAL="fox@seeed:/home/fox/"
LOCKFILE="/home/fox/bin/rsync_watch.lock"
LOGFILE="/home/fox/bin/log/rsync_watch.log"
NOTIFY="notify-send"
IP=$(ip -4 addr show wlan0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
TARGET_IP="192.168.1.3"
# Проверяем размер файла в байтах
FILESIZE=$(stat -c%s "$LOGFILE")
# 100 мегабайт в байтах
LIMIT=$((100 * 1024 * 1024))
log() {
echo -e "$(date '+%Y-%m-%d %H:%M:%S') $*" | tee -a "$LOGFILE"
}
if [ "$FILESIZE" -gt "$LIMIT" ]; then
: >"$LOGFILE" # Очищаем файл (альтернативно можно использовать > "$FILE")
log "Файл был очищен \"$(date)\""
log ""
fi
# Проверка наличия inotifywait
if ! command -v inotifywait &>/dev/null; then
log "Ошибка: inotifywait не установлен. Установите inotify-tools."
exit 1
fi
if [[ "$IP" == "$TARGET_IP" ]]; then
log "Старт наблюдения за $SRC\n Цель: $DST_LOCAL\n"
else
log "Старт наблюдения за $SRC\n Цель: $DST\n"
fi
while true; do
inotifywait -r -e modify,create,delete,move "$SRC" >/dev/null 2>&1
# Проверка на наличие блокировки
if [ -f "$LOCKFILE" ] && kill -0 "$(cat "$LOCKFILE")" 2>/dev/null; then
log "Пропущено: rsync уже запущен (PID $(cat "$LOCKFILE"))"
continue
fi
# Установка блокировки
echo $$ >"$LOCKFILE"
sleep 20
SECONDS=0
$NOTIFY "🔁 Начата синхронизация..."
log "----------------------------------------"
log "Изменения обнаружены. Запуск rsync..."
log "Local IP address = $IP"
if [[ "$IP" == "$TARGET_IP" ]]; then
rsync -auvhH --delete "$SRC" "$DST_LOCAL" >>"$LOGFILE" 2>&1
else
rsync -auvhH -e "ssh -p 3022" --delete "$SRC" "$DST" >>"$LOGFILE" 2>&1
fi
log "Синхронизация завершена за $SECONDS сек."
log "----------------------------------------\n"
$NOTIFY "🔁 Синхронизация завершена за $SECONDS сек."
# Удаление блокировки
rm -f "$LOCKFILE"
done