วิธีสร้าง tar เก็บถาวรในไดเรกทอรีอื่น?


38

ฉันต้องการสร้างไฟล์เก็บถาวร tar ในไดเรกทอรีอื่นแทนที่จะเป็นไดเรกทอรีปัจจุบัน

ฉันลองคำสั่งนี้:

tar czf file.tar.gz file1 -C /var/www/

แต่มันสร้างไฟล์เก็บถาวรในไดเรกทอรีปัจจุบัน ทำไม?


3
คุณดูเหมือนจะเข้าใจผิดความหมายของ-C(ซึ่งไม่แปลกที่เอกสารจะคลุมเครือ) สำหรับรายละเอียดดูserverfault.com/q/416002/86283
NN

คำตอบ:


47

วิธีที่ง่ายถ้าคุณไม่ต้องการใช้-Cเพื่อบอกtarให้เปลี่ยนเป็นไดเร็กทอรีอื่นโดยเฉพาะคือการระบุพา ธ เต็มไปยังไฟล์เก็บถาวรบนบรรทัดคำสั่ง จากนั้นคุณสามารถอยู่ในไดเรกทอรีใดก็ได้ที่คุณต้องการสร้างโครงสร้างไดเรกทอรีที่คุณต้องการภายในไฟล์เก็บถาวร

ต่อไปนี้จะสร้างการเก็บถาวร/var/www/file.tar.gzและวางfile1จากไดเรกทอรีปัจจุบัน (สิ่งที่เกิดขึ้น) ในนั้นโดยไม่มีข้อมูลเส้นทางในการเก็บถาวร

tar czf /var/www/file.tar.gz file1

เส้นทาง (ทั้งที่เก็บถาวรไฟล์องค์ประกอบหรือทั้งสองอย่าง) สามารถเป็นแบบสัมพัทธ์ได้เช่นกัน หากfile1อยู่ใน/tmpคุณอยู่/var/spoolและต้องการสร้างที่เก็บถาวร/var/wwwคุณสามารถใช้สิ่งต่อไปนี้:

tar czf ../www/file1.tar.gz /tmp/file1

มีธีมให้เลือกหลายแบบนับล้าน แต่คุณควรเริ่มต้นใช้งาน เพิ่มการvตั้งค่าสถานะถ้าคุณต้องการดูสิ่งที่tarทำจริง


1
คุณสามารถใช้เส้นทางสัมพัทธ์
NN

@NN อย่างแน่นอน แต่เนื่องจากเราไม่รู้ว่า$PWDมันคืออะไรมันจึงปลอดภัยที่สุดที่จะใช้เส้นทางสัมบูรณ์ในตัวอย่าง
CVn

อันที่จริงฉันแค่คิดว่ามันเหมาะสมที่จะแสดงให้เห็นว่ามันเป็นตัวเลือกที่พร้อมใช้งานสำหรับการแก้ปัญหา
NN

วิธีการที่เส้นทางของfile1ในการเก็บ tar /tmpจะ นี่อาจเป็นหรืออาจไม่ใช่สิ่งที่คุณคาดหวัง
mouviciel

8

ฉันเปลี่ยนข้อมูลที่ถูกบีบอัดเป็นสตรีม (-) และเปลี่ยนชื่อและค้นหา (>) ได้อย่างง่ายดายทุกที่ที่ฉันเลือก (นอกจากนี้ฉันมักจะทิ้งเส้นทางสัมพัทธ์ (./) เสมอดังนั้นจึงง่ายต่อการจัดการเมื่อไม่บีบอัด)

tar -cvf - ./dir-to-compress/* > /location-of-new-file/filename.tar

แต่นั่นไม่ได้ช่วยอะไรกับไฟล์แต่ละไฟล์และ-Cมันก็เป็นไปได้มากกว่า (และสั้นกว่า)
Mahmoud Al-Qudsi

3

ฉันคิดว่ามันควรจะเป็น:
tar czf file.tar.gz -C /var/www/ file1

ซึ่งใช้งานได้สำหรับฉัน มันบอกให้เปลี่ยนไดเรกทอรีแล้วเลือกไฟล์


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