ฉันต้องสร้างไฟล์เก็บถาวรด้วยคำสั่ง gzip (ไม่ใช่ tar - มันจำเป็น) และไฟล์เก็บถาวรควรมีไฟล์จากไดเรกทอรีอื่น - ตัวอย่างเช่น / etc ฉันพยายามใช้คำสั่ง
gzip myetc.gz /etc
แต่มันไม่ทำงาน
ฉันต้องสร้างไฟล์เก็บถาวรด้วยคำสั่ง gzip (ไม่ใช่ tar - มันจำเป็น) และไฟล์เก็บถาวรควรมีไฟล์จากไดเรกทอรีอื่น - ตัวอย่างเช่น / etc ฉันพยายามใช้คำสั่ง
gzip myetc.gz /etc
แต่มันไม่ทำงาน
คำตอบ:
Gzip ทำงานได้กับไฟล์เดียวหรือสตรีม - ข้อมูลที่ส่งไปยัง gzip ดังนั้นก่อนอื่นคุณต้องสร้างไฟล์เดียวเช่น tar และจากนั้นคุณสามารถ gzip นั้น ตัวเลือกอื่นคือการ gzip แต่ละไฟล์ทั้งหมดแล้วนำไปไว้ในไฟล์เดียว
โซลูชันทั้งสองนี้โง่และไม่ควรใช้ คุณควรใช้ tar พร้อมตัวเลือกการบีบอัดในตัวและทำทั้งหมดในคำสั่งเดียว
.tar.gz
...
cat filename | grep blah
โง่ มันยังน้อยกว่าความเหมาะสมเพราะมันจะใช้พื้นที่ระหว่างกาลขนาดใหญ่ ฉันไม่รู้ว่าฉันจะเรียกมันว่าโง่เท่าที่ไม่น่าเชื่อถือ Suboptimal และโดยทั่วไปแล้วก็น่าเกลียด งี่เง่าก็ทำงานเช่นกัน
fork()
เป็นวิธีที่จะเป็นไปตามที่มันไม่ได้เกี่ยวข้องกับการที่ไร้ประโยชน์
gzip
ทำงานกับไฟล์ได้ไม่ใช่ไดเรกทอรี ดังนั้นเพื่อสร้างการเก็บถาวรของไดเรกทอรีที่คุณต้องใช้tar
(ซึ่งจะสร้าง tarball เดียวจากหลายไฟล์):
tar cvf myetc.tar /etc
หรือสำหรับไฟล์เก็บถาวร gzipped:
tar cvzf myetc.tar.gz /etc
cd / ; tar cf - ./etc | gzip -c - > myetc.tar.gz
(หากคุณสงสัยว่าทำไมฉันถึง tar "./etc" แทนที่จะเป็น "/ etc" เป็นเพราะในระบบเก่าเหล่านั้นเมื่อใช้ tar xvf มันจะส่งออกไปยัง / etc และเขียนทับมัน ... [หรือคุณต้องใช้ "pax" ในกรณีนั้น]) คำสั่งผกผันคือการแยกที่เก็บถาวรภายใต้ "/ ที่ไหนสักแห่ง": cd /somewhere ; gzip -dc < /the/location/of/myetc.tar.gz | tar xvf -
หากคุณไม่มี tar จริง ๆ คุณสามารถใช้ gzip เพื่อสร้างข้อมูลสำรองของไดเรกทอรีโดยใช้ตัวเลือก (-r - เรียกซ้ำ) แต่อาจไม่ใช่สิ่งที่คุณต้องการ ...
ก่อนอื่นคุณจะต้องคัดลอกไดเรกทอรีของคุณไปยังชื่ออื่นหากคุณต้องการให้ไดเรกทอรีเดิมไม่สามารถแตะต้องได้
#cp -a directory my_gzip_alone_backup
ประการที่สองคุณจะบีบอัดไฟล์ทั้งหมดในไดเรกทอรีซ้ำ (-r)
#gzip -r my_gzip_alone_backup
ทีนี้มาดูใน my-gzip-alone-backup คุณจะไม่มีไฟล์เดียว myfile.gz ตามที่คุณคาดหวัง แต่ไฟล์ gziped จำนวนมากจะถูกเรียกซ้ำ แต่มันไม่ดีที่จะทำเช่นนั้นกับ symlink ...
เพื่อคลายการบีบอัดไดเรกทอรีสามารถใช้ตรรกะเดียวกันกับ gunzip
อีกวิธีหนึ่งคือการแปลงไดเรกทอรีเป็นไฟล์เดียวถ้าคุณไม่มี tar ทำเช่นนั้น แต่มี dd util เช่นที่แสดงในโพสต์นี้: /ubuntu/626634/converting-a แฟ้ม: เพื่อไดเรกทอรี
gzip
zip
ไม่ใช่ เป็นเครื่องมือต่าง ๆ ที่ทำงานแตกต่างกัน