디렉토리 구조를 유지하지 않고 디렉토리를 tar하려면 어떻게합니까?


82

백업 스크립트를 작성 중이며 파일 디렉토리를 tar로 만들고 싶습니다.

tar czf ~/backup.tgz /home/username/drupal/sites/default/files

이렇게하면 압축이 풀리지 만 결과 파일의 압축을 풀면 전체 파일 구조가 포함됩니다 home/username/drupal/sites/default/files. 파일은 .

결과 tar가 마지막 디렉토리 ( files)에 대해 알 수 있도록 상위 디렉토리를 제외하는 방법이 있습니까?

답변:


37
cd /home/username/drupal/sites/default/files
tar czf ~/backup.tgz *

19
tar의 -C 옵션을 사용할 수도 있습니다.
GuruM 2013

8
cd는 권장되지 않으며 오류가 발생하기 쉽습니다 (예 : 큰 스크립트 또는 메이크 파일). 아래 답변은 더 일반적으로 사용 가능하고 정확합니다.
Gregor 2011

시도 -C--directory우분투 16.04에 나를 위해 작동하지 않았다. 이것은 작동하는 유일한 옵션입니다.
haxpor

이것은 작동하는 유일한 옵션입니다 -C add a. 우리가 원하는 것이 아닌 루트 폴더.
Nicolas Dorier 19.11.

165

--directory 옵션을 사용하십시오.

 tar czf ~/backup.tgz --directory=/home/username/drupal/sites/default files 

1
여기에 2 개의 디렉토리를 넣으려면 어떻게해야합니까?
Shanpei Zhou 2015

@ user3352668은 단순히 두 개의 디렉토리를 추가합니다. 예를 들어, 기본값에 "files"및 "morefiles"가 포함 된 경우 nbt 문자열에 "morefiles"를 추가하면됩니다. BTW : 솔루션은 NBT의를 베스트, 허용 대답해야한다
익명

4
-C DIR은 동일하다 --directory = DIR , DIR에 디렉토리를 변경
마르쿠스

1
여기서 순서가 중요하다고 언급 할 것이라고 생각했습니다. 당신은 --directory="/home/username/drupal/sites/default files"목적지 의 infront를 가질 수 없습니다 ~/backup.tgz.
Chris Stryczynski

6
@ChrisStryczynski --directory옵션에서 지정한 경로 는 "/home/username/drupal/sites/default files". 그 /home/username/drupal/sites/default뒤에는 대상이 될 디렉토리의 이름을 지정하는 위치 인수가옵니다 files.
Chap

48

안녕하세요 지정된 디렉토리에 들어갈 때 더 나은 해결책이 있습니다 (Makefiles 등)

tar -cjvf files.tar.bz2 -C directory/contents/to/be/compressed .

마지막에 점 (.)을 잊지 마세요 !!


4
끝에있는 점은 무엇을합니까?
Bruce Sun

3
@BruceSun -C 는 작업 디렉토리를 변경합니다. 점은 아카이브 할 디렉토리 (즉, 현재 작업 디렉토리)를 tar에 알려줍니다.
user12345

2
끝에 점을 생략하면 다음과 같은 경고가 표시 될 수 있습니다. tar :
비겁하게

3
모두가 -C 옵션 또는 --directory에 대해 이야기하지만 '.' 결국 @MaikolD가 언급했듯이 적어도 내 환경에서는 작동하지 않습니다.
aks

5
이것은 여전히 .tar의 루트에 폴더를 남깁니다.
electrovir

2

파일을 모두 TXT (* .txt 인)을 해제 (gunzip)하기 /home/myuser/workspace/zip_from//home/myuser/workspace/zip_to/다음 명령을 사용하십시오 소스 파일의 디렉토리 구조없이 :

tar -P -cvzf /home/myuser/workspace/zip_to/mydoc.tar.gz  --directory="/home/myuser/workspace/zip_from/" *.txt

1

tar 아카이브 만들기

tar czf  $sourcedir/$backup_dir.tar --directory=$sourcedir WEB-INF en

로컬 컴퓨터에서 tar 파일을 풉니 다.

tar -xvf $deploydir/med365/$backup_dir.tar -C $deploydir/med365/

서버에 업로드

scp -r -i $privatekey $sourcedir/$backup_dir.tar $server:$deploydir/med365/
echo "File uploaded.. deployment folders"

서버에서 압축 해제

ssh -i $privatekey $server tar -xvf $deploydir/med365/$backup_dir.tar -C $deploydir/med365/

0

이것은 나를 위해 일했습니다.

gzip -dc "<your_file>.tgz" | tar x -C <location>

0

나를 위해 -C 또는 --directory가 작동하지 않았으므로 이것을 사용합니다.

cd source/directory/or/file
tar -cvzf destination/packaged-app.tgz *.jar
# this will put your current directory to what it previously was
cd -

-2
tar -Cczf ~/backup.tgz /home/username/drupal/sites/default/files

-C는 당신을 위해 CD를 수행합니다


작동하지 않습니다. MaikoID 및 Neil Butterworth의 솔루션을 참조하십시오.
빈센트

3
-C작동하지만 다음과 같이 -C <dir> file1 file2 ...
사용해야합니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.