Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


lpi1:hardlink

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

lpi1:hardlink [2019/10/07 19:24]
lpi1:hardlink [2023/12/12 13:07] (aktuell)
Zeile 1: Zeile 1:
 +====== 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 =====
 +(( 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 =====
 +<​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/​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
 +  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
 +))