Linux cpio의 세 가지 작동 모드는 무엇입니까

青灯夜游
풀어 주다: 2023-02-09 11:52:16
원래의
1179명이 탐색했습니다.

cpio에는 세 가지 작동 모드가 있습니다. 1. 백업 파일을 패키지하고 파일을 아카이브 패키지에 복사하는 데 사용되는 복사 모드 2. 다음에서 사용할 수 있는 아카이브 패키지 파일에서 파일을 복원하는 데 사용되는 복사 모드 표준 아카이브 패키지의 파일을 읽거나 아카이브 패키지의 내용을 나열하려면 읽기 아카이브 패키지를 입력하십시오. 3. 복사 통과 모드는 한 디렉터리 트리에서 다른 디렉터리 트리로 파일을 복사하는 데 사용됩니다.

Linux cpio의 세 가지 작동 모드는 무엇입니까

이 튜토리얼의 운영 환경: linux7.3 시스템, Dell G3 컴퓨터.

Linux에서 cpio는 cpio 아카이브 파일을 생성하고, 아카이브 파일에서 파일을 추출하거나, 한 디렉터리에서 다른 디렉터리로 파일을 복사하는 데 사용되는 데이터 백업 및 복구 도구입니다. 생성된 아카이브 파일은 디스크 파일일 수도 있고 테이프와 같은 데이터 스트리밍 매체에 기록될 수도 있습니다. cpio는 바이너리 및 ASCII 헤더 데이터 형식의 cpio 아카이브 파일을 처리할 수 있을 뿐만 아니라 다양한 tar 형식의 아카이브 파일을 읽고 쓸 수도 있습니다. 호환성을 유지하기 위해 cpio는 별도로 지정하지 않는 한 일반적으로 바이너리 헤더 데이터 형식으로 아카이브 파일을 생성합니다.

cpio는 tar 명령과 유사합니다. 파일을 cpio 또는 tar 형식의 아카이브 패키지 파일로 복사하여 패키징하거나 아카이브 패키지 파일에서 파일을 복사할 수 있습니다. 아카이브 패키지 파일은 디스크에 있는 파일이거나 테이프와 같은 장치 파일일 수 있습니다.

아카이브 파일에서 파일을 추출할 때 cpio 명령은 어떤 아카이브 파일을 읽고 있는지 자동으로 식별할 수 있으며, 다른 시스템에서 생성된 다른 바이트 순서로 아카이브 파일을 읽을 수도 있습니다.

cpio에는 다음 표에 표시된 대로 세 가지 작동 모드가 있습니다.

cpio 세 가지 작동 모드
cpio 세 가지 작동 모드
작동 모드 모드 설명
복사 모드 이 모드는 백업 파일을 패키징하는 데 사용됩니다.
                          cpio는 파일을 아카이브 패키지에 복사합니다. cpio로 압축할 파일 이름은 표준 입력에서 가져오며, 표준 입력에서 한 줄에 하나씩 파일 이름 목록을 가져옵니다. 일반적으로 다른 명령에 대한 표준 입력의 출력에 대한 표준 입력은 일반적으로 파이프라인을 통해 이루어집니다. 가장 일반적인 방법은 find 명령을 사용하여 파일 이름 목록을 생성한 다음 이를 cpio로 파이프하는 것입니다. 이런 방식으로 cpio는 백업할 데이터의 출처를 알 수 있습니다. 접근 권한 없이 디렉토리를 입력하여 발생하는 문제를 줄이기 위해서는 find 뒤에 -깊이 옵션을 추가해야 합니다.
기본적으로 cpio는 아카이브 패키지 파일을 표준 출력에 기록하므로 아카이브 패키지 데이터 출력을 파일로 리디렉션하려면 리디렉션 기호 >
복사 모드 이 모드는 보관된 패키지 파일에서 파일을 복구하는 데 사용됩니다.
cpio는 표준 입력에서 아카이브 패키지를 읽거나, 아카이브 패키지의 파일을 읽거나, 아카이브 패키지의 내용을 나열합니다. cpio는 아카이브 패키지에서 읽은 데이터를 표준 출력에 기록합니다.
복사-통과 모드 cpio는 한 디렉터리 트리에서 다른 디렉터리 트리로 파일을 복사합니다. 복사 작업과 복사 출력 작업을 결합하지만 아카이브 패키지를 사용하지 않습니다. CPIO에는 표준 입력에서 읽을 수 있는 파일 목록이 제공됩니다. 대상 디렉토리는 옵션이 아닌 경우 명령줄 매개변수로 제공됩니다.

cpio는 바이너리, 이전 ASCII, 새 ASCII, crc, HPUX 바이너리, HPUX 이전 ASCII, 이전 tar 및 POSIX.1 tar와 같은 아카이브 형식을 지원합니다.

cpio의 일부 옵션은 해당 작동 모드에서만 사용할 수 있습니다. 일반적으로 사용되는 명령 옵션 형식은 다음과 같습니다.

[root@initroot ~]# cpio -ovcB > [file|device] #备份
[root@initroot ~]# cpio -ivcdu < [file|device] #还原
[root@initroot ~]# cpio -ivct < [file|device] #察看
로그인 후 복사

복사 모드(백업)에서 사용되는 옵션 및 매개변수:

  • - o: 데이터 복사본을 파일이나 장치로 출력합니다.

  • -B: 기본 블록을 5120바이트로 늘릴 수 있습니다. 기본값은 512바이트입니다. 이 방법의 장점은 대용량 파일의 저장 속도를 높일 수 있다는 것입니다. i -nodes 개념 참조)

