Es gibt zwei Arten von Links zu Dateien unter Linux: einen Hardlink und einen Softlink. Heute werde ich Ihnen diese beiden Links und deren Verwendung vorstellen.
Hardlink
Schauen wir uns zunächst die Hardlinks anhand variabler Referenzen in PHP an.
$a = 100; $b = &$a;
$a kann als Datei angesehen werden, und $b kann als fester Link zur $a-Datei angesehen werden. Der aktuelle Effekt besteht darin, dass sich die Änderung von $a oder $b auf die andere Partei auswirkt.
Wenn Sie jetzt eine der Dateien löschen, ist die andere dann noch vorhanden?
unset($b);
Auch wenn die $b-Datei gelöscht wird, ist die $a-Datei immer noch vorhanden.
Als nächstes wollen wir sehen, ob es mit dem oben Gesagten übereinstimmt. Der Befehl zum Erstellen eines Hardlinks lautet wie folgt:
ln 源文件 链接文件
Derzeit verfügt das System über eine 1.php-Datei. Jetzt erstellen wir einen Hardlink dafür.
# ln 1.php 2.php # cat 1.phpNach dem Login kopieren
Jetzt ändern wir die 2.php-Datei, um zu sehen, ob die 1.php-Datei ebenfalls geändert wird.
# echo -e '\n?>' >> 2.php # cat 1.php
Sie können sehen, dass bei einer Änderung von 2.php auch die 1.php-Datei geändert wird. Jetzt löschen wir die 2.php-Datei und prüfen, ob die 1.php-Datei noch vorhanden ist.
# rm -f 2.php # ll 1.php -rw-r--r-- 1 root root 52 Jun 20 08:05 1.php
Sie können sehen, dass die 1.php-Datei auch dann noch vorhanden ist, wenn 2.php gelöscht wird.
Die Funktion von Hardlinks wird oben vorgestellt. Hier sind die Einschränkungen für die Verwendung von Hardlinks:
Verzeichnisse können nicht verlinkt werden
Kann nicht über Dateisysteme hinweg verknüpft werden
Aufgrund der Einschränkungen der beiden oben genannten Punkte gibt es im täglichen Leben nur sehr wenige Möglichkeiten, Hardlinks zu verwenden. Hier ist eine andere Art von Verknüpfung. Softlink, für den es wie oben erwähnt keine Einschränkungen gibt, daher verwende ich ihn häufig! .
Softlink
Im Allgemeinen werden Softlinks mit Desktop-Verknüpfungen in Windows-Systemen verglichen. Durch das Erstellen von Softlinks können Sie einen Befehl problemlos ausführen, ohne den Verzeichnisspeicherort suchen zu müssen der Datei. Außerdem wird die Softlink-Datei gelöscht, die Quelldatei ist jedoch weiterhin vorhanden. Wenn jedoch die Quelldatei gelöscht wird, hat die verknüpfte Datei keine Auswirkungen.
Softlinks werden in zwei Typen unterteilt: Dateien und Verzeichnisse. Die Funktionen dieser beiden Links werden im Folgenden vorgestellt.
Softlinks zu Dateien erstellen
Haben Sie sich jemals gefragt, warum Sie nach der Installation von MySQL keine absoluten Pfade verwenden müssen? ausführen. Hier kommen Softlinks zum Einsatz.
# which mysql /usr/bin/mysql # ll /usr/bin/mysql lrwxrwxrwx 1 root root 26 Nov 4 2019 /usr/bin/mysql -> /usr/local/mysql/bin/mysql
Es ist ersichtlich, dass die tatsächliche Adresse des Befehls /usr/local/mysql/bin/mysql lautet, es wird jedoch ein Softlink zur Datei zum Verzeichnis /usr/bin/ erstellt, also dort Es ist nicht erforderlich, absolute zu verwenden. Der Befehl kann über den Pfad aufgerufen werden.
Lassen Sie uns selbst einen Datei-Softlink erstellen, um zu sehen, ob dies der Fall ist.
Erstellen Sie zunächst eine Datei soft.sh
vim soft #!/bin/bash echo 'study softlink' # chmod u+x soft
und erstellen Sie dann einen Softlink zur Datei und prüfen Sie, ob es möglich ist, den Befehl direkt auszuführen
# ln -s /root/soft /usr/bin/ # soft study softlink
Erstellen Sie einen Softlink zum Verzeichnis
Zunächst müssen wir beachten, dass beim Erstellen eines Softlinks die Zieldatei oder das Zielverzeichnis nicht existieren darf .
Nachfolgend stellen wir ein Szenario vor, das sehr häufig vorkommt:
Die Website-Dateien werden im Verzeichnis /www/wwwroot gespeichert. Da die Systemlaufzeit immer schlechter wird, Das Verzeichnis wird immer größer. Da sich das Verzeichnis in derselben Partition wie das Stammverzeichnis befindet, ist das Stammverzeichnis fast voll. Das andere Partitionsverzeichnis /data verfügt noch über 99 GB verbleibenden Speicherplatz. Wenn Sie zu diesem Zeitpunkt keine Neupartitionierung durchführen möchten, was sollten Sie dann tun, um die Partition freizugeben, auf der sich das Stammverzeichnis befindet?
Im Folgenden verwenden wir Verzeichnis-Softlinks, um dieses Problem zu lösen. Erstellen Sie zunächst das Verzeichnis wwwroot im Verzeichnis /data, verschieben Sie dann alle Dateien im Verzeichnis /www/wwwroot nach /data/wwwfile und löschen Sie dann das Verzeichnis /www/wwwroot. Geben Sie abschließend dem Verzeichnis /data/wwwfile einen Softlink zu /www/wwwroot
mkdir /data/wwwfile mv /www/wwwroot/* /data/wwwfile rm -rf /www/wwwroot ln -s /data/wwwfile /www/wwwroot
Jetzt testen wir, ob das Problem wirklich gelöst ist. Die aktuelle Nutzung der Root-Partition beträgt 19 %, während die Nutzung der /data-Partition 9 % beträgt.
/dev/vda1 40G 7.4G 33G 19% / /dev/vdb1 500G 43G 458G 9% /data
Wir erstellen eine 2G große Datei im Verzeichnis /www/wwwroot und sehen dann, welche Partitionskapazität sich erhöht hat. Die Antwort, die wir wollen, ist, dass die Nutzung der /data-Partition gestiegen ist, während sich die Root-Partition nicht geändert hat.
dd if=/dev/zero of=/www/wwwroot/bigfile bs=1G count=2 # 然后看看各分区使用容量的变化 /dev/vda1 40G 7.4G 33G 19% / /dev/vdb1 500G 45G 456G 9% /data
Wie Sie sehen können, beträgt die verfügbare Kapazität der Root-Partition immer noch 33 GB, aber die /data-Partition hat sich von 458 GB auf 456 GB geändert, sodass wir das Problem gelöst haben.
Das obige ist der detaillierte Inhalt vonEinführung in Linux-Dateiverknüpfungen und ihre Anwendungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!