임의로 큰 "가짜"파일 만들기


16

나는 유사한 특수 파일 생성하고자하는 /dev/null또는 /dev/random파일이하지, 실제로 존재하지만 실제로 파일의 겉보기 크기에 모자를 설정할 수 있습니다 것을 제외하고는, 모두 같은에서 읽을 수 있습니다.

달리 말하면, 파일을 "고양이"할 때 파일의 500GB를 모두 출력 한 다음 중지하는 특수 파일을 만들고 싶습니다 (캡을 500GB로 설정했다고 가정). 실제 500GB 파일과 동일하게 작동해야하지만 공간을 차지하지 않습니다. 이 파일의 내용은 중요하지 않습니다. 모두 \0/dev/null거나 작은 문자열이 계속 전송되거나 전송 될 수 있습니다 .

이것이 가능한 일입니까? 내가 찾을 수 있었던 유일한 가까운 거리는 맨 페이지에 대해 이야기하는 mknod것이지만 그다지 도움이되지 않았습니다.

답변:


17

당신은 만들 수 있습니다 스파 스 파일 것입니다 특정 파일 시스템에 표시되는 특정 크기로,하지만 실제로 많은 공간을 사용하지 않습니다 디스크 .

$ dd if=/dev/null of=sparse bs=1024 count=1 seek=524288000
0+0 records in
0+0 records out
0 bytes (0 B) copied, 2.4444e-05 s, 0.0 kB/s
$ ls -l sparse 
-rw-rw-r--. 1 ignacio ignacio 536870912000 May  9 22:25 sparse
$ du -h sparse
0   sparse

이것은 완벽하게 작동합니다. 가장 좋은 경우는 실제로 출력이 무엇인지 스크립팅 할 수있는 솔루션을 원하고있었습니다 (예를 들어 데이터를 보는 모든 탐색 위치에 대해 해당 위치의 해시가 있거나 해당 라인을 따라 무언가가있을 것입니다). 그곳에. 이것은 확실히 지금 작동합니다, 감사합니다!
Mediocre Gopher

1
@MediocreGopher, 당신은 확실히 FUSE 와 같은 것을 할 수 있습니다.
CJM


1

파일에서 다시 검색 할 필요가 없으면 명명 된 파이프를 사용할 수 있습니다.

mkfifo my_special_file
yes | head -n 100 > my_special_file&
cat my_special_file

물론 복잡한 스크립트를 포함한 다른 명령을 사용하여 파이프에서 데이터를 생성 할 수 있습니다.


0

dd를 사용하면 블록 크기와 개수를 지정하여 다음과 같이 크기를 제한 할 수 있습니다.

dd if=/dev/urandom count=5 bs=1024 > nullfile

그것을 읽으려면 파이프로 연결하십시오.

dd if=/dev/urandom count=5 bs=1024 | yourReadingProcess 

이전에는 내가 만든 모든 Linux 설치에는 네트워킹 도구, 포트 맵, inet.d 등이 있었고 inet.d에는 일부 서비스가 항상 지정된 곳이 있습니다.

(... 1 분 후 ...)

예. / etc / services에서 찾을 수 있습니다

chargen         19/tcp          ttytst source
chargen         19/udp          ttytst source

그래서 나는 무언가를 테스트하는 서비스이며 네트워크를 통해 문자를 무작위로 보냅니다. 내 PC에서만 /etc/xinet.d/chargen을 찾습니다. 더 많은 정보가 있습니다 :

# default: off
# description: An xinetd internal service which generate characters.  The
# xinetd internal service which continuously generates characters until the
# connection is dropped.  The characters look something like this:
# !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg
# This is the tcp version.

그러나 귀하의 목적으로 사용하는 방법을 모르겠습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.