그래서 /usr
파일 'ro'
시스템(변경할 수 없음, 작업 규칙 및 보안)이 있고 또 다른 디렉토리가 /bigdata
있습니다 'rw'
.
일부 서비스를 설치 중인데 이를 작성해야 하므로 /usr/foo
해당 서비스에 심볼릭 링크할 수 있다고 생각했습니다 /bigdata
. 문제는 다른 파일도 있다는 것입니다 /usr/foo
.
foo
의 모든 내용을 복사하지 않는 해결 방법이 있습니까 bigdata
?
감사해요!
답변1
한 가지 아이디어는 다시 작성하는 것이지만 /usr/foo
오작동하는 애플리케이션에만 해당됩니다. 오작동하는 응용 프로그램은 /usr/foo
별칭 으로 처리되지만 시스템의 다른 모든 프로세스 에서는 실제로 해당 응용 프로그램에 있는 파일을 포함하여 실제 콘텐츠를 /bigdata
계속 볼 수 있습니다 . 이는 오작동하는 애플리케이션이 액세스할 수 없는 일반 콘텐츠 /usr/foo
에 관심이 없다고 가정합니다 ./usr/foo
sudo unshare --mount sh -c 'mount --make-rprivate / &&
mount -n --bind /bigdata /usr/foo &&
exec su "$SUDO_USER" -c misbehaving_application'
(테스트됨)
그렇지 않으면,파일 시스템 덮어쓰기의견에서 제안한 대로 문제가 해결될 수 있습니다.
마지막으로 최후의 수단으로 일부 기호 연결 연습을 통해 이 문제를 해결할 수 있습니다. 아이디어는 다음과 같습니다.
/usr/foo
복사본을 다른 곳에 바인드 마운트mkdir /writable/place/foo mount --bind /usr/foo /writable/place/foo
/usr/foo
대체 디렉터리로 압축mount --bind /bigdata /usr/foo
/usr/foo에서 액세스할 수 있도록 기존 파일을 심볼릭 링크합니다.
for x in /writable/place/foo/*; do ln -s "$x" /usr/foo done
(검증되지 않은)