정리 목적을 위해 특정 파일 시스템 개체가 대부분의 경우 파일로 표시되고 때로는 디렉터리로 표시되기를 원합니다.
기본 아이디어는 일반적으로 , , , / 에 대해 cp
개체 mv
가 별도 의 파일로 나타나기를 원한다는 것입니다 find
. , , 및 와 같은 다른 애플리케이션의 경우 디렉토리로 표시되기를 원합니다. 누군가 이를 수행하는 메커니즘을 제안할 수 있습니까?updatedb
locate
vlc
rythmbox
feh
okular
이를 설명하기 위해 예를 들어 보겠습니다.
제가 염두에 두고 있는 개체의 이름을 _my_books_on_m4_programming.arch_로 지정하겠습니다. 이동/복사 또는 찾기/찾기의 목적으로 개체는 파일처럼 보이지만 개체에서 책을 읽으려면 디렉터리처럼 보입니다. 즉, 명령의 경우 okular my_books_on_m4_programming.arch/beginner/m4_for_dummies.pdf
.
나는 두 가지 반의 가능한 해결책을 생각해 보았지만 둘 중 하나에 대해서는 도움이 필요합니다.
첫 번째는 파일 시스템의 특수 속성을 사용하도록 Linux를 수정하는 것이었습니다. 해당 속성이 설정되면 환경(예: )을 찾습니다
SPECIAL_OBJECT_IS_FILE
. 설정되어 있으면 파일로 처리하겠습니다. 설정하지 않으면 디렉토리로 처리하겠습니다. 이 접근 방식의 문제점은 전체 시스템을 수정하지 않고 이를 구현하는 방법을 모른다는 것입니다.두 번째 기술은 파일을 일부 디렉터리에 마운트(rw)한 아카이브(예: tar, zip, rar)에 저장하는 것입니다. 개체를 아카이브로 처리하려면 원시 아카이브를 참조하고, 개체를 디렉터리로 처리하려면 마운트 지점을 참조하세요. 가능합니까?
절반 기법은 두 번째 기법의 단순한 변형일 뿐이며, 아카이브를 설치하는 대신 이에 대한 링크를 만들었습니다. 그런 일이 가능합니까?
비슷한 일을 하고 싶어하는 사람이 아무도 없다는 게 믿기지 않아서 뭔가 방법이 있을 것 같아요. 제안?
답변1
어떤 경우에는 이러한 파일이 별도의 파일로 표시되는 것을 원하지 않는 이유를 잘 모르겠습니다. 결국 my_books_on_m4_programming.arch
디렉토리인 경우 를 사용하여 복사하고 cp -rp
를 사용하여 찾을 수 있습니다 locate
.
퓨즈(사용자 공간의 파일 시스템)은 경량 파일 시스템을 구현하는 방법을 제공하며 기존 파일의 대체 보기를 제공하는 여러 FUSE 파일 시스템이 있습니다. 동일한 파일(예: 동일한 파일 경로)이 디렉터리와 일반 파일로 모두 표시되면 많은 응용 프로그램이 혼동될 수 있지만, 동일한 파일을 한 위치에서는 디렉터리로 표시하고 한 위치에서는 일반 파일로 표시하도록 하는 기존 솔루션이 많이 있습니다. location 파일의 또 다른 위치입니다.
특히,AVFS아카이브와 원격 파일이 디렉터리로 나타나도록 합니다. 나는 이것이 당신이 찾고있는 것과 가장 가까운 기존 것이라고 생각합니다.
$ mountavfs
$ ls my_books_on_m4_programming*
my_books_on_m4_programming.tgz
$ tar tzf my_books_on_m4_programming.tgz
beginner/m4_for_dummies.pdf
$ ls ~/.avfs$PWD/my_books_on_m4_programming.tgz\#/
beginner
$ okular ~/.avfs$PWD/my_books_on_m4_programming.tgz\#/beginner/m4_for_dummies.pdf
답변2
루프백 파일 시스템 사용을 고려할 수 있습니다.
먼저 파일 시스템을 포함할 파일을 만듭니다.
dd if=/dev/zero of=~/myfilesys bs=8K count=256
그러면 빈 2GB 파일이 생성됩니다. 다음으로 루프백 장치에 연결해야 합니다.
losetup /dev/loop0 ~/myfilesys
이제 파일 시스템을 생성합니다:
mkfs -t ext3 /dev/loop0
마지막으로 파일 시스템을 마운트합니다.
mkdir ~/myfilesys.d
mount /dev/loop0 ~/myfilesys.d
완료되면:
umount /dev/loop0
losetup -d /dev/loop0
나중에 다시 사용하세요.
losetup /dev/loop0 ~/myfilesys
mount /dev/loop0 /mnt/myfilesys.d
losetup
(예, 단계 와 단계를 결합 할 수 있다는 것을 알고 있지만 mount
설명을 위해 단계를 별도로 유지하면 진행 상황을 더 명확하게 볼 수 있습니다.)
현재 이 ~/myfilesys
파일은 모든 명령에 대한 파일과 동일하게 보이고 작동하지만 일단 설치되면 ~/myfilesys.d
.