복사 모드(복원)에 사용되는 옵션 및 매개변수:

  • -i: 파일이나 장치의 데이터를 시스템 외부로 복사

  • -d: 자동으로 디렉토리 생성! cpio를 사용하여 백업한 데이터는 동일한 디렉토리에 없을 수 있으므로 복원 중에 cpio가 새 디렉토리를 생성하도록 허용해야 합니다.

  • -u : 오래된 파일을 최신 파일로 자동 덮어쓰기

  • -t : cpio로 생성된 파일이나 장치의 내용을 "보는" 데 사용할 수 있는 -i 옵션이 필요합니다.

공통 옵션 및 매개변수 :

  • -v: 저장 과정에서 파일 이름이 화면에 표시되도록 허용

  • -c: 최신 휴대용 형식 저장소

cpio는 표준 입력에서 데이터를 읽고, 처리된 내용을 출력합니다. 데이터를 표준 출력으로 보내므로 cpio를 파이프 및 리디렉션 기호와 함께 사용해야 합니다.

/boot 디렉터리에서 모든 파일을 찾아 /tmp/boot.cpio 아카이브 파일에 백업하세요.

[root@initroot ~]# cd /
[root@initroot /]# find boot -print
boot
boot/grub
boot/grub/gfxblacklist.txt
boot/grub/unicode.pf2
boot/grub/locale
...省略...
로그인 후 복사

find 명령은 파일과 디렉터리를 포함하여 부팅 디렉터리의 모든 파일을 찾을 수 있습니다! 여기는 절대 경로가 아닌 상대 경로입니다!

[root@initroot /]# find boot | cpio -ocvB > /tmp/boot.cpio

[root@initroot /]# ls -lh /tmp/boot.cpio
-rw-r--r-- 1 peter peter 193M Feb 10 15:59 /tmp/boot.cpio
[root@initroot ~]# file /tmp/boot.cpio
/tmp/boot.cpio: ASCII cpio archive (pre-SVR4 or odc)
로그인 후 복사

find boot를 사용하여 파일 이름을 찾고, 파이프라인을 통해 출력을 cpio에 전달하고, 리디렉션 기호를 통해 아카이브 데이터를 /tmp/boot.cpio 파일에 출력합니다. >! 위에서 찾아보세요. boot 매개변수는 절대 경로가 아닌 상대 경로입니다. cpio는 경로에 대해 특별한 처리를 수행하지 않습니다. 따라서 여기서 절대 경로를 사용하면 find 명령의 출력도 절대 경로이고 cpio가 수신하는 것도 절대 경로입니다. 그런 다음 아카이브 파일에서 파일을 복사하면 절대 경로이기 때문에 복사된 파일은 반드시 덮어쓰여질 것입니다. 원래 /boot 디렉터리에 있는 파일을 삭제하는 것은 매우 위험합니다! 따라서 파일을 패키징하기 위해 find 명령을 사용할 때는 반드시 상대 경로를 사용하십시오. tar 명령의 -P 옵션을 참고하세요!!

이제 /root/ 디렉터리에 아카이브 패키지 파일 /tmp/boot.cpio의 압축을 푼다:

[root@initroot ~]# cd ~
[root@initroot ~]# cpio -idvc < /tmp/boot.cpio
[root@initroot ~]# ls -al /root/boot
로그인 후 복사

/root/boot 및 /boot의 내용을 볼 수 있습니다. 완전히 동일합니다!

cpio는 시스템 데이터를 테이프 드라이브에 완전히 백업할 수 있습니다:

[root@initroot ~]# find / | cpio -ocvB > /dev/st0
로그인 후 복사

테이프 드라이브에서 데이터 복원:

[root@initroot ~]# cpio -idvc < /dev/st0
로그인 후 복사

cpio는 /dev 아래의 장치 파일을 포함하여 모든 파일을 백업할 수 있습니다!

cpio 파일 이름을 생성하려면 find와 같은 다른 프로그램과 협력해야 하므로 cpio는 파이프라인 명령 및 데이터 흐름 리디렉션과 매우 밀접한 관계를 가지고 있습니다.

실제로는 /boot/initramfs-xxx 또는 /boot 디렉토리의 /boot/initrd .img-xxx-generic 파일은 cpio 아카이브 파일이기도 합니다.

/tmp/initramfs 디렉토리에 파일의 압축을 풀면 이 아카이브 패키지에 어떤 파일이 있는지 확인할 수 있습니다.

[root@initroot ~]# file initrd.img-4.15.0-65-generic
initrd.img-4.15.0-65-generic: ASCII cpio archive (SVR4 with no CRC)
[root@initroot ~]# mkdir /tmp/initramfs
[root@initroot ~]# cd /tmp/initramfs
[root@initroot initramfs]# cpio -idv < /boot/initrd.img-4.15.0-65-generic
.
kernel
kernel/x86
kernel/x86/microcode
kernel/x86/microcode/AuthenticAMD.bin
56 blocks
로그인 후 복사

여기서 -c 옵션이 제거되면 cpio가 다음과 같이 나타납니다. 팁:

cpio: premature end of file
로그인 후 복사

아카이브 파일의 압축을 성공적으로 풀려면 -c 옵션을 제거하세요!

관련 추천: "Linux 비디오 튜토리얼"

위 내용은 Linux cpio의 세 가지 작동 모드는 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!