abs4snap stands for: Another Bash Script For Snapshots
For: rpm-based distros
#!/bin/bash # Evaggelos Balaskas, <ebalaskas AT ebalaskas DOT gr>, 20090122 DIR="/var/cache/rpmbased/rpmlist" PATHS="/etc /usr/local/etc /boot" BACKUP="backup" PALIST="/bin/rpm -qa" RSYNC="/usr/bin/rsync -ra" SORT="/bin/sort" MKDIR="/bin/mkdir -p" DATE="/bin/date" CP="/bin/cp -al " MV="/bin/mv -f" RM="/bin/rm -rf" TOUCH="/bin/touch" DAYS="10" # Make Directory Structure $MKDIR $DIR/`$DATE +%Y/%m/%d` #Package List $PALIST | $SORT > $DIR/`$DATE +%Y/%m/%d/pkglist_%H_%M` #Rotation if [ -d "$DIR/$BACKUP.$DAYS" ] ; then $RM $DIR/$BACKUP.$DAYS fi for i in `seq $(expr $DAYS - 1 ) -1 1` ;do if [ -d "$DIR/$BACKUP.$i" ]; then $MV $DIR/$BACKUP.$i $DIR/$BACKUP.$(expr $i + 1) fi done # Create Hard Link if [ -d "$DIR/$BACKUP.0" ] ; then $CP $DIR/$BACKUP.0 $DIR/$BACKUP.1 fi # Sychronization for k in $PATHS; do $MKDIR $DIR/$BACKUP.0$k/ $RSYNC --delete $k/ $DIR/$BACKUP.0$k done # TimeStamp $TOUCH $DIR/$BACKUP.0
For Archlinux distro:
#!/bin/bash # Evaggelos Balaskas, <ebalaskas AT ebalaskas DOT gr>, 20090122 DIR="/var/cache/pacman/pkglist" PATHS="/etc /usr/local/etc /boot" BACKUP="backup" PACMAN="/usr/bin/pacman -Qqe" RSYNC="/usr/bin/rsync -ra" MKDIR="/bin/mkdir -p" DATE="/bin/date" CP="/bin/cp -al " MV="/bin/mv -f" RM="/bin/rm -rf" TOUCH="/bin/touch" DAYS="10" # Make Directory Structure $MKDIR $DIR/`$DATE +%Y/%m/%d` #Package List $PACMAN > $DIR/`$DATE +%Y/%m/%d/pkglist_%H_%M` #Rotation if [ -d "$DIR/$BACKUP.$DAYS" ] ; then $RM $DIR/$BACKUP.$DAYS fi for i in `seq $(expr $DAYS - 1 ) -1 1` ;do if [ -d "$DIR/$BACKUP.$i" ]; then $MV $DIR/$BACKUP.$i $DIR/$BACKUP.$(expr $i + 1) fi done # Create Hard Link if [ -d "$DIR/$BACKUP.0" ] ; then $CP $DIR/$BACKUP.0 $DIR/$BACKUP.1 fi # Sychronization for k in $PATHS; do $MKDIR $DIR/$BACKUP.0$k/ $RSYNC --delete $k/ $DIR/$BACKUP.0$k done # TimeStamp $TOUCH $DIR/$BACKUP.0