User Tools

Site Tools


perso:dump:mess

Just a big mess of commands and tricks

Time Machine like backup

Source information: Time Machine for every UNIX out there and the rsync(1) man page.

I intend to have a powerful back-up solution for my Linux computers and also my work laptop (Windows). The backup will be done on my Synology NAS using rsync. This is here just a few notes in order to put this in place.

I still have to test that one. There is no guarantee that this is working, backing up something or preserving your data. Use at your own risk!

rsync -zaxPAX --checksum --hard-links \
  --rsync-path="rsync --fake-user" --sparse \
  --delete-excluded \
  --exclude-from=$HOME/.rsync/exclude \
  --link-dest=../current \
  $HOME user@backupserver:Backups/incomplete_back-$date

A big mess

Things I want to store (like a brain extension), but that fits in no particular place…

Hardware information on Linux

Albeit not as graphical as the Windows counterpart CPU-Z, the following command is rich in information about your hardware:

$ sudo dmidecode -d /dev/mem | less

Bash tips and tricks

If you want to have a simple off-the-record configuration so that you can type in commands that are not stored in the history, you can use this trick:

$ export HISTIGNORE="[ \t]*"

Then any commands starting with a space will be off the record.

Setting your system to have weeks starting on Mondays

If you are using the default American English language in Ubuntu, then many of the applications in Gnome are also configured for American style date/calendar with weeks starting on Sundays. To change that, you can do the following:

First back-up the American English locale:

$ cp /usr/share/i18n/locales/en_US $HOME/

Then edit the en_US file and apply the changes explain below

$ sudo vi /usr/share/i18n/locales/en_US

Look for the LC_TIME section, it looks like this on Ubuntu 10.04.1:

[...]
END LC_NUMERIC

LC_TIME
abday   "<U0053><U0075><U006E>";"<U004D><U006F><U006E>";/
[...]

week    7;19971130;7
first_weekday   1
first_workday   2

Change the line from “first_weekday 1” to “first_weekday 2”. And save the file.

Now you need to apply the changes:

$ sudo locale-gen

To see the change, you can logout and login. The Gnome clock applet is now displaying Monday as the first day of the week.

WordPress tips and tricks

If you do not like that when you upload transparent PNG to WordPress admin area and have a black background where you had a transparent area in the generated thumbnail, you might want to look at this:

in the file wp-admin/admin-functions.php, after line 2294 in release 2.2.1, add the following lines (marqued with '+++'):

2294			$thumbnail = imagecreatetruecolor( $image_new_width, $image_new_height);
2295 +++		if ( $type[2] == 3 AND function_exists( 'imagesavealpha' ) ) {
2296 +++			imagesavealpha( $thumbnail, TRUE );
2297 +++			$trans_colour = imagecolorallocatealpha($thumbnail, 0, 0, 0, 127);
2298 +++			imagefill($thumbnail, 0, 0, $trans_colour);
2299 +++		}
2300			@ imagecopyresampled( $thumbnail, $image, 0, 0, 0, 0, $image_new_width, $image_new_height, $image_attr[0], $image_attr[1] );

Changing the keyboard in Ubuntu console mode

You just have to update the files /etc/default/keyboard (when loging in) and /etc/default/console-setup (during boot)

For American English QWERTY, choose:

XKBMODEL="pc104"
XKBLAYOUT="us"

For French (AZERTY) or German (QWERTZ):

XKBMODEL="pc105"
XKBLAYOUT="fr"
XKBMODEL="pc105"
XKBLAYOUT="de"

Cryptkeeper on Ubuntu 12.04

Cryptkeeper does not launch on Ubuntu 12.04. To make it work, just execute the following command:

gsettings set com.canonical.Unity.Panel systray-whitelist "['JavaEmbeddedFrame', 'Wine', 'Update-notifier', 'cryptkeeper']"

Mirroring a folder over a network (rsync/SSH)

This assume that ssh is correctly set-up and that the destination folder exist.

rsync -acAHX --progress --del /var/backup/ myNAS.lan:/var/backup/$(hostname)

Note: the –del option will remove the locally deleted files on the remote end. In my case, this is a must. But in most cases you should remove that option!

Font / Police

font-family:Georgia,Lucida Bright,Times New Roman,serif;

New proposed CSS: new CSS root, new CSS wiki

Better font in Opera on Linux

Apply to Opera 9.64 and previous versions.

Open this link in Opera: opera:config

