Tar를 사용하여 절대 경로를 상대 경로로 변환하는 방법은 무엇입니까?

Tar를 사용하여 절대 경로를 상대 경로로 변환하는 방법은 무엇입니까?

이 내용은 내 컴퓨터에 파일로 저장되지만 선생님도 자신의 컴퓨터에 컴파일해야 합니다. 지금까지의 코드입니다. 세 개의 파일을 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아카이브를 동일한 디렉토리에 두지 않으려면 아카이브에 대한 절대 경로(예: )를 지정해야 할 수도 있습니다. 또한 -ztar의 플래그가 이미 그렇게 하고 있으므로 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/

관련 정보