Symlink

符號連結源目標混淆

  • October 28, 2020

每次我嘗試設置符號連結(符號連結)時,我都會努力了解符號連結源和目標。

我已經嘗試了幾種方法,但它仍然失敗。

讓我解釋。BackupPC v4.4.0/var/lib/BackupPC預設儲存備份。BackupPC 安裝說明建議使用符號連結,以便將來的更新不會覆蓋備份目錄位置 ( /var/lib/BackupPC)。

我想將這些儲存在/dataR6目錄中。(RAID 6 陣列。)

因此,BackupPC 儲存在/var/lib/BackupPC其中將連結到儲存在/dataR6. 客戶端備份儲存在/dataR6(目錄。)

這兩個目錄都已經存在

我已閱讀:創建相對於目前目錄的符號連結

我讀到這個:https ://stackoverflow.com/questions/9104337/create-a-symbolic-link-of-directory-in-ubuntu/9104384#9104384

但是,我仍然無法正確連接連結。

所以,我的“源和目標”問題是,在上述情況下,哪個是源,哪個是目標?我在想“來源”=/var/lib/BackupPC和“目標”= /dataR6?還是我倒退了?

對我來說,符號連結是一個循環的鬥爭,其中哪個是非常令人困惑的。(也許我腦死了?)

如果要/var/lib/BackupPC指向 target 並與之等效/dataR6,則需要將其替換為符號連結

cd /var/lib
mv BackupPC BackupPC.dir
ln -s /dataR6 BackupPC

“源”和“目標”之間混淆的一個相關來源可能是文件本身。根據POSIX,“目標”是要創建的連結(或正在創建的目錄連結):

ln [-fs] [-L|-P] source_file target_file

$$ … $$

描述

在第一個概要形式中,ln實用程序應在target_file操作數指定的目標路徑處創建一個新的目錄條目(連結)。$$ … $$

根據GNU 手冊頁,“目標”是連結指向的文件:

ln [OPTION]... [-T] TARGET LINK_NAME

$$ … $$

描述

在第一種形式中,使用名稱 LINK_NAME 創建指向 TARGET 的連結。$$ … $$

避免使用這兩個詞並考慮“文件”(您的數據)和“連結”(文件的替代名稱)可能會更容易。

此外,考慮到(一個參數)在目前工作目錄中ln -s /path/to/file創建一個連結,可能會產生一些助記符幫助。/path/to/file在這種形式中,不能省略的參數是文件,因此最好是第一個。

然後,您可以考慮將符號連結創建為ln -s the_data a_link_to_it(其中a_link_to_it也可以讀作“數據的另一條路徑”)。

符號連結的方便使用是支持正常路徑的定義:在您的情況下,/var/lib/BackupPC是 BackupPC 配置使用的路徑,並且將其定義為符號連結允許程序工作,即使實際數據位於其他地方。

因此,您需要的是ln -s /dataR6 /var/lib/BackupPC/dataR6“數據”在哪里以及“獲取數據/var/lib/BackupPC的另一種方式”。

請參閱roaima 的答案,了解您在實踐中需要做什麼。

引用自:https://unix.stackexchange.com/questions/616725