
.NET을 사용하여 임시 디렉토리를 생성하는 스크립트가 있습니다 mktemp -d
.
임시 디렉터리에 생성된 폴더는 컴퓨터의 다른 부분에 복사될 스크립트의 출력입니다.
ln
내용을 다른 곳에 복사하는 대신 동일한 폴더를 사용하는 것을 고려하고 있었습니다 . /tmp
디렉토리에 있는 폴더의 버전이 OS에 의해 정리되면 여전히 남아있을지 궁금합니다 .
답변1
임시 디렉터리의 위치에 따라 다릅니다. 즉, 자신만의 임시 디렉터리를 만들었나요, 아니면 시스템의 ( /tmp
)를 사용하고 있나요?
귀하의 시나리오에서는 임시 디렉터리가 정리된 후에도 파일/폴더가 남아 있을 것으로 예상합니다.
시스템 디렉토리에 있으면 /tmp
시스템에 의해 정리될 수 있습니다(배포판에 따라 다르지만 대부분 직업 cron
이나 이와 유사한 작업이 있습니다).
또한 일부 배포판에서는 내용이 RAM/스왑에 보관되어 재부팅 후에도 유지되지 않는다는 의미를 /tmp
사용하여 디렉터리를 만듭니다.tmpfs
파일은 다음을 생성하는 경우에만 계속 액세스할 수 있습니다.딱딱한링크. 그러나 하드 링크는 마운트된 단일 파일 시스템 내에서만 생성할 수 있습니다. 에 마운트된 파일 시스템 tmpfs
/tmp
과 (예:) 사이에 하드 링크를 생성할 수 없습니다 .ext4
/mystuff
당신은 만들 수 있습니다부드러운마운트 /mystuff
된 어딘가 에서 링크를 연결 하지만 임시 파일이 삭제되면 링크는 'nowehere'를 가리킵니다. 물체를 약간 패배시키는 것입니다!tmpfs
/tmp
배포판의 /tmp
파일이 파일을 저장하려는 위치와 동일한 마운트에 있는 실제 디스크에 있는 경우( /mystuff
) 시스템이 정리되기 전에 링크가 생성되는 한 하드 링크가 작동합니다 /tmp
.
답변2
나는 상황을 훨씬 더 명확하게 하기 위해 예를 만들었습니다.
특정 디렉터리 안에 2개의 파일을 만들었습니다.
cat sourcefile
This is the sourcefile.
##This is to create a hard link.
ln sourcefile destfile
##List the files available.
ls
destfile sourcefile
cat destfile
This is the sourcefile.
이제 당신이 사용한다고 가정하드링크위와 같이 디렉토리 내부의 파일을 참조하려면 /tmp
소스 파일을 삭제하면 어떻게 되는지 살펴보겠습니다.
rm sourcefile
rm: remove regular file `sourcefile'? y
ls
destfile
cat destfile
This is the sourcefile
위의 시나리오에서는 destfile
여전히 액세스할 수 있습니다.
이제 소프트링크를 사용하면 어떤 일이 발생하는지 살펴보겠습니다.
cat sourcefile
This is the sourcefile for softlink example.
ln -s sourcefile destfile
ls -l
total 4
lrwxrwxrwx 1 root root 10 Jun 26 13:40 destfile -> sourcefile
-rw-r--r-- 1 root root 46 Jun 26 13:40 sourcefile
이제 시나리오에 따라 소스 파일을 삭제하고 어떤 일이 일어나는지 살펴보겠습니다.
rm sourcefile
rm: remove regular file `sourcefile'? y
ls
destfile
cat destfile
cat: destfile: No such file or directory
따라서 소프트 링크를 사용하면 데이터가 없을 수도 있습니다.
편집하다
mktemp
임시 파일을 생성하는 데 사용했으며 다음을 생성했습니다.하드 링크디렉토리 에서 /tmp
내 작업 디렉토리 중 하나로 이동합니다.
재부팅 후에도 콘텐츠를 사용할 수 있는지 확인하기 위해 머신을 다시 시작했습니다. 내가 사용한다면하드 링크, 재부팅 후에도 해당 내용을 사용할 수 있습니다. 이를 확인하는 이유는 재부팅하는 동안 /tmp
디렉터리가 정상적으로 지워지기 때문입니다.