Доступ к исходному содержанию точки монтирования

Минуту, макс. и среднее число довольно легко получить с awk:

% echo -e '6\n2\n4\n3\n1' | awk 'NR == 1 { max=$1; min=$1; sum=0 }
   { if ($1>max) max=$1; if ($1<min) min=$1; sum+=$1;}
   END {printf "Min: %d\tMax: %d\tAverage: %f\n", min, max, sum/NR}'
Min: 1  Max: 6  Average: 3,200000

Вычисление медианы немного более хитро, так как необходимо отсортировать числа и сохранить их всех в памяти некоторое время или считать их дважды (в первый раз для подсчета их, вторыми - для получения среднего значения). Вот пример, который хранит все числа в памяти:

% echo -e '6\n2\n4\n3\n1' | sort -n | awk '{arr[NR]=$1}
   END { if (NR%2==1) print arr[(NR+1)/2]; else print (arr[NR/2]+arr[NR/2+1])/2}' 
3
33
29.09.2012, 01:53
3 ответа
mkdir /mnt/root
mount --bind / /mnt/root
ls /mnt/root/home/foo/.ssh

Пока Вы используете --bind (в противоположность --rbind), Вы получаете клон монтирования без материала, смонтированного сверху его.

47
27.01.2020, 19:37
  • 1
    Прекрасный! Я играл с идеей mount --bind, но только получил некоторые замысловатые идеи, которые, несомненно, повредились бы, когда мне был нужен он. Это делает точно, в чем я нуждаюсь и могу даже войти как постоянное монтирование. Спасибо –  Janus 30.11.2010, 07:23
  • 2

Можно переместить монтирование в новое местоположение, не размонтировав его, с помощью mount --move:

$ mount --move /home /mnt/home
do stuff with the local /home
$ mount --move /mnt/home /home
1
27.01.2020, 19:37
  • 1
    Спасибо Michael. Это имеет тот же недостаток создания/, размещают недоступный другим пользователям. –  Janus 30.11.2010, 07:18

Я попытался достигнуть чего-то, что ответ подобного, но ephemient не объяснил семантику метода. Это перестало работать для меня и таким образом, я задал фактически тот же вопрос ранее здесь на Unix. SE. После комментария я понял это самостоятельно и ответил на это. Это - отредактированная версия моего ответа для вписывания в этот контекст здесь. Я удалил свой другой вопрос (и ответ) в пользу этого.

Вот то, что я пытался сделать:

Случай в качестве примера

Монтируется:

/dev/sda1  on /     type ext4 (rw)
/dev/sdb1  on /data type ext4 (rw)
/data/home on /home type none (rw,bind)

После монтирования / У меня есть папка /home/joe для пользователя joe. После того как другое местоположение смонтировано (/data) Я имею полный набор в наличии домашних папок, таким образом, я - связанный смонтированный их в место (/data/home on /home). Существует папка /data/home/joe, таким образом, пока монтирование /dev/sdb1 успешно выполняется, он получит содержание /data/home/joe, иначе он отступит к /home/joe (на /dev/sda1!).

Когда это успешно выполняется, как я могу получить доступ к исходному содержанию /home/joe (на /dev/sda1!) вместо тех связывают - смонтированный в место от /data/home/joe?

Решение

На основе комментария комментария Patrick к моему вопросу и решению ephemient (принятый ответ здесь), я придумал следующее.

По-видимому возможно mount --bind (или mount -o bind) родительская папка (это - ключевая роль) связывания - монтируется в другом месте и таким образом получает доступ к исходному содержанию. Таким образом для моего случая в качестве примера, вместо того, чтобы пробовать к:

mount --bind /home/joe /home/joe/underneath
# or ...
mount --bind /home /home/joe/underneath

(т.е. смонтируйтесь, уже связывают - смонтированные местоположения в другом месте), я имел к:

test -d /.ROOT || mkdir /.ROOT
mount --bind / /.ROOT
mount --bind /.ROOT/home/joe /home/joe/underneath

Таким образом, это - то, что Patrick имел в виду в своем комментарии

Если Вы не повторно монтируетесь / (корень), тот ответ должен работать просто великолепно.

Пока у Вас есть родительская папка к связыванию - смонтированное доступное местоположение, это будет работать, хотя с одной косвенностью как показано выше. Если Вы связываете - смонтировал что-то / Вам не повезло, поскольку нет никакой родительской папки для /.

5
27.01.2020, 19:37
  • 1
    Монтирование родительской папки было ключевой ролью, которую я пропускал.Спасибо. –  aidan 06.03.2018, 03:11

Теги

Похожие вопросы