Upload files to "/"

This commit is contained in:
Mohammed Goder 2024-03-13 10:51:49 -05:00
commit a7b7ab9957
3 changed files with 73 additions and 0 deletions

10
grs.service Normal file
View File

@ -0,0 +1,10 @@
[Unit]
Description=Git Repository Synchronizer
After=network.target
[Service]
WorkingDirectory=/mnt/git-repository-archive
ExecStart=/mnt/git-repository-archive/grs.sh
[Install]
WantedBy=multi-user.target

54
grs.sh Normal file
View File

@ -0,0 +1,54 @@
#!/bin/bash
# 1/10 = 0.1 = 10%
thresholdFactor=10
sleepTime=10m
#while true; do
if [ ! -d repositories ]; then mkdir repositories; fi
if [ ! -d snapshots ]; then mkdir snapshots; fi
cd repositories
for repository in *; do
if [ ! -d "$repository" ]; then continue; fi
if [ ! -d "../snapshots/$repository" ]; then cp -rf "$repository" ../snapshots; fi
log=$(echo [$(date +"%Y-%m-%d %H:%M:%S")] Checking \"$repository\")
echo "$log"
cd "$repository"
gitOutput=$(git pull --recurse-submodules=on-demand)
echo "$gitOutput"
cd ..
if [ "$gitOutput" == "Already up to date." ]; then continue; fi
echo "$log" >> ../log.txt
echo "$gitOutput" >> ../log.txt
snapshotSize=$(($(du -sb "../snapshots/$repository" | cut -f1) - $(du -sb "../snapshots/$repository/.git" | cut -f1)))
if [ $(($snapshotSize - ($snapshotSize / $thresholdFactor))) -lt $(($(du -sb "$repository" | cut -f1) - $(du -sb "$repository/.git" | cut -f1))) ]; then
log=$(echo [$(date +"%Y-%m-%d %H:%M:%S")] Updating \"$repository\")
echo "$log"
echo "$log" >> ../log.txt
echo >> ../log.txt
rm -rf "../snapshots/$repository"
cp -rf "$repository" ../snapshots
continue
fi
snapshotTime=$(echo [$(date +"%Y-%m-%d %H'%M'%S")])
log=$(echo $snapshotTime Snapshotting \"$repository\")
echo "$log"
echo "$log" >> ../log.txt
echo >> ../log.txt
tar -czf "../snapshots/$snapshotTime $repository.tar.gz" "../snapshots/$repository"
rm -rf "../snapshots/$repository"
cp -rf "$repository" ../snapshots
done
cd ..
# sleep $sleepTime
#done

9
grs.timer Normal file
View File

@ -0,0 +1,9 @@
[Unit]
Description=Git Repository Synchronizer
[Timer]
OnCalendar=*:0/10
Persistent=true
[Install]
WantedBy=timers.target