84 lines
2.1 KiB
Bash
84 lines
2.1 KiB
Bash
#!/bin/bash
|
|
|
|
logPath=log.txt
|
|
|
|
# 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
|
|
|
|
cd ..
|
|
echo "$log" >> "$logPath"
|
|
|
|
if [ "$gitOutput" == "" ]; then
|
|
cd "repositories/$repository"
|
|
gitURL=$(git config --get remote.origin.url)
|
|
cd ..
|
|
rm -rf "$repository"
|
|
gitOutput=$(git clone --recurse-submodules --recursive $gitURL)
|
|
cd ..
|
|
if [ "$gitOutput" == "" ]; then
|
|
log=$(echo [$(date +"%Y-%m-%d %H:%M:%S")] Unable to check for updates to \"$repository\")
|
|
echo "$log"
|
|
echo "$log" >> "$logPath"
|
|
echo >> "$logPath"
|
|
|
|
cp -rf "snapshots/$repository" repositories
|
|
|
|
cd repositories
|
|
continue;
|
|
fi
|
|
|
|
echo "$gitOutput"
|
|
fi
|
|
|
|
echo "$gitOutput" >> "$logPath"
|
|
|
|
snapshotSize=$(($(du -sb "snapshots/$repository" | cut -f1) - $(du -sb "snapshots/$repository/.git" | cut -f1)))
|
|
if [ $(($snapshotSize - ($snapshotSize / $thresholdFactor))) -lt $(($(du -sb "repositories/$repository" | cut -f1) - $(du -sb "repositories/$repository/.git" | cut -f1))) ]; then
|
|
log=$(echo [$(date +"%Y-%m-%d %H:%M:%S")] Updating \"$repository\")
|
|
echo "$log"
|
|
echo "$log" >> "$logPath"
|
|
echo >> "$logPath"
|
|
|
|
rm -rf "snapshots/$repository"
|
|
cp -rf "repositories/$repository" snapshots
|
|
|
|
cd repositories
|
|
continue
|
|
fi
|
|
|
|
snapshotTime=$(echo [$(date +"%Y-%m-%d %H'%M'%S")])
|
|
log=$(echo $snapshotTime Snapshotting \"$repository\")
|
|
echo "$log"
|
|
echo "$log" >> "$logPath"
|
|
echo >> "$logPath"
|
|
|
|
tar -czf "snapshots/$snapshotTime $repository.tar.gz" "snapshots/$repository"
|
|
rm -rf "snapshots/$repository"
|
|
cp -rf "repositories/$repository" snapshots
|
|
|
|
cd repositories
|
|
done
|
|
cd ..
|
|
|
|
# sleep $sleepTime
|
|
#done |