วิธีที่เร็วที่สุดในการรวมไฟล์หลาย ๆ ไฟล์ไว้ในที่เดียว (tar czf ช้าเกินไป)


23

ขณะนี้ฉันกำลังทำงานtar czfเพื่อรวมไฟล์สำรองข้อมูล ไฟล์อยู่ในไดเรกทอรีเฉพาะ

แต่จำนวนไฟล์เพิ่มขึ้น การใช้tzr czfเวลานานเกินไป (มากกว่า 20 นาทีและนับ)

ฉันต้องรวมไฟล์ต่าง ๆ ให้เร็วขึ้นและปรับขนาดได้

ฉันได้พบgenisoimage, และreadom mkisofsแต่ฉันไม่รู้ว่าเร็วที่สุดและมีข้อ จำกัด อะไรบ้างสำหรับแต่ละข้อ


ฉันสงสัยว่ามีการtarแนะนำค่าใช้จ่ายที่สำคัญใด ๆ การอ่านไฟล์เป็นการดำเนินการที่แพง คุณควรปรับเปลี่ยนวิธีการจัดเก็บไฟล์ของคุณหรือใช้วิธีการที่ต่างไปจากเดิมอย่างสิ้นเชิง (คัดลอกระบบไฟล์ทั้งหมด) เราไม่สามารถช่วยคุณได้มากนักโดยไม่ทราบวิธีจัดระเบียบไฟล์ของคุณ
Gilles 'หยุดความชั่วร้าย' ใน

5
เมานต์ FS ของคุณด้วยตัวเลือก "noatime" ซึ่งอาจเพิ่มความเร็วในการปฏิบัติการ IO
Rufo El Magufo

2
+1 ในเวลากลางวันมันทำให้เกิดความแตกต่างอย่างมีนัยสำคัญ โดยเฉพาะอย่างยิ่งสำหรับฮาร์ดไดรฟ์ปกติและเพียงเพื่อลดการเขียนภายนอก
JM Becker

คำตอบ:


25

คุณควรตรวจสอบว่าเวลาส่วนใหญ่ของคุณถูกใช้ไปกับ CPU หรือใน I / O ทั้งสองวิธีมีวิธีในการปรับปรุง:

ตอบ: อย่าบีบอัด

คุณไม่ได้พูดถึง "อัด" ในรายการของคุณของความต้องการจึงพยายามวาง "Z" tar cfจากรายการข้อโต้แย้งของคุณ: นี่อาจเป็นสิ่งที่เร็วขึ้น

มีเทคนิคอื่น ๆ เพื่อเร่งกระบวนการเช่นใช้ "-N" เพื่อข้ามไฟล์ที่คุณสำรองไว้ก่อนหน้านี้

B: สำรองข้อมูลพาร์ติชันทั้งหมดด้วยวว

หรือหากคุณสำรองข้อมูลทั้งพาร์ติชันให้คัดลอกอิมเมจของดิสก์ทั้งหมดแทน สิ่งนี้จะช่วยประหยัดการประมวลผลและเวลาในการใช้หัวดิสก์จำนวนมาก tarและโปรแกรมอื่น ๆ ที่ทำงานในระดับที่สูงกว่าจะมีค่าใช้จ่ายในการอ่านและประมวลผลรายการไดเรกทอรีและ inodes เพื่อค้นหาว่าเนื้อหาไฟล์อยู่ที่ใดและต้องการทำ head head diskมากขึ้นโดยอ่านแต่ละไฟล์จากที่ต่าง ๆ จากดิสก์

หากต้องการสำรองข้อมูลพื้นฐานให้เร็วขึ้นให้ใช้:

dd bs=16M if=/dev/sda1 of=/another/filesystem

(สิ่งนี้ถือว่าคุณไม่ได้ใช้ RAID ซึ่งอาจเปลี่ยนแปลงสิ่งเล็กน้อย)


2
อย่าบีบอัด : หรือใช้pigzหากมีอยู่ในระบบมากกว่าหนึ่งโปรเซสเซอร์
Rufo El Magufo

