다음과 같은 디렉터리 구조와 파일이 있습니다.
test:
total 16
drwxr-xr-x 2 db2root1 db2iadm1 4096 Jan 18 16:52 archive
-rw-r--r-- 1 db2root1 db2iadm1 34 Jan 18 16:38 file1.txt
-rw-r--r-- 1 db2root1 db2iadm1 34 Jan 18 16:38 file2.txt
drwxr-xr-x 2 db2root1 db2iadm1 4096 Jan 18 17:04 subdir
test/archive:
total 0
test/subdir:
total 4
-rw-r--r-- 1 db2root1 db2iadm1 34 Jan 18 16:38 file3.txt
이제 다음 명령을 사용하여 디렉터리 아카이브 없이 디렉터리 아카이브에 tar 파일과 file1.txt 파일을 만들고 싶습니다.
tar --remove-files --exclude file1.txt --exclude archive -cvzf /test/archive/test.tar.gz /test
--exclude 및 --remove-files 옵션을 다른 위치에 두었지만 항상 다음과 같은 오류 메시지가 나타납니다.
tar: Removing leading `/' from member names
/test/
/test/subdir/
/test/subdir/file3.txt
/test/file2.txt
tar: /test: Cannot rmdir: Directory not empty
tar: Exiting with failure status due to previous errors
기본 디렉터리/test와 관련된 오류를 방지하는 방법은 무엇입니까?
답변1
( cd /test; tar --remove-files --exclude file1.txt --exclude archive -cvzf archive/test.tar.gz * )
트릭은 cd
디렉토리로 이동한 다음 tar *
하위 쉘이 cd
상위 쉘에 미치는 영향을 방지하는 것입니다.
답변2
을(를 ) 사용하려고 합니다 --remove-files
. 그러면"파일을 아카이브에 추가한 후 삭제하세요".
tarball을 제자리에 놓고 /test/archive/test.tar.gz
tar로 부드럽게 만듭니다 /test/
. 이 --remove-files
옵션을 사용하면 디렉터리를 마지막에 삭제하라는 메시지가 표시되지만 tar
실행할 때마다 파일에 액세스하게 되므로 디렉터리를 삭제할 수 없습니다./test/
tar
/test/archive/test.tar.gz
이 옵션을 취소 하거나 다른 디렉터리에 --remove-files
배치 할 수 있습니다.tar