Ubuntu One Liners

=Copy hard drive contents=

sudo rsync -avxHAXW --progress --preallocate /media/xxxx/source_drive_mounted_name/ /media/xxxx/target_drive_mounted_name/


 * Note the target filesystem must support preallocate (ext4 etc), if this isn't used you will end up with a horribly fragged filesystem!

Check sizes are same afterwards

 * Remember du shows usage not filesize so trying to check with that afterwards wont work.

ls -Rl | awk '{ TOTAL += $5} END { print TOTAL/1024/1024 }'

Remove old kernels
For example to remove 3.8.0-15 to 3.8.0-32 and leave 3.8.0-33 sudo apt-get purge linux-{headers,image,image-extra}-3.8.0-[1-3][1-2].*

ddrescue (gddrescue)
Assuming rescuing drive /dev/sdc

logfile will be local to where you run command from (without giving a path), needed in case anything goes wrong to be able to resume, among other uses.

sudo add-apt-repository universe sudo apt-get update sudo apt-get install gddrescue sudo ddrescue /dev/sdc /media/somewhere/youroutputfile.raw logfile sudo ddrescue -f /dev/sdc /dev/sdd logfile
 * 1) enable universe repository first
 * 1) rescue to a raw file
 * 1) direct to another disk, must be >= in size

multi-core tar gzip
This would run all as user or all as root if via sudo

tar c --use-compress-program=pigz -f /output/stuff.tar.gz /source/folders

If need root for source access but current user for destination (i.e. backup a drive contents to a network shared via gvfs).

[i.e. This runs tar as root to read the source but write permissions is via user via pigz]

sudo tar cf - /source/folders | pigz > /output/stuff.tar.gz

tar without full pathnames
Say you have lots of files in two folders...this will stick them into one archive with no paths. Bash firstly expands the dir listing from ls which tar takes as input. tar cf /tmp/output.tar -C /tmp/x/y/z $(ls /tmp/x/y/z) -C /tmp/a/b/c $(ls /tmp/a/b/c)

tar with xz and large dictionary trick
Squishing down some almost identical files by using a dictionary somewhat more than double the size of one, which will give archive the size fractionally larger than just one. tar cf - -C images $(ls images) -C ${additions} readme.txt | xz -0 --lzma2=dict=64MiB > images/DGND3x00_${build}.tar.xz

=disconnect hdd / spin a drive down=

Sping down primary drive /dev/sda

echo 1 | sudo tee /sys/block/sda/device/delete

=email syslog to yourself as attachment=

Using sendmail and base64 applets from busybox....