Similar to what I have been doing with subversion, I now also create backups for my git repositories.
Note that the git repositories on the backup host are local repositories (not cloned ones) and that they are named "
From /etc/periodic/monthly/mine.monthly
:
if [ -d /Library/Repositories ]; then
cd /Library/Repositories
for i in *.git ; do
# Not a local git repository? Ignore it.
if [ ! -f "$i/HEAD" ]; then
continue
fi
line="/tmp/monthly-$i.out"
# File: /Volumes/Backups/Attic/git-file-2016-08-10.bundle
name="git-`basename $i`-`date +%F`.bundle"
dump="/Volumes/Backups/Attic/$name"
if [ ! -f "$dump" ]; then
echo "Bundling git repository: $name"
{ cd "$i"; git bundle create "$dump" --all; } >& "$line"
# Change the user for the dump file.
chown gollum:gollum "$dump"
# Only output the last stderr line then delete the file.
tail -1 "$line"
rm "$line"
else
echo "Warning: Dump already exists: $name"
fi
done
else
echo "Error: Repositories directory not found."
fi
The weekly backups are much the same, except that only the three most recent repositories are backed up. Thus, the for loop in /etc/periodic/weekly/mine.weekly
changes to:
for i in `ls -1t *.git | sed '3 q'` ; do
[...]
line="/tmp/weekly-$i.out"
[...]
N.B. I still use TrashLater to keep files for only 6 months in the Attic folder.