Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
admin_grundlagen:hardlink [2017/01/16 13:55] art [Platzsparende Backups] |
admin_grundlagen:hardlink [2023/12/12 13:07] |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Hardlinks ====== | ||
- | ===== einfache Beispiele ===== | ||
- | cp /etc/passwd . | ||
- | ls -li passwd* | ||
- | ln passwd passwd-hardlink | ||
- | ls -li passwd* | ||
- | editieren, umbenennen, verschieben, löschen (Ursprungdatei), ... ausprobieren | ||
- | |||
- | ls -li passwd* | ||
- | cp -l passwd passwd-hardlink-cp | ||
- | ls -li passwd* | ||
- | |||
- | ===== 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 ===== | ||
- | (( Das Beispiel hier ist nicht sehr praxisnah. Eine bessere Variante beschreibe ich unter [[admin_grundlagen:rsync|rsync]] )) | ||
- | === 1. Backup === | ||
- | cp -a /usr/share/doc sonntag | ||
- | |||
- | === 2. Backup === | ||
- | cp -al sonntag montag | ||
- | rsync -a --del /usr/share/doc/ montag | ||
- | |||
- | === 3. Backup === | ||
- | cp -al montag dienstag | ||
- | rsync -a --del /usr/share/doc/ dienstag | ||
- | |||
- | ... | ||
- | |||
- | ===== Platzsparende Backups ===== | ||
- | mkdir /var/tmp/backup | ||
- | cp -a ~ /var/tmp/backup/sonntag | ||
- | | ||
- | echo geheim > passwd # Veränderungen zur Sichtbarkeit | ||
- | ls | ||
- | rm oh-oh.jpg # Veränderungen zur Sichtbarkeit | ||
- | | ||
- | cp -al /var/tmp/backup/sonntag /var/tmp/backup/montag #Handlinks werden angelegt, keine Kopien | ||
- | rsync -av --del ~/ /var/tmp/backup/montag #Nur änderungen werden kopiert | ||
- | | ||
- | ===== Verzeichnisse zusammenführen ===== | ||
- | <file> | ||
- | |-- 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 | ||
- | </file> | ||
- | (( | ||
- | mkdir -p {dir1,dir2}/{a,b,c} | ||
- | touch dir1/a/file1.txt | ||
- | touch dir1/a/file3.txt | ||
- | touch dir1/b/file3.txt | ||
- | touch dir1/b/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 | ||
- | )) | ||
- | mkdir merge | ||
- | cp -rl dir1/. dir2/. merge | ||
- | rm -r dir* | ||
- | tree merge | ||
- | |||
- | <file> | ||
- | merge | ||
- | ├── a | ||
- | │ ├── file1.txt | ||
- | │ ├── file2.txt | ||
- | │ ├── file5.txt | ||
- | │ └── file6.txt | ||
- | ├── b | ||
- | │ ├── file3.txt | ||
- | │ ├── file7.txt | ||
- | │ └── file8.txt | ||
- | └── c | ||
- | ├── file10.txt | ||
- | ├── file4.txt | ||
- | └── file9.txt | ||
- | </file> | ||
- | |||
- | (( 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 | ||
- | )) |