From e666d423e855d514247f863b6bf689e3c6f66ea8 Mon Sep 17 00:00:00 2001 From: Kaarle Ritvanen Date: Sat, 11 Apr 2020 15:34:24 +0300 Subject: main/in-sync: backport from edge --- main/in-sync/APKBUILD | 23 +++++++++++++++++++++++ main/in-sync/in-sync | 29 +++++++++++++++++++++++++++++ main/in-sync/in-sync.conf | 1 + main/in-sync/in-sync.initd | 14 ++++++++++++++ 4 files changed, 67 insertions(+) create mode 100644 main/in-sync/APKBUILD create mode 100644 main/in-sync/in-sync create mode 100644 main/in-sync/in-sync.conf create mode 100644 main/in-sync/in-sync.initd diff --git a/main/in-sync/APKBUILD b/main/in-sync/APKBUILD new file mode 100644 index 0000000000..491ea40fb4 --- /dev/null +++ b/main/in-sync/APKBUILD @@ -0,0 +1,23 @@ +# Contributor: Kaarle Ritvanen +# Maintainer: Kaarle Ritvanen +pkgname=in-sync +pkgver=1.0 +pkgrel=0 +pkgdesc="inotify-triggered file synchronization" +url="https://git.alpinelinux.org/cgit/aports/tree/main/in-sync" +arch="noarch" +license="GPL-2.0-only" +depends="inotify-tools rsync" +subpackages="$pkgname-openrc" +source="in-sync in-sync.conf in-sync.initd" +options="!check" # No testsuite + +package() { + install -D -m 755 "$srcdir/in-sync" "$pkgdir/usr/sbin/in-sync" + install -D -m 644 "$srcdir/in-sync.conf" "$pkgdir/etc/in-sync.conf" + install -D -m 755 "$srcdir/in-sync.initd" "$pkgdir/etc/init.d/in-sync" +} + +sha512sums="e525963135dbf185385fc1739b9241efd149ca14b9198eb52c3667f5ba13bbc924b7192d937179dde8eab2edff0e7d108b72ef75ef5adb0320202cf3838f1c7d in-sync +27f1f36437f245e3555d598228ddc81c9ddc217fc54aadaa4135cb3b2794559b485c220e3d481efb600f5386f41af8566c409b6353e9d3f563dfce08a9e9bf78 in-sync.conf +de73c5375f734a0e1955ee7d2e3f2474e23ff0f8ddcd310a5eb774d208e4de13005d640a3c8fb22ac63b88040a6f7cc88b5723b8ac28829a3784aac2e04a7bd2 in-sync.initd" diff --git a/main/in-sync/in-sync b/main/in-sync/in-sync new file mode 100644 index 0000000000..421974dc9e --- /dev/null +++ b/main/in-sync/in-sync @@ -0,0 +1,29 @@ +#!/bin/sh + +# inotify-triggered file synchronization +# Copyright (c) 2020 Kaarle Ritvanen + +. /etc/in-sync.conf + +log() { + logger -p daemon.$1 "$(basename "$0"): $2" +} + +list_files() { + local path + cat /etc/in-sync.d/* | while read path; do + [ -e "$path" ] && echo "$path" + done +} + +while :; do + for host in $TARGET_HOSTS; do + if list_files | rsync -avz --files-from - / $host:/; then + log info "successfully synchronized to $host" + else + log err "synchronization to $host failed" + fi + done + list_files | inotifywait -e close_write -t 900 --fromfile - + [ $? -eq 1 ] && sleep 60 +done diff --git a/main/in-sync/in-sync.conf b/main/in-sync/in-sync.conf new file mode 100644 index 0000000000..4931f8ccbc --- /dev/null +++ b/main/in-sync/in-sync.conf @@ -0,0 +1 @@ +TARGET_HOSTS="" diff --git a/main/in-sync/in-sync.initd b/main/in-sync/in-sync.initd new file mode 100644 index 0000000000..9cc86c0109 --- /dev/null +++ b/main/in-sync/in-sync.initd @@ -0,0 +1,14 @@ +#!/sbin/openrc-run + +# inotify-triggered file synchronization +# Copyright (c) 2020 Kaarle Ritvanen + +name=in-sync +command=/usr/sbin/in-sync +command_background=1 +pidfile=/var/run/$name.pid + +depend() { + need net + after firewall +} -- cgit v1.2.3