이 내용은 내 컴퓨터에 파일로 저장되지만 선생님도 자신의 컴퓨터에 컴파일해야 합니다. 지금까지의 코드입니다. 세 개의 파일을 TAR 파일로 압축하려고 합니다.
#!/bin/bash
dd if=/dev/zero of=file.txt bs=1701KB count=1
dd if=/dev/zero of=filee.txt bs=1780KB count=1
dd if=/dev/zero of=fileee.txt bs=1800KB count=1
echo 'i dont really care at all about any of this' >> file.txt
echo 'just trying things out for fun' >> filee.txt
echo 'this is really boring i dont like it' >> fileee.txt
tar -czvf archive.tar.gz /home/melwhiteastonia/file.txt /home/melwhiteastonia/filee.txt /home/melwhiteastonia/fileee.txt
gzip -l archive.tar.gz
답변1
-C
옵션을 사용하여 tar
관련 작업 디렉터리로 변경하고 파일 이름을 지정합니다.
tar -C /home/melwhitesastonia -cvzf archive.tar.gz file.txt filee.txt fileee.txt
$PWD/archive.tar.gz
아카이브를 동일한 디렉토리에 두지 않으려면 아카이브에 대한 절대 경로(예: )를 지정해야 할 수도 있습니다. 또한 -z
tar의 플래그가 이미 그렇게 하고 있으므로 gzip으로 압축할 필요가 없다는 점에 유의하십시오 .
또한 파일을 아카이브의 루트에 직접 배치하는 대신 적절한 이름의 디렉토리에 파일을 배치하는 것이 관례적이고 사용자에게 더 좋습니다. 파일 대신 디렉터리 이름을 지정하고 옵션에서 디렉터리 구성 요소를 제거하면 됩니다 -C
.
답변2
인수를 사용하면 --transform
다음과 같은 작업을 수행할 수 있습니다.
tar -czv --transform 's:home/melwhiteastonia/::g' -f archive.tar.gz \
/home/melwhiteastonia/file.txt \
/home/melwhiteastonia/filee.txt \
/home/melwhiteastonia/fileee.txt
정규식은 어쨌든 선행이 제거되기 home/melwhiteastonia/
때문 입니다.tar
/