-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexample.kc303va1
52 lines (44 loc) · 1.46 KB
/
example.kc303va1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
§§f§main
§xo§BACKUP_FOLDER = "autominibackups"
§xo§CONFIG_FILE = "autominibackups_file_watch_config.txt"
mkdir -p §xo§BACKUP_FOLDER
if [ ! -f §xo§CONFIG_FILE ]; then
echo "# Enter files to watch (one per line):" > §xo§CONFIG_FILE
echo "# Example: /path/to/file1.txt" >> §xo§CONFIG_FILE
echo " >> §xo§CONFIG_FILE"
echo "# LEAVE THIS AS THE LAST LINE PLEASE" >> §xo§CONFIG_FILE
echo "Config file created. Please add files to watch in §xo§CONFIG_FILE and run the script again."
exit 0
fi
if ! command -v entr &> /dev/null; then
echo "entr is not installed. Please install it and run the script again."
exit 1
fi
§§f§is_file_readable
§xi§file = §xi§1
if [ ! -f §xi§file ]; then
echo "Warning: File '§xi§file' does not exist. Skipping."
return 1
elif [ ! -r §xi§file ]; then
echo "Warning: File '§xi§file' is not readable. Skipping."
return 1
fi
return 0
§§f§watch_file
§xi§file = §xi§1
if §f§is_file_readable §xi§file; then
echo "Watching §xi§file"
filename="${§xi§file##*/}"
extension="${filename##*.}"
filename_no_ext="${filename%.*}"
timestamp=$(date +'%y%m%d%H%M%S')
backup_filename="${filename_no_ext}_autominibackup${timestamp}.${extension}"
echo §xi§file | entr -p sh -c "cp '§xi§file' '§xo§BACKUP_FOLDER/§xo§backup_filename'" &
fi
while IFS= read -r file; do
if [ -n §xi§file ] && [[ ! §xi§file =~ ^\s*# ]]; then
§f§watch_file §xi§file
fi
done < §xo§CONFIG_FILE
echo "File watching started. Press Ctrl+C to stop."
wait