Merge 957d885524 into 84ef1e44a0
This commit is contained in:
commit
bdbc8097ae
1 changed files with 28 additions and 0 deletions
28
directory_monitor.sh
Executable file
28
directory_monitor.sh
Executable file
|
|
@ -0,0 +1,28 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Diretório a monitorar e diretório de backup (podem ser passados como argumentos)
|
||||||
|
WATCH_DIR="${1:-/tmp/monitored}"
|
||||||
|
BACKUP_DIR="${2:-/tmp/backup}"
|
||||||
|
|
||||||
|
if ! command -v inotifywait &>/dev/null; then
|
||||||
|
echo "Erro: inotifywait não encontrado. Instale com: sudo apt install inotify-tools" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "$WATCH_DIR" "$BACKUP_DIR"
|
||||||
|
|
||||||
|
echo "Monitorando '$WATCH_DIR' → backups em '$BACKUP_DIR'"
|
||||||
|
echo "Pressione Ctrl+C para parar."
|
||||||
|
|
||||||
|
inotifywait -m -e close_write,moved_to --format '%f' "$WATCH_DIR" |
|
||||||
|
while IFS= read -r filename; do
|
||||||
|
src="$WATCH_DIR/$filename"
|
||||||
|
timestamp=$(date +%Y%m%d_%H%M%S)
|
||||||
|
dest="$BACKUP_DIR/${filename%.*}_${timestamp}.${filename##*.}"
|
||||||
|
|
||||||
|
# Arquivo sem extensão
|
||||||
|
[[ "$filename" == "${filename##*.}" ]] && dest="$BACKUP_DIR/${filename}_${timestamp}"
|
||||||
|
|
||||||
|
cp -- "$src" "$dest" && \
|
||||||
|
echo "[$(date -Iseconds)] Backup: '$filename' → '$dest'"
|
||||||
|
done
|
||||||
Loading…
Reference in a new issue