Inhaltsverzeichnis

Links

Zur Unterscheidung zu symbolischen Links werden die gewöhnlichen Links manchmal auch Hard Links genannt.

einfache Beispiele

cp /etc/passwd .
ls -li passwd*
ln passwd passwd-hardlink
ls -li passwd*

umbenennen, verschieben, editieren, löschen (Ursprungdatei), … ausprobieren

ls -li passwd*
cp -l passwd passwd-hardlink-cp
ls -li passwd*
find / -xdev -type f -links +1 -ls
find / -xdev -type f -links +1 -printf '%h\n' | uniq -c

Datei umbenennen ohne Ausfallzeit

cd /etc/postfix/maps
ln virtual_alias_maps.txt.db virtual_mailbox_maps.txt.db
postconf -e 'virtual_mailbox_maps = hash:/etc/postfix/maps/virtual_mailbox_maps.txt'
rm virtual_alias_maps.txt.db

Backup

1) 2)

1. Backup

mkdir /tmp/backup
cp -a ~/ /tmp/backup/sonntag

Änderungen im Arbeitsverzeichnis (z.B. anlegen, löschen und bearbeiten von Dateien)

2. Backup

cp -al /tmp/backup/sonntag /tmp/backup/montag
rsync -a --del ~/ /tmp/backup/montag

Änderungen im Arbeitsverzeichnis (z.B. anlegen, löschen und bearbeiten von Dateien)

3. Backup

cp -al /tmp/backup/montag /tmp/backup/dienstag
rsync -a --del ~/ /tmp/backup/dienstag

Verzeichnisse zusammenführen

 |-- dir1
 |   |-- a
 |   |   |-- file1.txt
 |   |   `-- file2.txt
 |   |-- b
 |   |   `-- file3.txt
 |   `-- c
 |       `-- file4.txt
 `-- dir2
  |-- a
  |   |-- file5.txt
  |   `-- file6.txt
  |-- b
  |   |-- file7.txt
  |   `-- file8.txt
  `-- c
   |-- file10.txt
   `-- file9.txt

3)

mkdir merge
cp -rl dir1/. dir2/. merge
rm -r dir*
tree merge 
merge
├── a
│   ├── file1.txt
│   ├── file2.txt
│   ├── file5.txt
│   └── file6.txt
├── b
│   ├── file3.txt
│   ├── file7.txt
│   └── file8.txt
└── c
    ├── file10.txt
    ├── file4.txt
    └── file9.txt

4)

1)
Das Beispiel hier ist nicht sehr praxisnah. Eine bessere Variante beschreibe ich unter rsync
2)
Todo: das selbe mit cp –reflink testen. Reflink-Kopien benötien ähnlich wenig Platz wie Hardlinks, haben aber ihre eignen Inodes inkl. Berechtigungen, Eigentümer usw. Reflinks benötigen BTRFS, ZFS oder eine aktuelle Version von XFS (xfsprogs 5.1 und Linux 5.4)
3)
mkdir -p {dir1,dir2}/{a,b,c}
touch dir1/a/file1.txt
touch dir1/a/file2.txt
touch dir1/b/file3.txt
touch dir1/c/file4.txt
touch dir2/a/file5.txt
touch dir2/a/file6.txt
touch dir2/b/file7.txt
touch dir2/b/file8.txt
touch dir2/c/file9.txt
touch dir2/c/file10.txt
4)
alternativ mit rsync:
rsync -ax --link-dest=/tmp/dir1/ dir1/ merged/
rsync -ax --link-dest=/tmp/dir2/ dir2/ merged/
Achtung: link-dest muss absolut angegeben werden