Unix tools introduced. Today: cat

cat is a well known command to concatenate the content of multiple files.  Example: cat file1 file2 file3

But there are other use cases. cat offers a nice way to print out multi line strings.  It is even possible to include variables into the string, which feels a little bit like using a templating language.


cat <<EOF
please be aware. This system will be under maintenance soon.
Have a good day.

For more info on the <<EOF visit this SO-Thread



Public Money, Public Code


Open Source Produkte werden gerne überall genutzt. Öffentliche Institutionen könnten sich aber noch viel stärker an der Entwicklung von quelloffenen und frei verwendbaren Softwareprodukten beteiligen und damit zum allgemeinen Wohl beitragen.  Der rot-grüne Koalitionsvertrag von München weist interessante Punkte zu diesem Thema  auf.

Leaving Amazon


Amazon is exceptionally well-managed and has demonstrated great skill at spotting opportunities and building repeatable processes for exploiting them. It has a corresponding lack of vision about the human costs of the relentless growth and accumulation of wealth and power. If we don’t like certain things Amazon is doing, we need to put legal guardrails in place to stop those things. We don’t need to invent anything new; a combination of antitrust and living-wage and worker-empowerment legislation, rigorously enforced, offers a clear path forward.

Don’t say it can’t be done, because France is doing it.

Unix tools introduced. Today: rsync

rsync is a very cool tool that can be used to copy files between hosts or between directories on the same host. Like the term ‘sync’ suggests the copy process can be controlled into great detail to modulate rsync’s behavior.  Take a look at the available options under: https://linux.die.net/man/1/rsync

This is my list of cool options.  I start with the most basic usage. The following command can be used to copy, and later on sync two directories.

rsync -avn /source/dir /target/dir  

The command ‘archives’ file attributes (-a) and displays some status info (-v).

In the given form, the command only does a dry-run (-n). To execute the command remove the -n.

The command uses the short form of --archive (-a) which translates to (-rlptgoD).

  • -r – recursive copy
  • -l – copy symlinks as symlinks
  • -p – set target permissions to be the same as the source
  • -t – set target mtime to be the same as the source. Use this to support fast incremental updates based on mtime.
  • -g – set target group to be the same as the source
  • -o – set target owner to be the same as the source
  • -D – if remote user is superuser this recreates devices and other special files.

More cool options


--remove-source-files This will remove copied files from source.


--update This forces rsync to skip any files which exist on the destination and have a modified time that is newer than the source file.


--delete Delete files on target that do not exist in source tree.


--backup Make a backup of modified or removed files on target.

--backup-dir=date +%Y.%m.%d Specify a backup dir on target.

What to copy?

--min-size=1 Do not copy empty files. This can be particularly interesting if you have corrupted files in the source.

--max-size=100K Copy only small files. Can be used to handle small and large files differently.

--existing Only override files that already exist on the target. Do not create new files on target.

--ignore-existing Only copy files that do not exist on target.

--exclude-from Define excludes in a file.

Scheduling, Bandwidth and Performance

--time-limit Ends rsync after a certain time limit.

--stop-at=y-m-dTh:m Ends rsync at a specific time.

--partial Allows partial copies in case of interruptions.

--bwlimit=100 Limits bandwidth Specify KBytes/second. Good option if transfer of large files is required.


  • -h output numbers in a human-readable format.
  • --progress display progress.
  • -i log change info.
  • --log-file= define a log file.
  • --quiet no output.
  •  -v Output status info. You can add more ‘v’.
  • Forgot to log any progress info? Use the following command to see what rsync is about to do.
     ls -l /proc/$(pidof rsync)/fd/*


Corona App

Wie können sich Handydaten nutzen lassen, um gezielt Infektionsketten zu erkennen?

1. Der Big Data Approach –  Der Staat sammelt  alle Handydaten ein und markiert bei Bedarf einzelne Punkte als Verdachtsfälle, bzw. als krank und gesund. Ein Alptraum? Aber möglicherweise immer noch besser, als für Jahre mit seinen Liebsten in der Stadtwohnung fest zu sitzen.

2. Der Small Data Approach – Die Bürger protokollieren selbst Treffen mit einer App. Im Falle einer Infektion informiert man per Knopfdruck relevante Kontaktpersonen. Der Vorteil gegenüber Variante 1, es findet keine Überwachung statt. Erst im Bedarfsfall werden Daten geteilt. Die Bürger wirken dabei aktiv mit.

Dieses Verfahen würde sogar analog funktionieren, aber mit digitaler Unterstützung könnte die Benachrichtigung und Erfassung genauer erfolgen.

Wie könnte sich Variante 2 umsetzen lassen? Das Protokollieren von Treffen erscheint auf den ersten Blick recht mühsam. Doch mit etwas Phantasie lassen sich hier sicherliche technische Lösungen finden, die einfach zu nutzen sind.