我已经复制了一个目录cp -as /media/user/dir symlinks
,现在我很害怕,rm -rf symlinks
因为它可能会删除其中的文件/media/user/dir
仅删除目录结构和符号链接symlinks
而不触及任何内容的安全方法是什么/media/user/dir
?
作为测试,我这样做了:
$ mkdir test
$ touch test/file
$ mkdir test/dir
$ touch test/dir/file2
$ cp -as test syms
$ rm -rf syms
Run Code Online (Sandbox Code Playgroud)
此测试没有触及原始 test
目录。这是一个完整的测试吗?总是这样吗?
我没有空间进行备份/media/user/dir
Kus*_*nda 28
您可以删除包含符号链接的目录,而不必担心这也会删除原始文件。
rm
该实用程序的 POSIX 规范规定(关于遇到符号链接时会发生什么):
该
rm
实用程序不得通过跟随符号链接进入层次结构的其他部分来遍历目录,而应删除链接本身。
然后,稍后(在基本原理部分):
根据描述,
rm
由于对功能的依赖,该实用程序会删除符号链接本身,而不是它们引用的文件。unlink()
当使用-r
或删除层次结构时-R
,必须明确禁止遵循符号链接。
GNUrm
手册对此没有任何说明,但我们必须假设它在这方面不会违反 POSIX。其他系统的手册有时明确包含此承诺。以下来自 OpenBSD(FreeBSD 和 NetBSD 具有相同的措辞):
该
rm
实用程序删除符号链接,而不是链接引用的文件。
...以及来自 AIX(Solaris 有类似的措辞):
如果文件是符号链接,则该链接将被删除,但符号链接引用的文件或目录仍保留。
rm
请注意,关于符号链接的行为可以在本地轻松测试:
$ touch file
$ ls -l
total 0
-rw-r--r-- 1 myself wheel 0 Feb 26 09:32 file
$ ln -s file link
$ ls -l link
lrwxr-xr-x 1 myself wheel 4 Feb 26 09:32 link -> file
$ rm link
$ ls -l
total 0
-rw-r--r-- 1 myself wheel 0 Feb 26 09:32 file
Run Code Online (Sandbox Code Playgroud)
可以对目录中的符号链接进行类似的练习。
归档时间: |
|
查看次数: |
2509 次 |
最近记录: |