LZ4 / zstd และอัลกอริทึมการบีบอัดข้อมูลที่คล้ายกันอาจยังคงคุ้มค่าที่จะตรวจสอบว่าพวกเขาสามารถเร่งความเร็วของกระบวนการโดยการเขียนข้อมูลน้อยลง (ถ้าข้อมูลบีบอัดได้เลย) ในขณะที่ลำดับความสำคัญเร็วขึ้นในการบีบอัด ระดับและอัลกอริธึมนอกจากนี้ man gzip ยังกล่าวว่า "ระดับการบีบอัดเริ่มต้นคือ -6" ดังนั้นจึงมีพื้นที่สำหรับการปรับปรุง
LiveWireBT

8

ในการทำซ้ำสิ่งที่คนอื่นพูด: เราจำเป็นต้องรู้เพิ่มเติมเกี่ยวกับไฟล์ที่ถูกสำรอง ฉันจะไปกับสมมติฐานบางอย่างที่นี่

ผนวกเข้ากับไฟล์ tar

หากไฟล์ถูกเพิ่มเข้าในไดเรกทอรีเท่านั้น (กล่าวคือไม่มีการลบไฟล์) ตรวจสอบให้แน่ใจว่าคุณผนวกไฟล์ tar ที่มีอยู่แทนที่จะสร้างไฟล์ใหม่ทุกครั้ง คุณสามารถทำได้โดยการระบุชื่อไฟล์เก็บถาวรที่มีอยู่ในtarคำสั่งของคุณแทนชื่อใหม่ (หรือลบเก่า)

เขียนไปยังดิสก์อื่น

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

อย่าบีบอัด

เพียงทำซ้ำสิ่งที่ @Yves พูด หากไฟล์สำรองของคุณถูกบีบอัดอยู่แล้วคุณไม่จำเป็นต้องบีบอัดอีกครั้ง คุณจะสูญเสียรอบ CPU


4

ใช้ tar กับ lz4 crompression เหมือนใน

tar cvf - myFolder | lz4 > myFolder.tar.lz4

ให้สิ่งที่ดีที่สุดแก่คุณทั้งสองโลก (การบีบอัดและความเร็วค่อนข้างดี) คาดว่าจะมีอัตราส่วนการบีบอัดประมาณ 3 ถึงแม้ว่าข้อมูลของคุณมีไฟล์ไบนารี

อ่านเพิ่มเติม: การเปรียบเทียบอัลกอริทึมการบีบอัด วิธี tar กับ lz4


1
สิ่งที่ StefanQ ยังคงมีอยู่คือคุณต้องเลือกคอมเพรสเซอร์ของคุณขึ้นอยู่กับว่าคอขวดของคุณอยู่ที่ไหน นอกจากนี้โปรดจำไว้ว่าคุณสามารถบันทึกผลลัพธ์ไปยังอุปกรณ์เก็บข้อมูลทางกายภาพที่แตกต่างกันหรือแม้กระทั่งเครื่องระยะไกล!
Lester Cheung

2

ฉันประหลาดใจที่ไม่มีใครพูดถึงการถ่ายโอนข้อมูลและเรียกคืน มันจะมากเร็วกว่าDDถ้าคุณมีพื้นที่ว่างในระบบแฟ้ม

โปรดทราบว่าขึ้นอยู่กับระบบไฟล์ที่เป็นปัญหาคุณอาจต้องการเครื่องมือที่แตกต่างกัน:

  • ext2 / 3/4 - ดัมพ์และกู้คืน ( ดัมพ์แพ็กเกจใน RH / Debian)
  • XFS - xfsdumpและxfsrestore (แพ็คเกจxfsdumpใน RH / Debian)
  • ZFS - zfs sendและzfs recv
  • BTRFS - btrfs sendและbtrfs ได้รับ

โปรดทราบว่าบางโปรแกรมไม่มีการบีบอัดในตัว (ทั้งหมดยกเว้นดัมพ์) - ไปป์ที่ stdout และใช้ pigz ตามต้องการ ;-)

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