"initrd.img-5.10.0-18-amd64"가 존재하지만 aa 디렉터리에 없습니다. '열기' 기능이 실패했습니다. 디렉터리가 아닙니다. cpio 아치 내의 파일을 덮어쓰려고 합니다.

"initrd.img-5.10.0-18-amd64"가 존재하지만 aa 디렉터리에 없습니다. '열기' 기능이 실패했습니다. 디렉터리가 아닙니다. cpio 아치 내의 파일을 덮어쓰려고 합니다.

cpio 폴더에 이미 있는 파일을 같은 이름의 새 파일로 덮어쓰고 싶습니다. 내 작업에 대한 매개변수를 찾는 데 문제가 있습니다. 해결책이 있을 수 있는 이 페이지를 찾았지만 확실하지 않습니다.

https://drumperl.wordpress.com/2014/01/12/forcing-cpio-to-overwrite-files/

어쨌든, 나는 이것을 시도했다:

echo usr/share/plymouth/themes/homeworld/debian.png | cpio -pumd /home/ziomario/Scrivania/PassT-Cubic/kernels/initrd.img-5.10.0-18-amd64

cpio 아카이브(initrd.img-5.10.0-18-amd64)에 복사하는 파일의 이름은 "debian.png"이고 그 안에 같은 이름의 파일이 있다는 점에 유의하세요.

위에서 실행한 명령은 다음 오류를 발생시킵니다.

"initrd.img-5.10.0-18-amd64"가 존재하지만 aa 디렉터리에 없습니다. '열기' 기능 실패: 디렉터리가 아닙니다.

매우 감사합니다.

답변1

작성한 명령에는 cpio 아카이브 파일이 아닌 디렉토리가 필요합니다.

-p플래그는 cpio복사 통과 모드에서 작업을 수행합니다. ~에서cpio 매뉴얼 페이지:

복사 전달 모드

복사-통과 모드에서 cpio는 실제로 아카이브를 사용하지 않고 복사 및 복사 단계를 결합하여 한 디렉터리 트리에서 다른 디렉터리 트리로 파일을 복사합니다. 표준 입력에서 복사할 파일 목록을 읽습니다. 파일이 복사될 디렉터리는 옵션이 아닌 인수로 제공됩니다.

이는 cpio 아카이브를 추출하고 추출된 디렉터리의 파일을 바꾸려는 경우에 유용합니다.

cpio아카이브의 파일을 덮어쓰는 쉬운 방법은 없습니다 . 아카이브를 추출하고, 파일을 교체하고(명령이 유용할 수 있음) 새 아카이브를 생성해야 합니다.

관련 정보