By now the initial introduction of SBWG that I've written in the first entry in this category is not only incomplete but in its details largely obsolete. SBWG matured a great deal in the last months and I feel like publishing a new version. I have started documenting stuff properly in the README and other files included in the package since I have a set goal for version 1.0. I will likely add no new features until I have made something that I can satidfyingly call version 1.0. Right now I'm in between versions 0.8.6 and 0.8.7. I call in-between version wip (work in progress). I feel like publishing what I have so far right now. So here is a wip version: 0.8.6-wip.
I've finally taken some time to overhaul my dotfiles. I took a lot from git repositories and reddit posts that I've found and added some functions and aliases myself. I'm using Bash 4 and haven't tested any of this with any other shell. I've removed and redacted personal lines.
There are a lot of dotfiles that other's have shared that would be worth sharing here. But it's easy to find those and I don't know what you'd like or not. So I'll point out just one simple project, "Sensible Bash by Mattia Tezzele, that attempts to set saner Bash defaults.
Source this script in Bash to make unformatted output of commands appear on screen slowly, accompanied by beeping galore.
source moviefy.sh
or . moviefy.sh
. Every command executed after that will be moviefied. There is no way to turn it off again. (Just exit.) Please note that formatted output may be mangled or it may crash the script. Curses stuff won't work.
#!/bin/bash
export LC_ALL=C
exec > >\
(while IFS= read -d '' -r line; do
if [[ -n $line ]]; then
echo
for (( i=0; i<${#line}; i++ )); do
char="${line:$i:1}"
printf '%c' "$char"
case $char in
[" "]) sleep 0.04
;;
[$'\t']) sleep 0.08
;;
[$'\v']) sleep 0.7
;;
[$'\n'$'\r'$'\f']) sleep 0.25
;;
*) beep -f $(shuf -i 3000-3200 -n 1) -l 5
sleep 0.015
;;
esac
done
printf "${PS1@P}"
printf ""
fi
done)
PROMPT_COMMAND='printf "\0"'
This is an outdated version of my backup script. I've posted a newer version here.
Here is an updated, more versatile version of the simple backup script I posted before. It takes arguments now (wow)! So now you need only one backup.sh and in your cron tab or similar you can pass it the directory you would like to back up.
For example backup.sh /home/user UsersHomeDir
will back up the home directory of user to the predefined location.
In preperation you only need to mount the drive you would like to back up to and enter the mount point (or a path inside it) at the top of the script (variable $BUDIR). In this destination folder (which can be an external drive or a NAS) backups are organised in directories named by the host name of the machine the script was executed on and the name of the backup job (the second argument). By default it will keep 8 incremental backups per backup name. This can be changed with the variable $NUM.
If you give the script only one argument it will interpret it as a name of a file that contains the directories that you want to back up.
If you pass no argument to the script it will look for such a file in the location that is pre-defined at the top of the script (variable $LIST).
This is a very primitive and bad script. I've posted a new version here.
"No backup no pity!"
I don't agree. But I like the saying for reasons that I shall not analyse here right now.
I don't always have proper backups of my data, let alone off-site backups. I have no backup at all of a large portion of my hoarded data. But I did at some point take the time to create scripts that back up important stuff automatically. Here is a simple one using rsync and a mounted share as a target.
#!/bin/bash
NAME="usershomedir"
SRCDIR="/home/user"
BUDIR="/mnt/backup/"
rm -rf $BUDIR$NAME.8
mv $BUDIR$NAME.7 $BUDIR$NAME.8
mv $BUDIR$NAME.6 $BUDIR$NAME.7
mv $BUDIR$NAME.5 $BUDIR$NAME.6
mv $BUDIR$NAME.4 $BUDIR$NAME.5
mv $BUDIR$NAME.3 $BUDIR$NAME.4
mv $BUDIR$NAME.2 $BUDIR$NAME.3
mv $BUDIR$NAME.1 $BUDIR$NAME.2
cp -al $BUDIR$NAME.0 $BUDIR$NAME.1
NOW=$(date)
echo >> $BUDIR$NAME.log
echo >> $BUDIR$NAME.log
echo >> $BUDIR$NAME.log
echo "##### STARTING INCREMENTAL BACKUP AT $NOW" >> $BUDIR$NAME.log
echo >> $BUDIR$NAME.log
rsync --archive -L --delete $SRCDIR $BUDIR$NAME.0/ 2>&1 | tee -a $BUDIR$NAME.log
You would create one of these scripts per directory you want to backup. BUDIR
is the directory where you want to backup to be stored. This will probably be the same for every script if you have only one backup drive/server. SRCDIR
is the directory you want to backup. NAME
is the name you want the backup to be stored under. It can be a sub-directory if you want, so you can sort the backups into directories on the target.