Это немного грубо, но это работает в крайнем случае:
find <path> -type f -print0 | cpio -0o >/dev/null
Вы можете сделать некоторые интересные вещи с помощью этой техники, включая кэширование всех файлов /lib
и /usr/bin
. Вы также можете использовать это как часть работы по бенчмаркингу:
find / -xdev -type f -print0 |
sort -R --from0-file=- |
timeout "5m" cpio -0o >/dev/null
Все имена файлов в корне находятся, сортируются случайным образом и копируют их в кэш на срок до 1 минуты. Выходные данные cpio сообщают вам, сколько блоков было скопировано. Повторите 3 раза, чтобы получить среднее количество блоков в минуту. (Обратите внимание, что операция поиска/сортировки может занять много времени - намного дольше, чем копирование. Было бы лучше кэшировать поиск / сортировку и использовать split
для получения образца файлов.)
Легко,
umount /acme
Ваш исходный каталог /acme
просто «спрятан» под точкой монтирования.
Если ничто не мешает вам размонтировать каталог, вы можете размонтировать его, скопировать данные в другое место и перемонтировать.
Монтирование не удаляет данные, но может скрыть данные, поскольку содержимое точки монтирования заменяется смонтированной файловой системой (, которая может быть пустой ). Конечно, могут быть побочные эффекты (программы, которые ведут себя по-разному в зависимости от того, как что-то монтируется ), поэтому все может пойти ужасно неправильно, если вы неправильно управляете своими точками монтирования.
Если вы смонтировали пустую файловую систему не в том месте, достаточно просто размонтировать:
umount /acme
Если вы хотите увидеть, что находится ниже точки монтирования, не размонтируя его, вы можете привязать -монтирование родительской файловой системы в другом месте:
mkdir /mnt/root
mount --bind / /mnt/root
ls /mnt/root/acme
Это сложнее, если несколько слоев файловой системы смонтированы друг над другом. Используйте lsblk
и cat /proc/mounts
, чтобы выяснить структуру. Вы можете привязать -монтирование каждого слоя отдельно во временную директорию и проверить содержимое.
Обратите внимание, что монтирования bind -по умолчанию доступны для записи, поэтому их можно изменять, переименовывать и удалять файлы. Для просмотра только для чтения -просто добавьте --read-only
.
Если вы не можете размонтировать смонтированную файловую систему, исходную все же можно получить, смонтировав ее во временную точку монтирования и получив таким образом доступ к файлам.