HowTo: Find all hardlinks to one file

  • ls -l zeigt in der zweiten Spalte die Anzahl der Hardlinks an.
  • ls -i zeigt die Indexnummer der Datei an.
  • find / -inum INDEXNUMMER findet alle Dateien mit der gleichen Indexnummer.

Beispiel:

user@host:~$ cd /tmp/
user@host:/tmp$ mkdir {foo,bar}
user@host:/tmp$ touch foo/file 
user@host:/tmp$ ln foo/file foo/file_link1
user@host:/tmp$ ln foo/file bar/file_link2
user@host:/tmp$ ls -l foo/file
-rw-r--r-- 3 user user 0 Jul 10 11:31 foo/file
user@host:/tmp$ ls -i foo/file
44302500 foo/file
user@host:/tmp$ find /tmp/ -inum 44302500
/tmp/bar/file_link2
/tmp/foo/file
/tmp/foo/file_link1
user@host:/tmp$

Puppet: alte Reports automatisch aufraeumen

Puppet legt in dem Verzeichnis /var/lib/puppet/reports/ fuer jeden node fuer jede Abfrage eine .yaml Datei als Report ab. Diese werden nicht automatisch aufgeraeumt. Damit die Festplatte nicht voll laeuft ergibt es Sinn dieses automatisch zu tun. Am einfachsten geht das mit einem kleinen Skript das per Cron aufgerufen wird. In meinem Fall die folgende Datei:

  • /etc/cron.d/puppet-cleanreports
PATH=/usr/bin:/bin:/usr/sbin/
#
# Cron job to clean puppet reports older than 31 days
#
 
 
0 23  * * *     root    find /var/lib/puppet/reports/ -type f -name "*.yaml" -mtime +31 -exec rm -f {} ;

Bash: find broken symlinks in file system

Befehl:

find /path/to/folder -type l | (while read broken; do test -e "$broken" || ls -ld "$broken"; done)

Uebersetzung:
Suche mir alle Dateien vom Typ „Link“ im Verzeichnis /path/to/folder inkl. allen Unterverzeichnissen und gib mir den kompletten Pfad zu den Links aus. Die Ausgabe wird in eine WHILE-Schleife gepipt die diese zeilenweise einliest. Fuer jede Zeile wird einmal getestet ob die Datei existiert. Wenn die Datei existiert isses dufte, wenn nicht gib den defekten Link aus.