GitRepositorySynchronizerV1/grs.sh

54 lines
1.5 KiB
Bash

#!/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