标签: symlink

使用简单的 Linux 命令将绝对符号链接转换为相对符号链接

我在/home/user/system包含标准 Linux 结构的路径中有一个完整的子文件系统,其中包含目录/bin, /home, /root, /usr, /var, /etc,...

这个子文件系统包含符号链接,无论是相对的还是绝对的。相对符号链接很好,它们保留在/home/user/system. 但是绝对符号链接是有问题的,因为它们指向子文件系统之外的目标。

作为一个例子,我们假设一个绝对符号链接如下(在子文件系统中看到):

/usr/file1 -> /usr/lib/file1
Run Code Online (Sandbox Code Playgroud)

在整个文件系统中,我们现在有一个链接/home/user/system/usr/file1指向/usr/lib/file1子文件系统外部的文件,而不是子文件系统/home/user/system/usr/lib/file1 内部的文件。

我想要一个简单的脚本,最好是一个将每个绝对符号链接转换为相对符号链接的单个命令行(rsync、chroot、find 等)。

在给定的示例中,该相对链接将变为

/usr/file1 -> ../usr/lib/file1
Run Code Online (Sandbox Code Playgroud)

filesystems symlink

37
推荐指数
2
解决办法
2万
查看次数

使 Nginx 遵循符号链接

Nginx 不遵循符号链接。我收到 404 错误。在我的目录中,我有这个链接:

lrwxrwxrwx  1 root root    48 Sep 23 08:52 modules -> /path/to/dir/
Run Code Online (Sandbox Code Playgroud)

但是/path/to/dir找不到存储在其中的文件。

symlink nginx

37
推荐指数
2
解决办法
9万
查看次数

硬链接和文件有什么区别?

硬链接被定义为一个指向一个inode。甲软链接,也称为符号链接,被定义为指向到另一条链路而无需硬链接的限制的独立文件。

文件和硬链接有什么区别?硬链接指向一个inode,那么什么是文件呢?inode 条目本身?还是带有硬链接的 inode?

假设我用触摸创建了一个文件。然后,一个inode条目在创建inode表。我创建了一个硬链接,它与文件具有相同的 inode 编号。那么我创建了一个新文件吗?或者文件只是定义为一个inode?

filesystems hard-link symlink files

37
推荐指数
4
解决办法
8103
查看次数

我应该在指向目录的符号链接中包含尾部斜杠 / 吗?

符号链接到目录会产生不同的结果,ls -l具体取决于 Iln -s dirln -s dir/. 但实际的区别是什么,为什么我应该更喜欢哪一个?

directory symlink

36
推荐指数
4
解决办法
7405
查看次数

如何从内部访问 chroot 外部的目录?

我有一个用户被 chroot 到她的主目录,但我希望她也能够管理/var/www. 因此,我做了以下事情:

root@server:/home/username# ln -s /var/www www
root@server:/home/username# cd www
root@server:/home/username/www# chown username:username *
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试/www使用 FileZilla打开时,它返回“没有这样的文件或目录”。我可以看到链接的目录,但我无法访问它。我究竟做错了什么?

chroot debian symlink

36
推荐指数
1
解决办法
4万
查看次数

如何在仍然遵循目录符号链接的同时使用长格式(-l)?

我注意到这ls -l不仅改变了输出的格式,而且还改变了目录符号链接的处理方式:

> ls /rmn
biweekly.sh  daily.sh  logs ...

> ls -l /rmn
lrwxrwxrwx 1 root root 18 Feb 11  2011 /rmn -> /root/maintenance/
Run Code Online (Sandbox Code Playgroud)

我想获得 中内容的详细列表/rmn,而不是有关/rmn符号链接的信息。

我能想到的一种解决方法是创建一个执行以下操作的 shell 函数:

cd /rmn
ls -l
cd -
Run Code Online (Sandbox Code Playgroud)

但这似乎太老套了,尤其是因为它会弄乱cd -. 有没有更好的办法?

(我使用的是 CentOS 2.6.9)

ls symlink

36
推荐指数
3
解决办法
2万
查看次数

更改符号链接的时间戳

我知道如何更改常规文件的时间戳:

touch -t 201301291810 myfile.txt
Run Code Online (Sandbox Code Playgroud)

我无法用符号链接做同样的事情。是否可以?

发行版:RHEL 5.8

rhel symlink timestamps

36
推荐指数
1
解决办法
3万
查看次数

将文件替换为 /dev/null 的硬链接

我正在运行一个写入 log.txt 的应用程序。该应用程序已更新到新版本,使支持的插件不再兼容。它强制将大量错误写入 log.txt,并且似乎不支持写入不同的日志文件。

如何将它们写入不同的日志?

我考虑过用硬链接替换 ​​log.txt(应用程序无法区分,对吗?)或指向 /dev/null 的硬链接。我有哪些选择?

hard-link symlink files

35
推荐指数
4
解决办法
1万
查看次数

如何防止 sed -i 破坏符号链接?

为什么sed -i在符号链接上执行会破坏该链接并将其替换为目标文件?如何避免这种情况?

例如。

$ ls -l pet*
-rw-rw-r-- 1 madneon madneon 4 mar 23 16:46 pet
lrwxrwxrwx 1 madneon madneon 6 mar 23 16:48 pet_link -> pet

$ sed -i 's/cat/dog/' pet_link

$ ls -l pet*
-rw-rw-r-- 1 madneon madneon 4 mar 23 16:48 pet
-rw-rw-r-- 1 madneon madneon 4 mar 23 16:49 pet_link
Run Code Online (Sandbox Code Playgroud)

为什么它不被认为是一个错误?

sed symlink

33
推荐指数
1
解决办法
7974
查看次数

如何从命令行判断我是否实际上位于符号链接位置?

假设我有一个文件夹:

cd /home/cpm135/public_html
Run Code Online (Sandbox Code Playgroud)

并建立一个符号链接

ln -s /var/lib/class .
Run Code Online (Sandbox Code Playgroud)

后来,我在那个目录中:

cd /home/cpm135/public_html/class
Run Code Online (Sandbox Code Playgroud)

pwd是要告诉我,我在/home/cpm135/public_html/class

有什么方法可以知道我“真的”在/var/lib/class吗?谢谢

shell cd-command symlink working-directory

33
推荐指数
2
解决办法
5603
查看次数