Bash: Quick backup
Often I will need to take a quick backup of a directory or file before I make some changes. Sometimes I will need multiple backups, so I include the date/time in the output filename. After doing it manually enough I wrote a quick bash function that will handle creating the backup file, and naming it appropriately. Put these in your ~/.bashrc
or copy and paste to your terminal
# Quick tar/file commands
qtar() { C=$(basename $1); O=/var/tmp/quicktar-$C-$(date +%F_%H-%M).tar.gz; tar -cvpaf $O $*; echo; ls -sh $O; }
qfb() { C=$(basename $1); O=/var/tmp/quickfile-$C-$(date +%F_%H-%M).gz; gzip $1 -c > $O; ls -sh $O; }
Then to run it simply invoke it like this:
# Multiple files or directories
qtar file1.txt file2.txt
qtar /path/to/dir
qtar files/
# One file
qfb /etc/dhcp/dhcpd.conf
qfb /etc/php.ini
This will make an appropriately named file in /var/tmp/
with the files/dirs you listed tarred and gzipped up. It's not perfect, there are some corner cases that will break it, but I needed something super simple to drop on remote servers for quicky backups.
Update: Less common, but I also whipped up a zip option.
qzip() { C=$(basename $1); O=/var/tmp/quickzip-$C-$(date +%F_%H-%M).zip; zip -9vr $O $*; ls -sh $O; }
Update: I learned that Vim has built in diff support, even inside of .gz
files. This means you can do vim -d /etc/orig.txt /var/tmp/quickfile-orig.txt-2022-08-03_08-13.gz
and it will show you the diff.