Under User Prefs, disable (uncheck) the preference about Enable Core X Font and click the Save button (at the end of the 'User Prefs' section).

See also

Allowing secure download via HTTPS with wget on Ubuntu Server Edition

Using Ubuntu Server Edition, no “root certificates” are installed thus downloading a page like https://wiki.ubuntu.com/Huygens is not allowed with wget. Instead of taking the unsafe path to ignore the warning that wget emits, I took the other way which includes installing root certificates that Ubuntu trust (and I trust them… one of my weak points ;-)). So you basically juts have to execute:

$ sudo apt-get install ca-certificates

Viewing films on Linux

In Europe, numbers cannot be copyrighted nor can someone try to stop spreading them. So here is the lucky number that might help you watch films on Linux:
09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0

In case, you do not understand it ;-) if you have bought an HD-DVD and want to watch it on your computer, you will need this number! It might even give you some more freedom… Check for more information here: Spread this number

Miscellaneous

Repository for Red Hat EL 5.3 or CentOS 5.3

[atrpms]
name=EL $releasever - $basearch - ATrpms
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
gpgcheck=1
enabled=1
exclude=*kmdl*i586*
includepkgs=*nvidia-graphics*

Add a new Certificate Authority in the list of trusted ones on Synology DSM 6.1

In order to add a new root certificate (e.g. for an internal CA), you need to do the following assuming your root public certificate is in the file my-ca-root.pem. The file suffixes .pem or .crt are interchangeable, but in our case make sure to use the right suffix depending on the location as per our example:

$ sudo cp my-ca-root.pem /usr/share/ca-certificates/mozilla/my-ca-root-pem
$ sudo chmod 0644 /usr/share/ca-certificates/mozilla/my-ca-root.prm
$ sudo ln -s /usr/share/ca-certificates/mozilla/my-ca-root-pem /etc/ssl/certs/my-ca-root.crt
$ cd /etc/ssl/certs
$ sudo ln -s my-ca-root.crt $(sudo openssl x509 -hash -noout -in my-ca-root.crt).0
$ sudo cat my-ca-root.crt | sudo tee -a ca-certificates.crt

Source: https://forum.synology.com/enu/viewtopic.php?t=93223

However the source was adapted, but it works on DSM 6.1.

Firefox settings optimisation (faster start-up)

Since Firefox 3, many settings (bookmarks, history, etc.) are store into small database files (the ones with the sqlite extension). But after a long utilisation of Firefox, these files get big (and thus slowdown their reading) and their inner data gets sort of fragmented. Now, there is a rather not too difficult way of optimising those files. All you need is sqlite3 program and a small script to do the job.

Update 2016-09: I would have to verify to be sure, but I think Firefox must be doing those sqlite databse maintenance from time to time (or sqlite is automatically doing now) because since a few years now this trick does not bring any visible changes.

Optimisation for Mac OS X

The following script is for Mac OS X users and is based on a script for Linux that I have found in the Ubuntu Forums - Firefox speedup(...). Linux users should refer to the Ubuntu Forums link or to the next chapter.

For Mac users, please copy and paste the following code into a text editor (like TextEdit) and save it somewhere you can find it back easily, like at the root of your home directory. Now open the Terminal application (you can find it under Applications/Utilities), go to the directory where you have stored the file (if it was your Home, then you are already at the right place) and execute it: bash ./<filename> replace <filename> by the name of the file you used to save it.

#!/bin/bash

# Constants
mozillaHome="${HOME}/Library/Application Support/"
#uncomment next line if you have an old version of Mac OS X and Firefox
#mozillaHome="${HOME}/Library/Mozilla"
sqlite=sqlite3

# Check that the environment is ready to perform the optimisation
which ${sqlite} >/dev/null 2>&1
if [ $? -ne 0 ]
then
	echo "Error: ${sqlite} was not found on this system."
	echo "       Check your PATH, or install ${sqlite}, try: sudo apt-get install ${sqlite}"
	exit 1
fi

echo "Info: starts: $(date)"

proc=$(ps ux | grep -v $0 | egrep -i 'firefox|fennec|seamonkey' | grep -v grep | wc -l)
if [ ${proc} -gt 0 ]
then
        echo "Error: Firefox is running. Please shutdown firefox before running this script"
        exit 1
fi

# Start the optimisation

