This commit is contained in:
2023-06-26 14:49:03 +02:00
parent d576a7f752
commit d65c9d32d0
6 changed files with 36 additions and 65 deletions

31
watch
View File

@ -2,6 +2,8 @@
[[ "$TRACE" ]] && set -x
DEBUG=${DEBUG:-"Unknown Error"}
function usage {
cat <<-EOF
Usage: $PROGNAME [OPTIONS] <local-path> <remote-path>
@ -37,14 +39,10 @@ while true; do
done
PROGNAME=$0
S3_PROG=/s5cmd
LOCAL=$1
REMOTE=$2
if [ "$ENDPOINT_URL" ]; then
AWS="aws --endpoint-url $ENDPOINT_URL"
else
AWS=aws
fi
WATCH_EVENTS=modify
function restore {
if [ "$(ls -A $LOCAL)" ]; then
@ -54,14 +52,14 @@ function restore {
fi
echo "restoring $REMOTE => $LOCAL"
if ! $AWS s3 sync "$REMOTE" "$LOCAL"; then
if ! $S3_PROG sync "$REMOTE/*" "$LOCAL"; then
error_exit "restore failed"
fi
}
function backup {
echo "backup $LOCAL => $REMOTE"
if ! $AWS s3 sync "$LOCAL" "$REMOTE" $S3_SYNC_FLAGS; then
if ! $S3_PROG sync "$LOCAL" "$REMOTE" $S3_SYNC_FLAGS; then
echo "backup failed" 1>&2
return 1
fi
@ -69,7 +67,7 @@ function backup {
function final_backup {
echo "backup $LOCAL => $REMOTE"
while ! $AWS s3 sync "$LOCAL" "$REMOTE" $S3_SYNC_FLAGS; do
while ! $S3_PROG sync "$LOCAL" "$REMOTE" $S3_SYNC_FLAGS; do
echo "backup failed, will retry" 1>&2
sleep 1
done
@ -79,9 +77,18 @@ function final_backup {
function idle {
echo "ready"
while true; do
sleep ${BACKUP_INTERVAL:-42} &
wait $!
[ -n "$BACKUP_INTERVAL" ] && backup
restore
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 echo echo "The file '$file' appeared in directory '$path' via '$action'"; backup; done
else
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
fi
done
}