.Tar.gz dosyası oluştururken dizini hariç tutma


119

Bir /public_html/klasörüm var, o klasörde /tmp/gerçekten ihtiyacım olmayan 70 gb dosya içeren bir klasör var.

Şimdi bir oluşturmak çalışıyorum .tar.gzarasında /public_html/hariç/tmp/

Çalıştırdığım komut bu:

tar -pczf MyBackup.tar.gz /home/user/public_html/ --exclude "/home/user/public_html/tmp/" 

Katran hala oluşturuluyor ve bir yaparak ls -shbunu görebiliyorum MyBackup.tar.gzzaten 30GB hakkında vardır ve ben emin olduğu /public_html/olmaksızın /tmp/dosyaların 1 GB'tan daha fazla sahip değildir.

Neyi yanlış yaptım?



-pseçenek doğru oluşturmak işlev açısından hiçbir anlamı yoktur !?
Martin Schneider

Yanıtlar:


201

Dışlanacak dizin yolunun sonundaki / sonunu kaldırmayı deneyin

tar -pczf MyBackup.tar.gz /home/user/public_html/ --exclude "/home/user/public_html/tmp" 

7
Tüm klasörü ve içeriğini hariç tutmak için: tar -pczvf MyBackup.tar.gz / home / user / public_html / --exclude "/ home / user / public_html / tmp / *"
Dr.jacky

Ben olsun tar: Error exit delayed from previous errors.macos içinde
prayagupd


2
--exclude="/home/user/public_html/tmp--exclude "/home/user/public_html/tmp
Siyah

1
Artık düzenleyemediğim önceki yorumumu dikkate almayın: excludeöncelikle stackoverflow.com/users/3904223/oussaka notları olarak belirtilmesi gerekir . En azından benim için işe
yarayan

46

Eklemeden --excludeöncesine taşımayı deneyin .

tar -pczf MyBackup.tar.gz --exclude "/home/user/public_html/tmp/" /home/user/public_html/ 

Teşekkürler, bu benim için eski bir Ubuntu 14.04 LTS kutusunda çalıştı.
Jamsi

1
Bunu OS X'te de yapmam gerekiyordu.
TheJacobTaylor

16

Evet, sondan kaldırın /ve (en azından ubuntu 11.04'te) verilen tüm yollar göreceli veya tam yol olmalıdır. Mutlak ve göreli yolları aynı komutta karıştıramazsınız.

sudo tar -czvf 2011.10.24.tar.gz ./start-directory --exclude "home/user/start-directory/logs"

günlükler dizinini hariç tutmayacak, ancak

sudo tar -czvf 2011.10.24.tar.gz ./start-directory --exclude "./start-directory/logs"

çalışacak


1
Dışlama bağımsız değişkeninde mutlak yolu kaldırdığımda benim için çalış.
jruzafa

2
Mutlak ve göreceli yolları karıştırmayla ilgili ipucu burada benim için çok önemliydi
Dmitri DB

12

Dizini sıkıştırmanın dışında bırakmak için doğru komut şudur:

tar --exclude='./folder' --exclude='./upload/folder2' -zcvf backup.tar.gz backup/

Kaynak ve hedef öğelerin önüne --exclude koyduğunuzdan emin olun .

ve tar.gz dosyasının içeriğini sıkıştırmayı açmadan kontrol edebilirsiniz:

tar -tf backup.tar.gz

3

Bunu dene

tar -pczvf advancedarts.tar.gz /home/user/public_html/ --exclude /home/user/public_html/tmp

2

Ayrıca yalnızca birini kullanarak birden fazlasını hariç tutabilirsiniz --exclude. Bu örnek gibi:

tar -pczf MyBackup.tar.gz --exclude={"/home/user/public_html/tmp","/home/user/public_html/data"} /home/user/public_html/

Gelen --exclude=dizin olmadan adını bitirmesi gerektiğini /arasında ve zorunluluk MyBackup.tar.gz ve / home / user / public_html /

Sözdizimi şöyledir:

tar <OPTIONS> <TARBALL_WILL_CREATE> <ARGS> <PATH_TO_COMPRESS>

2

Kabul edilen cevap benim için işe yaramadı, windows10'da unxutils tar çalıştırdı. Bunun yerine, dosyaları / dizinleri son parametre olarak arşive koymak zorunda kaldım, şöyle :

tar -pczf MyBackup.tar.gz --exclude "/home/user/public_html/tmp/" /home/user/public_html/

Sonra işe yaradı.


2

Bu benim için çalıştı:

tar -zcvf target.tar.gz target/ --exclude="target/backups" --exclude="target/cache"

2

tar -pczf <target_file.tar.gz> --exclude /path/to/exclude --exclude /another/path/to/exclude/* /path/to/include/ /another/path/to/include/*

Ubuntu 19.10'da test edilmiştir.

  1. =Sonra excludeisteğe bağlıdır. İsterseniz =anahtar kelimeden sonra boşluk yerine kullanabilirsiniz exclude.
  2. Parametre exclude, kaynaktan önce yerleştirilmelidir.
  3. Klasör adını kullan (1. gibi) veya * (2. gibi) arasındaki fark şudur: 2. olan paket içinde boş bir klasör içerecek, ancak 1. klasör içermeyecektir.

-2

Hariç tutma seçeneğinin =işaretini içermesi "gerekir ve gerekli değildir.

--exclude=/home/user/public_html/tmp

1
Klasörün adında boşluk varsa "gereklidir
Siyah
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.