# Check where the Firefox (Fenec & SeaMonkey) profiles are
cd "${mozillaHome}"
ffProfiles="$(find . -mindepth 1 -maxdepth 1 -type d ! -name eclipse -a ! -name extensions 2>/dev/null)"
for ffProf in ${ffProfiles}
do
    if [ -f "${ffProf}/profiles.ini" ]
    then

        for profileDir in $(cat "${ffProf}/profiles.ini" | grep Path= | sed -e 's/Path=//')
        do
            ffProfDir="${ffProf}/${profileDir}"
			if [ -d "${ffProfDir}" ]
			then
				echo "Info: Processing directory ${ffProfDir}"
				echo "    optimising local files..."

				i=1
				cd "${ffProfDir}"
				for sqlFile in $(find . -type f -name '*.sqlite' -print)
				do
					echo -n "     ${i}. processing file ${sqlFile} "
					${sqlite} ${sqlFile} "VACUUM;" 2>/dev/null
					if [ $? -ne 0 ]
					then
						echo -e " failed\nWarning: file ${sqlFile} could not be optimised."
					else
						echo " done."
					fi
					i=$((i+1))
				done
				cd -

				echo "    optimisation done."
			else
				echo "Warning: profile ${ffProfDir} not found!"
			fi
        done

    fi
done

echo "Info: optimization done"
exit 0

For the moment, this is just a dump! So it might be unclear to you. I will try to polish this chapter in a dedicated article later, perhaps even use Mac OS Automator. But that will have to wait.

Optimisation for Linux

The following script is for Linux users and is based on a script that I have found in the Ubuntu Forums - Firefox speedup(...). It was slightly enhanced to look into more than one folder (if you have multiple installation of Firefox, like 3.0 and 3.5 in Ubuntu 9.04). You will need to install sqlite3 before.

Please copy and paste the following code into a text editor (like gedit or nano) and save it somewhere you can find it back easily, like at the root of your home directory. Now open the Terminal application (you can find it under Applications/Accessories), go to the directory where you have stored the file (if it was your Home, then you are already at the right place) and execute it: bash ./<filename> replace <filename> by the name of the file you used to save it.

#!/bin/bash

# Constants
mozillaHome=${HOME}/.mozilla/
sqlite=sqlite3

# Check that the environment is ready to perform the optimisation
which ${sqlite} >/dev/null 2>&1
if [ $? -ne 0 ]
then
	echo "Error: ${sqlite} was not found on this system."
	echo "       Check your PATH, or install ${sqlite}, try: sudo apt-get install ${sqlite}"
	exit 1
fi

proc=$(ps ux | grep -v $0 | egrep -i 'firefox|fennec|seamonkey' | grep -v grep | wc -l)
if [ ${proc} -gt 0 ]
then
    echo "Error: Firefox is running. Please shutdown firefox before running this script"
    exit 1
fi

# Start the optimisation

# Check where the Firefox (Fennec & SeaMonkey) profiles are
ffProfiles=$(find ${mozillaHome} -mindepth 1 -maxdepth 1 -type d ! -name eclipse -a ! -name extensions 2>/dev/null)
for ffProf in ${ffProfiles}
do
    if [ -f "${ffProf}/profiles.ini" ]
    then

        for profileDir in $(cat "${ffProf}/profiles.ini" | grep Path= | sed -e 's/Path=//')
        do
            ffProfDir="${ffProf}/${profileDir}"
			if [ -d "${ffProfDir}" ]
			then
				echo "Info: Processing directory ${ffProfDir}"
				echo "    optimising local files..."

				i=1
				cd "${ffProfDir}"
				for sqlFile in $(find . -type f -name '*.sqlite' -print)
				do
					echo -n "     ${i}. processing file ${sqlFile} "
					${sqlite} ${sqlFile} "VACUUM;" 2>/dev/null
					if [ $? -ne 0 ]
					then
						echo -e " failed\nWarning: file ${sqlFile} could not be optimised."
					else
						echo " done."
					fi
					i=$((i+1))
				done

				echo "    optimisation done."
			else
				echo "Warning: profile ${ffProfDir} not found!"
			fi
        done

    else
        echo "Warning: Firefox profile not found: ${ffProf}/profiles.ini"
    fi
done

echo "Info: optimization done"
exit 0

References

Here are a few pointers I have been using and some other great ideas:

Pointers in C

Pointer Allocation in Subfunction

perso/dump/mess.txt · Last modified: 2017/03/19 23:13 by Jean-Christophe Berthon