Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung Nächste Überarbeitung Beide Seiten, nächste Überarbeitung | ||
admin_grundlagen:hardlink [2016/01/14 09:52] ingo_wichmann [einfache Beispiele] |
admin_grundlagen:hardlink [2022/07/19 11:42] 127.0.0.1 Externe Bearbeitung |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Hardlinks ====== | + | ====== Links ====== |
+ | |||
+ | Zur Unterscheidung zu [[symbolische Links|symbolischen Links]] werden die gewöhnlichen Links manchmal auch Hard Links genannt. | ||
===== einfache Beispiele ===== | ===== einfache Beispiele ===== | ||
cp /etc/passwd . | cp /etc/passwd . | ||
ls -li passwd* | ls -li passwd* | ||
ln passwd passwd-hardlink | ln passwd passwd-hardlink | ||
+ | ls -li passwd* | ||
- | editieren, umbenenen, verschieben, löschen (Ursprungdatei), ... ausprobieren | + | editieren, umbenennen, verschieben, löschen (Ursprungdatei), ... ausprobieren |
ls -li passwd* | ls -li passwd* | ||
Zeile 11: | Zeile 15: | ||
ls -li passwd* | 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 ===== | ===== Datei umbenennen ohne Ausfallzeit ===== | ||
cd /etc/postfix/maps | cd /etc/postfix/maps | ||
- | ln virtual_alias_maps.txt virtual_mailbox_maps.txt | + | ln virtual_alias_maps.txt.db virtual_mailbox_maps.txt.db |
- | postmap virtual_mailbox_maps.txt | + | |
postconf -e 'virtual_mailbox_maps = hash:/etc/postfix/maps/virtual_mailbox_maps.txt' | postconf -e 'virtual_mailbox_maps = hash:/etc/postfix/maps/virtual_mailbox_maps.txt' | ||
- | rm virtual_alias_maps.txt virtual_alias_maps.txt.db | + | rm virtual_alias_maps.txt.db |
===== Backup ===== | ===== Backup ===== | ||
(( Das Beispiel hier ist nicht sehr praxisnah. Eine bessere Variante beschreibe ich unter [[admin_grundlagen:rsync|rsync]] )) | (( Das Beispiel hier ist nicht sehr praxisnah. Eine bessere Variante beschreibe ich unter [[admin_grundlagen:rsync|rsync]] )) | ||
=== 1. Backup === | === 1. Backup === | ||
- | cp -a /usr/share/doc sonntag | + | mkdir /tmp/backup |
+ | cp -a ~/ /tmp/backup/sonntag | ||
+ | ---- | ||
+ | |||
+ | Änderungen im Arbeitsverzeichnis (z.B. anlegen, löschen und bearbeiten von Dateien) | ||
=== 2. Backup === | === 2. Backup === | ||
- | cp -al sonntag montag | + | cp -al /tmp/backup/sonntag /tmp/backup/montag |
- | rsync -a --del /usr/share/doc/ montag | + | rsync -a --del ~/ /tmp/backup/montag |
+ | |||
+ | ---- | ||
+ | Änderungen im Arbeitsverzeichnis (z.B. anlegen, löschen und bearbeiten von Dateien) | ||
=== 3. Backup === | === 3. Backup === | ||
- | cp -a montag dienstag | + | cp -al /tmp/backup/montag /tmp/backup/dienstag |
- | rsync -a --del /usr/share/doc/ dienstag | + | rsync -a --del ~/ /tmp/backup/dienstag |
- | ... | + | … |
+ | | ||
===== Verzeichnisse zusammenführen ===== | ===== Verzeichnisse zusammenführen ===== | ||
<file> | <file> | ||
Zeile 53: | Zeile 67: | ||
`-- file9.txt | `-- file9.txt | ||
</file> | </file> | ||
+ | (( | ||
+ | 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 | ||
+ | )) | ||
mkdir merge | mkdir merge | ||
cp -rl dir1/. dir2/. merge | cp -rl dir1/. dir2/. merge |