ไม่รวมไดเร็กทอรีเมื่อสร้างไฟล์. tar.gz


119

ฉันมี/public_html/โฟลเดอร์ในโฟลเดอร์นั้นมี/tmp/โฟลเดอร์ที่มีไฟล์ 70GB ซึ่งฉันไม่ต้องการจริงๆ

ตอนนี้ผมกำลังพยายามที่จะสร้าง.tar.gzของ/public_html/ไม่รวม/tmp/

นี่คือคำสั่งที่ฉันเรียกใช้:

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

tar ยังคงถูกสร้างขึ้นและจากการทำls -shฉันเห็นว่าMyBackup.tar.gzมีอยู่แล้วประมาณ 30gb และฉันรู้แน่นอนว่า/public_html/ไม่มี/tmp/ไฟล์เกิน 1GB

ฉันทำอะไรผิด?



-pตัวเลือกที่มีความหมายในแง่ของฟังก์ชั่นสร้างขวา !?
Martin Schneider

คำตอบ:


201

ลองลบสุดท้าย / ท้ายพา ธ ไดเร็กทอรีเพื่อแยกออก

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

7
หากต้องการยกเว้นทั้งโฟลเดอร์และเนื้อหา: tar -pczvf MyBackup.tar.gz / home / user / public_html / --exclude "/ home / user / public_html / tmp / *"
Dr.jacky

ฉันได้รับtar: Error exit delayed from previous errors.ใน macos
Prayagupd

รับข้อผิดพลาด tar: การลบนำหน้า `/ 'ออกจากชื่อสมาชิก
SenG

2
ไม่ได้ผลฉันต้องใช้--exclude="/home/user/public_html/tmpแทน--exclude "/home/user/public_html/tmp
Black

1
ไม่สนใจความคิดเห็นก่อนหน้าของฉันซึ่งฉันไม่สามารถแก้ไขได้อีกต่อไป: excludeต้องระบุก่อนเป็นstackoverflow.com/users/3904223/oussaka notes อย่างน้อยนั่นเป็นสิ่งเดียวที่เหมาะกับฉัน
kghbln

46

ลองย้าย--excludeไปก่อนหน้ารวม

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

ขอบคุณสิ่งนี้ใช้ได้กับฉันในกล่อง Ubuntu 14.04 LTS เก่า
Jamsi

1
ฉันต้องทำสิ่งนี้บน OS X ด้วย
TheJacobTaylor

16

ใช่ลบส่วนต่อท้าย/และ (อย่างน้อยใน ubuntu 11.04) เส้นทางทั้งหมดที่ระบุต้องเป็นเส้นทางแบบสัมพัทธ์หรือเต็ม คุณไม่สามารถผสมพา ธ สัมบูรณ์และพา ธ สัมพัทธ์ในคำสั่งเดียวกันได้

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

จะไม่รวมไดเรกทอรีบันทึก แต่

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

จะทำงาน


1
ทำงานให้ฉันเมื่อฉันลบพา ธ สัมบูรณ์ในอาร์กิวเมนต์ยกเว้น
jruzafa

2
เคล็ดลับเกี่ยวกับการผสมพา ธ สัมบูรณ์และพา ธ สัมพัทธ์เป็นกุญแจสำคัญสำหรับฉันที่นี่
Dmitri DB

12

คำสั่งที่ถูกต้องสำหรับการไม่รวมไดเร็กทอรีจากการบีบอัดคือ:

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

ตรวจสอบให้แน่ใจว่าได้ใส่ไม่รวมก่อนที่ต้นทางและปลายทางรายการ

และคุณสามารถตรวจสอบเนื้อหาของไฟล์ tar.gz โดยไม่ต้องคลายซิป:

tar -tf backup.tar.gz


2

--excludeนอกจากนี้คุณยังสามารถยกเว้นมากกว่าหนึ่งใช้เพียงหนึ่ง ดังตัวอย่างนี้:

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

ใน--exclude=คุณต้องกรอกชื่อไดเร็กทอรีโดยไม่มี/และต้องอยู่ระหว่างMyBackup.tar.gzและ/ home / user / public_html /

ไวยากรณ์คือ:

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

2

คำตอบที่ยอมรับไม่ได้ผลสำหรับฉันโดยเรียกใช้ unxutils tar บน windows10 แต่ฉันต้องใส่ไฟล์ / dirs เพื่อเก็บถาวรเป็นพารามิเตอร์สุดท้ายเช่นนี้:

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

จากนั้นก็ใช้งานได้



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

  1. =หลังจากexcludeเป็นตัวเลือก คุณสามารถใช้=แทนช่องว่างหลังคำสำคัญได้excludeหากต้องการ
  2. excludeต้องวางพารามิเตอร์ไว้ก่อนต้นทาง
  3. ความแตกต่างระหว่างชื่อโฟลเดอร์ที่ใช้ (เช่นที่ 1) หรือ * (เช่นที่ 2) คืออันที่ 2 จะรวมโฟลเดอร์ว่างไว้ในแพ็กเกจ แต่ชื่อที่ 1 จะไม่มี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.