150GB xml 파일을 사용하여 약 1GB로 줄이려고합니다 (예 : 자르기)-사용할 수있는 간단한 (bash 또는 이와 유사한) 명령이 있습니까, 또는 프로그래밍 방식으로 이동해야합니까 (vi 또는 emacs에서 편집) 큰 철 시스템에도 악몽이 있습니까?)
(나는 정보 손실에 대해 특별히 걱정하지 않고 짧은 파일을 원하므로 소프트웨어를 테스트하고 많은 시간을 기다리지 않아도됩니다. 파일이 짧을수록 그렇게 할 수 있습니다.)
150GB xml 파일을 사용하여 약 1GB로 줄이려고합니다 (예 : 자르기)-사용할 수있는 간단한 (bash 또는 이와 유사한) 명령이 있습니까, 또는 프로그래밍 방식으로 이동해야합니까 (vi 또는 emacs에서 편집) 큰 철 시스템에도 악몽이 있습니까?)
(나는 정보 손실에 대해 특별히 걱정하지 않고 짧은 파일을 원하므로 소프트웨어를 테스트하고 많은 시간을 기다리지 않아도됩니다. 파일이 짧을수록 그렇게 할 수 있습니다.)
답변:
150GB 파일의 첫 1GB를 자르고 추출한다고 가정합니다.
로 head
:
head -c 1G infile > outfile
점을 유의 G
접미사로 대체 할 수있다 GB
1000 대신 1024 정렬합니다.
또는과 dd
:
dd if=infile of=outfile bs=1M count=1024
또는 Wumpus Q. Wumbley의 답변 dd
에서와 같이 제자리에서 잘릴 수 있습니다.
가능한 경우 truncate
John1024의 답변과 같이 명령을 사용합니다 . 그러나 표준 유닉스 명령이 아니므로 언젠가는 그것을 사용할 수 없다는 것을 알게 될 것입니다. 이 경우 dd
내부 잘라내기도 수행 할 수 있습니다.
dd
의 기본 동작은 복사가 끝나는 지점에서 출력 파일을 자르는 것이므로 0 길이의 입력 파일을 지정하고 원하는 자르기 지점에서 쓰기 시작하도록 지시하십시오.
dd if=/dev/null of=filename bs=1048576 seek=1024
( dd
multithr3at3d의 답변에서 복사 및 자르기와는 다릅니다 .)
1048576 * 1024가 원하는 크기이므로 1048576 및 1024를 사용했습니다. 이것은 "휴대 성"대답, 그리고 고전 때문에 학사 = 1m를 피해야 dd
만 접미사를 알고 k
, b
하고 w
.
bs
숫자에 곱한 seek
숫자는 유지해야 할 바이트 수입니다. 해당 제약 조건을 만족하는 두 숫자는 모두 작동해야합니다. 예를 들어, bs=1073741824 seek=1
또는 bs=1 seek=1073741824
. 또는 bs
기본값이 512이므로 seek=2097152
단독으로도 작동합니다. 그리고 당신은 같은 표기법을 사용할 수 있습니다 1M
, 1K
, 1G
와 2M
.
나는 당신이 무엇을 요구하는지 완전히 확신하지 못합니다. 다른 149GB를 제거하거나 150GB를 1GB로 압축하려고합니까? 그럼에도 불구하고 이것은 이것을 달성하는 데 유용한 방법 일 수 있습니다.
이 split
명령은 모든 파일을 여러 조각으로 나눌 수 있습니다. man split을 참조하십시오 . -b
옵션 을 사용하여 분할하려는 파일 청크의 크기를 지정할 수 있습니다 . 예를 들어 :
$ split -b 1GB myfile.xml
다른 옵션이 없으면 문자로 시작하여 현재 디렉토리에 여러 파일을 작성해야합니다 x
. 분할 파일의 이름을 조정하려면 매뉴얼 페이지를 참조하십시오.
파일을 다시 조립하려면을 사용하십시오 cat * > re-assembled.xml
.
예:
[kent_x86.py@c7 split-test]$ ls -l opendocman*
-rw-rw-r--. 1 kent_x86.py kent_x86.py 2082602 Mar 31 2017 opendocman-1.3.5.tar.gz
[kent_x86.py@c7 split-test]$ split -b 100K opendocman-1.3.5.tar.gz
[kent_x86.py@c7 split-test]$ ls
opendocman-1.3.5.tar.gz xaa xab xac xad xae xaf xag xah xai xaj xak xal xam xan xao xap xaq xar xas xat xau
[kent_x86.py@c7 split-test]$ ll
total 4072
-rw-rw-r--. 1 kent_x86.py kent_x86.py 2082602 Jan 5 11:06 opendocman-1.3.5.tar.gz
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xaa
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xab
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xac
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xad
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xae
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xaf
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xag
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xah
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xai
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xaj
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xak
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xal
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xam
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xan
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xao
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xap
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xaq
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xar
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xas
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xat
-rw-rw-r--. 1 kent_x86.py kent_x86.py 34602 Jan 5 11:06 xau
[kent_x86.py@c7 split-test]$ cat xa* > opendoc-reassembled.tar.gz
[kent_x86.py@c7 split-test]$ ls -l opendoc-reassembled*
-rw-rw-r--. 1 kent_x86.py kent_x86.py 2082602 Jan 5 11:07 opendoc-reassembled.tar.gz