Compare commits

..

1 Commits

Author SHA1 Message Date
1f5e422856 wip 2023-06-26 14:49:03 +02:00
3 changed files with 13 additions and 55 deletions

View File

@ -1,37 +0,0 @@
---
# drone encrypt ResiLien/docker-s3-volume-watch $REGISTRY_USERNAME
kind: secret
name: REGISTRY_USERNAME
data: nWD+Q9IZSvWw6aDlxBgjvaQqsyU9Muub4A9wJMIfZ8A18g==
---
# drone encrypt ResiLien/docker-s3-volume-watch $REGISTRY_PASSWORD
kind: secret
name: REGISTRY_PASSWORD
data: fshphgiLW3gyuwhKHgSe7m6Y/LXtse2VEYABvjWYCov8w85+CMa5hjkHSiO+dgRCMOC4+OE5ZlZjD/5hAURi6TsBTZw0h5fWsnEjMR6L
---
kind: pipeline
type: docker
name: amd64
platform:
os: linux
arch: amd64
steps:
- name: docker
image: thegeeklab/drone-docker-buildx
privileged: true
settings:
registry: registry.weko.io
username:
from_secret: REGISTRY_USERNAME
password:
from_secret: REGISTRY_PASSWORD
repo: registry.weko.io/simonc/docker-s3-volume-watch
tags:
- latest
platforms:
- linux/arm64
- linux/amd64

View File

@ -1,7 +1,7 @@
FROM peakcom/s5cmd:v2.1.0
label maintainer="RésiLien <admin+docker@resilien.fr>"
RUN apk --no-cache add inotify-tools bash tzdata
RUN apk --no-cache add inotify-tools bash
ADD watch /watch
VOLUME /data

29
watch
View File

@ -4,11 +4,6 @@
DEBUG=${DEBUG:-"Unknown Error"}
function log {
now=`date +"%Y-%m-%d %T"`
echo "[${now}] $1"
}
function usage {
cat <<-EOF
Usage: $PROGNAME [OPTIONS] <local-path> <remote-path>
@ -21,7 +16,7 @@ EOF
}
function error_exit {
log "${1:-"Unknown Error"}" 1>&2
echo "${1:-"Unknown Error"}" 1>&2
exit 1
}
@ -56,49 +51,49 @@ function restore {
fi
fi
log "restoring $REMOTE => $LOCAL"
echo "restoring $REMOTE => $LOCAL"
if ! $S3_PROG sync "$REMOTE/*" "$LOCAL"; then
error_exit "restore failed"
fi
}
function backup {
log "backup $LOCAL => $REMOTE"
echo "backup $LOCAL => $REMOTE"
if ! $S3_PROG sync "$LOCAL" "$REMOTE" $S3_SYNC_FLAGS; then
log "backup failed" 1>&2
echo "backup failed" 1>&2
return 1
fi
}
function final_backup {
log "backup $LOCAL => $REMOTE"
echo "backup $LOCAL => $REMOTE"
while ! $S3_PROG sync "$LOCAL" "$REMOTE" $S3_SYNC_FLAGS; do
log "backup failed, will retry" 1>&2
echo "backup failed, will retry" 1>&2
sleep 1
done
exit 0
}
function idle {
log "ready"
log "RESTORE_INTERVAL: ${RESTORE_INTERVAL}"
echo "ready"
while true; do
restore
if [[ -v RESTORE_INTERVAL ]]; then
if [[ -v $RESTORE_INTERVAL ]]; then
backup
timeout ${RESTORE_INTERVAL} inotifywait -m -e modify -e move -e create -e delete --timefmt '%Y-%m-%d %H:%M:%S' --format '%T %f' $LOCAL | while read date time file; do log "The file '$file' appeared in directory '$path' via '$action'"; backup; done
timeout ${RESTORE_INTERVAL} inotifywait -m -e modify -e move -e create -e delete --timefmt '%Y-%m-%d %H:%M:%S' --format '%T %f' $LOCAL | while read date time file; do echo echo "The file '$file' appeared in directory '$path' via '$action'"; backup; done
else
log "Without restore interval"
inotifywait -m -e modify -e move -e create -e delete --timefmt '%Y-%m-%d %H:%M:%S' --format '%T %f' $LOCAL |
while read date time file
do
log "The file '$file' appeared in directory '$path' via '$action'"
echo echo "The file '$file' appeared in directory '$path' via '$action'"
backup
done
fi
done
}
restore
trap final_backup SIGHUP SIGINT SIGTERM
trap "backup; idle" USR1