Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
admin_grundlagen:hardlink [2013/06/25 10:34] ingo_wichmann [Verzeichnisse zusammenführen] |
admin_grundlagen:hardlink [2023/12/12 13:07] (aktuell) |
||
---|---|---|---|
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 ===== | ||
+ | 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 ===== | ===== Backup ===== | ||
- | todo | + | (( Das Beispiel hier ist nicht sehr praxisnah. Eine bessere Variante beschreibe ich unter [[admin_grundlagen:rsync|rsync]] )) |
+ | (( 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) )) | ||
+ | === 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 ===== | ===== Verzeichnisse zusammenführen ===== | ||
<file> | <file> | ||
Zeile 23: | Zeile 68: | ||
`-- 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 | ||
Zeile 47: | Zeile 104: | ||
(( alternativ mit rsync: | (( alternativ mit rsync: | ||
- | rsync -aplx --link-dest=/tmp/dir1/ dir1/ merged/ | + | rsync -ax --link-dest=/tmp/dir1/ dir1/ merged/ |
- | rsync -aplx --link-dest=/tmp/dir2/ dir2/ merged/ | + | rsync -ax --link-dest=/tmp/dir2/ dir2/ merged/ |
Achtung: link-dest muss absolut angegeben werden | Achtung: link-dest muss absolut angegeben werden | ||
)) | )) |