때로는 디렉토리처럼 느껴질 때도 있고, 때로는 일반 파일처럼 느껴질 때도 있습니다.

때로는 디렉토리처럼 느껴질 때도 있고, 때로는 일반 파일처럼 느껴질 때도 있습니다.

정리 목적을 위해 특정 파일 시스템 개체가 대부분의 경우 파일로 표시되고 때로는 디렉터리로 표시되기를 원합니다.

기본 아이디어는 일반적으로 , , , / 에 대해 cp개체 mv가 별도 의 파일로 나타나기를 원한다는 것입니다 find. , , 및 와 같은 다른 애플리케이션의 경우 디렉토리로 표시되기를 원합니다. 누군가 이를 수행하는 메커니즘을 제안할 수 있습니까?updatedblocatevlcrythmboxfehokular

이를 설명하기 위해 예를 들어 보겠습니다.

제가 염두에 두고 있는 개체의 이름을 _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.

관련 정보