У меня странная хардлинк на сервере centos 6.5 vps. Предполагаю, что это сделано человеком, но я не тот, кто это сделал.
df
сообщает некоторую информацию.
[root@root]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/simfs 209715200 128660820 81054380 62% /
none 4194304 4 4194300 1% /dev
none 4194304 0 4194304 0% /dev/shm
/dev/simfs 209715200 128660820 81054380 62% /var/www/username/data/www/test.site.biz/photo
ls -li
ничего полезного не говорит
[root@vz65646 test.site.biz]# ls -li
total 7952
79435160 drwxr-xr-x 2 someuser someuser 8130560 Oct 25 20:52 photo
Связанная папка photo
. По ошибке я rm -rf test.site.biz
, что привело к плохим вещам. А именно, каталог фотографий в другом месте стал чистым.
Я предполагаю, что восстановление данных невозможно. Тем не менее, я хотел бы выяснить, что здесь произошло, чтобы не повторять одну и ту же ошибку дважды.
Любые подсказки будут высоко оценены.
решение1
У вас есть две смонтированные файловые системы с похожими характеристиками: одинаковое имя устройства, одинаковое использование диска. Скорее всего, это будет одно и то же устройство. Это может произойти, если вы смонтируете одну и ту же сетевую файловую систему в разных местах, например. Учитывая, что это локальная файловая система, какисточникjediуказанный в комментарии, это, скорее всего, будетпривязать крепление, созданный такой командой, как mount --bind /origin /var/www/username/data/www/test.site.biz/photo
.
Если ваша система достаточно новая, вы можетеиспользуйте findmnt
для подтверждения того, что это привязанное крепление. Но в любом случае большинство типов файловых систем не могут быть смонтированы одновременно в разных местах, поэтому наличие одного и того же устройства является достаточным доказательством того, что это монтирование с привязкой.
Монтирование bind обеспечивает просмотр дерева каталогов в другом месте. С точки зрения доступа к файлам в монтировании bind это похоже на наличие символической ссылки в дереве, т. е. это /var/www/username/data/www/test.site.biz/photo/somefile
тот же файл, что и /origin/somefile
, как если бы /var/www/username/data/www/test.site.biz/photo
это была символическая ссылка на /origin
. Но /var/www/username/data/www/test.site.biz/photo
это не символическая ссылка, это каталог.
Поскольку /var/www/username/data/www/test.site.biz/photo
это каталог, рекурсивный обход спускается в него. Поэтому rm -rf
удалил файлы под /original
, поскольку /original
и /var/www/username/data/www/test.site.biz/photo
являются одним и тем же каталогом, который просто случайно отображается в разных местах.
решение2
Вот несколько мыслей, которые я сделал по этому поводу:
mount --bind
плохая идея, пока вы точно не знаете, что делаете. Лучше используйте символические ссылки.- Довольно сложно обнаружить монтирования при работе с папками. Это своего рода область действия сервера (не то, о чем вы думаете, перемещая папки).
umount your_directory
удаляет переплет, но не повреждает исходную папку.- Вы можете перечислить все монтировки с помощью
findmnt
команды. Связанные монтировки будут иметь квадратные скобки.