我的文件系统上有一个 not-quite-folder not-quite-file。它是一个运行 Ubuntu 18.04.4 LTS 的 AWS EC2 实例。
我有一个每晚运行的脚本,它使用 Robo 拾取文件 (/ebsvol/dead-drop/sync) 并将其移动到 (/ebsvol/dead-drop/sync),而 Robo 又使用 Symfony 的 Filesystem rename() 方法(https://symfony.com/doc/current/components/filesystem.html#rename)。
const CANARY_PATH = '/ebsvol/dead-drop/sync';
const CANARY_WORKING_PATH = '/ebsvol/dead-drop/~sync';
...
$this->taskFilesystemStack()
->rename(self::CANARY_PATH, self::CANARY_WORKING_PATH)
->run();
脚本或这段代码出了点问题,但这并不是我来这里的真正原因。结果和清理就是我在这里的原因。:)
结果是创建了 ~sync “文件”,但它实际上是...到 /bin 的硬链接?这就是事情变得可疑的地方。我的ls -ial
样子是这样的:
3276803 -rw-rw-r-- 1 configbot configbot 125 Jul 4 00:30 '~sync'
所以它只是一个文本文件,所以让我们试试 cat...
$ cat ~sync
cat: /bin: Is a directory
嗯,好的。
$ cd ~sync
...将我的提示更改为 /bin,然后执行 ls,它肯定是 bin。顺便说一句,ls -ial
在我的根卷上显示 /bin 是 iNode 12。
这在我过去曾经发生过一次,我只是这样做了rm -rf ~sync
,它淹没了我的整个服务器,我不得不重建。所以我试图避免这种情况。
如何在不丢弃 /bin 的情况下摆脱这个奇怪的 ~sync 文件/文件夹/符号链接/硬链接?
一些附加信息:
/ebsvol
是一个单独的 EBS 卷,而不是/
(即单独的硬盘驱动器/分区!)- 我认为如果它以某种奇怪的方式成为硬链接,
rm ~sync
可能会起作用。但它不会显示相同的 iNode 编号吗? - 在尝试任何操作之前,我将拍摄两个卷的快照。:)