lpi1:hardlink
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*
Wo befinden sich auf meinem System Hardlinks?
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. 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
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
1)
Das Beispiel hier ist nicht sehr praxisnah. Eine bessere Variante beschreibe ich unter rsync
2)
cp –reflink: Reflink-Kopien benötigen ä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
lpi1/hardlink.txt · Zuletzt geändert: 2025/08/19 13:09 von 127.0.0.1
