ยูทิลิตี้เพื่อการกระจายไฟล์ไปยัง DVD อย่างเหมาะสมที่สุดหรือไม่?


11

ฉันมีไฟล์มีเดียมากมายที่ฉันต้องการบันทึกลงดีวีดี แต่เนื่องจาก DVD แต่ละแผ่นมีขนาดเพียง 4.5GB ฉันจึงต้องหาวิธีที่เหมาะสมในการจัดระเบียบไฟล์เพื่อใช้จำนวนดีวีดีขั้นต่ำ (มิฉะนั้นพื้นที่ว่างที่เหลืออยู่ในแต่ละไฟล์ DVD สามารถเพิ่มได้อย่างง่ายดาย) มีเครื่องมืออะไรบ้างที่ช่วยในเรื่องนี้?

เมื่อหลายปีก่อนมียูทิลิตี DOS ทำเช่นนี้กับฟล็อปปี้ดิสก์


1
ไม่ฉันไม่ต้องการค้นหาการบีบอัดและการแยก ฉันต้องการแจกจ่ายไฟล์แบบดั้งเดิม (ระบบไฟล์) เพื่อให้สามารถใช้งานดิสก์แต่ละแผ่นได้โดยตรง
Alex R

แค่รู้สึกว่านี่เป็นหน้าเว็บที่ดีสำหรับทุกคนที่ค้นหา: howtogeek.com/76264/…
Nav

คำตอบ:


3

ลองใช้ช่วง DVDฟรี:

DVD Span เป็นเครื่องมือสำรองสำหรับการเขียนเนื้อหาของโฟลเดอร์ขนาดใหญ่ไปยัง DVD หลาย ๆ แผ่น DVD Span สามารถกำหนดองค์กรที่ดีที่สุดของแต่ละดิสก์โดยอัตโนมัติเพื่อให้เหมาะสมกับปริมาณข้อมูลสูงสุดในจำนวนดิสก์ขั้นต่ำ DVDSpan เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการแบ็คอัพคอลเลกชันเพลงภาพถ่ายหรือแม้แต่ฮาร์ดดิสก์ทั้งหมดของคุณไปยัง DVD และเนื่องจากเป็นผู้ผลิตดีวีดี (หรือซีดี) ปกติจึงไม่จำเป็นต้องมีซอฟต์แวร์พิเศษในการอ่านหรือกู้คืนข้อมูลสำรองของคุณ


2

อ่าปัญหาเป้ ฉันเท่านั้นที่สามารถหาหนึ่งแก้ออนไลน์นี้ที่นี่ ขนาดเป้ของคุณจะเป็น 4.5GB และแต่ละแพ็คเก็ตจะเป็นขนาดไฟล์ของคุณ คุณจะต้องนวดเอาท์พุตเล็กน้อยเพื่อให้เข้ากับแอปพลิเคชันเฉพาะของคุณ แต่ควรจะสามารถใช้การได้ เคยชินนี้วิ่งเร็วมาก แต่เนื่องจากปัญหานี้เป็นเรื่องยาก


ใช่แน่นอนมันเป็นปัญหา NP-สมบูรณ์ แต่สำหรับโปรแกรมการปฏิบัตินี้เป็นทางออกที่แรงเร็วพอ :)
อเล็กซ์ R

1
นี้จะไม่เทียบเท่ากับปัญหาเป้ แต่ (1-D) ปัญหาการบรรจุผลิตภัณฑ์ซึ่งมีขั้นตอนวิธีการที่แน่นอน
Kenny Evitt

2

ภาพรวม

คำตอบที่เจฟฟ์ Shattock เป็นที่ถูกต้องที่นี้จะเทียบเท่า (หรือ isomorphic เป็นนักคณิตศาสตร์ที่เขียน) เป็นปัญหาการเพิ่มประสิทธิภาพ combinatorial แต่ก็เทียบเท่ากับ 1 มิติถังบรรจุปัญหาไม่ใช่ปัญหาเป้

โชคดีสำหรับคุณฉันมีรหัสที่จะแบ่งปันซึ่งจะช่วยแก้ปัญหานี้ให้คุณหรือคนอื่น ๆ ด้วยการเข้าถึงคอมพิวเตอร์ Windows ที่ติดตั้ง. NET Framework รุ่น 3.5 ขึ้นไปอย่างน้อย

โซลูชันที่หยาบ

  1. ขั้นแรกให้ดาวน์โหลดและติดตั้งLinqPad

  2. สองดาวน์โหลดแบบสอบถาม LINQPad ที่ฉันเพิ่งเขียน - นี่คือ linq (ha) ไปยังไฟล์ raw บันทึกเป็นไฟล์. linqและเปิดใน LINQPad

  3. เปลี่ยนพารามิเตอร์:

    นี่คือส่วนหนึ่งของรหัสสืบค้น LINQPad ที่คุณควรเปลี่ยน:

    int binSizeMb = 4476; // This is the (floor of the) total size of a DVD+R reported by CDBurnerXP. string rootFileFolderPath = @"F:\2006 - Polyester Pimpstrap Intergalactic Extravaganza multicam";

    เปลี่ยนbinSizeMbเป็นขนาดของ 'bin' ของคุณเช่น CD, DVD, ex int binSizeMb = 650;สำหรับซีดี

    หมายเหตุ - The binSizeMbมูลค่าถูกตีความว่าเป็นสิ่งที่บางครั้งเรียกว่าmebibyte ตรงกันข้ามกับวัยเด็กของฉันเมื่อทุกทวีคูณไบต์เป็น 'ไบนารี' บางครั้ง 'MB' ตอนนี้หมายถึง 'เมกะไบต์ทศนิยม' หรือ 1,000,000 ไบต์ตรงข้ามกับ 1,048,576 ไบต์ของ mebibyte (MiB) ซึ่งใช้ในรหัสของฉัน . หากคุณต้องการที่จะเปลี่ยนนี้เปลี่ยนสายในรหัสเพื่อconst int bytesPerMb = 1048576;const int bytesPerMb = 1000000;

    เปลี่ยนrootFileFolderPathเป็นพา ธ เต็มของโฟลเดอร์ที่มีไฟล์ที่คุณต้องการ 'แพ็คเป็นถังขยะ' เช่น string rootFileFolderPath = @"C:\MySecretBinFilesFolder";.

  4. เรียกใช้แบบสอบถามโดยการกดปุ่มF5หรือคลิกปุ่มดำเนินการที่ด้านบนซ้ายของแท็บแบบสอบถาม

ผล

รหัสแบบสอบถามจะระบุไฟล์ทั้งหมดในrootFileFolderPathโฟลเดอร์ซ้ำซ้ำซึ่งหมายความว่าจะรวมไฟล์ในโฟลเดอร์ย่อยทั้งหมดด้วย

จากนั้นจะสร้าง 'ถังขยะ' สำหรับไฟล์ที่ขนาดรวมของไฟล์ทั้งหมดในแต่ละถังน้อยกว่าหรือเท่ากับขนาดถังที่ระบุ

ในบานหน้าต่างผลลัพธ์ LINQPad คุณจะเห็นรายการสองรายการ

รายการแรกเป็นไฟล์ทั้งหมดที่พบซึ่งแสดงรายการตามลำดับที่ลดลงตามขนาด

รายการที่สองคือถังขยะที่สร้างขึ้นโดย 'การบรรจุไฟล์' พร้อมรายการไฟล์และขนาดรวมถึงขนาดที่เหลือของถังขยะ

ต่อไปนี้เป็นภาพหน้าจอที่แสดงรายการที่สองและสองช่องแรกที่สร้าง:

ภาพหน้าจอของ LINQPad แสดงรายการถังขยะ

การวิเคราะห์เคอร์เซอร์

ตามวิกิพีเดียอัลกอริทึมที่ฉันใช้ - กลยุทธ์การลดความพอดีครั้งแรก (FFD) - ไม่ควรเลวร้ายเกินไป รัฐ Wikipedia:

ในปี 2550 ได้รับการพิสูจน์แล้วว่าขอบเขต 11/9 OPT + 6/9 สำหรับ FFD นั้นแน่น

'OPT' หมายถึงกลยุทธ์ที่ดีที่สุด (เป็นสิ่งที่อาจเข้าถึงไม่ได้ไม่ใช่กลยุทธ์จริงใด ๆ โดยเฉพาะ)

จากความทรงจำที่ค่อนข้างคลุมเครือของฉันของคำศัพท์ทางคณิตศาสตร์ที่เกี่ยวข้องนี้ควรหมายความว่ากลยุทธ์ FFD ควรบรรจุไอเท็มลงใน ~ 1.22 เท่าของจำนวนถังขยะที่กลยุทธ์ที่เหมาะสมที่สุด ดังนั้นกลยุทธ์นี้อาจบรรจุรายการเป็น 5 ถังขยะแทนที่จะเป็น 4 ฉันสงสัยว่าประสิทธิภาพจะใกล้เคียงกับความเหมาะสมที่สุดยกเว้นขนาดรายการ 'พยาธิวิทยา' ที่เฉพาะเจาะจง

บทความวิกิพีเดียเดียวกันยังระบุว่ามี"อัลกอริทึมที่แน่นอน" ฉันอาจตัดสินใจที่จะใช้สิ่งนั้นด้วย ฉันจะต้องอ่านกระดาษที่อธิบายอัลกอริทึมก่อน


0

คุณสามารถใช้เครื่องมือบีบอัดใด ๆ ที่อนุญาตให้แยกเก็บถาวรฉันคิดว่า


1
การบีบอัดไม่ใช่สิ่งที่ฉันกำลังมองหา ทำให้ยุ่งยากเกินไปในการเข้าถึงไฟล์
Alex R

0

คุณสามารถเลือกหนึ่งในตัวแปรของโปรแกรมในคู่มือ Hitchhiker ไปที่ Haskellบางทีหลังจากทำงานผ่านบทช่วยสอนบางส่วนนั้น บทช่วยสอนถูกเขียนขึ้นเพื่อแก้ไขปัญหาของคุณในการแจกจ่ายสิ่งต่าง ๆ ลงบนดิสก์หลาย ๆ ตัวโดยวิธีการแก้ปัญหานั้นได้รับการปรับปรุงให้เพิ่มขึ้นตามที่อธิบายไว้ในตอนต่อไปของบทที่ 3 :

เพียงพอเบื้องต้นแล้ว ไปเก็บซีดีกันบ้าง

ในขณะที่คุณอาจได้รับการยอมรับปัญหาของเราเป็นคลาสสิก มันถูกเรียกว่า"ปัญหาเป้" ( google มันขึ้นมาถ้าคุณไม่ทราบว่ามันคืออะไรมีมากกว่า 100,000 ลิงก์)

เริ่มจากทางออกโลภ ...

แนวคิดเพิ่มเติม: คำถามที่เกี่ยวข้อง

นี่คือคำถามที่คล้ายกัน (แม้ว่าจะไม่เหมือนกัน: ยังไม่ได้รับการขอให้ปรับให้เหมาะสม) ซึ่งคุณอาจพบวิธีแก้ไขปัญหา / โปรแกรมที่มีประโยชน์มากขึ้นสำหรับงานของคุณ (หากพวกเขาจะโพสต์):

คำแนะนำบางอย่างสำหรับการทำความเข้าใจการเขียนโปรแกรมในบทช่วยสอนที่แนะนำ

โดยทั่วไปรหัส Haskell นั้นค่อนข้างแสดงออก (เนื่องจาก Haskell เป็นภาษาสำหรับการเขียนโปรแกรมในระดับสูงที่เป็นนามธรรม) และดังนั้นจึงสามารถเข้าใจได้ง่าย

เมื่อดูที่รหัสของหนึ่งในโซลูชันโปรดจำไว้ว่าโครงสร้างระดับสูงสุดของโปรแกรมที่เราต้องการเขียนนั้นค่อนข้างง่ายดังบทที่ 1ของบทช่วยสอน:

ทีนี้ลองคิดดูสักครู่ว่าโปรแกรมของเราจะทำงานอย่างไรและแสดงเป็น pseudocode:

main = Read list of directories and their sizes.
       Decide how to fit them on CD-Rs.
       Print solution.

ฟังดูสมเหตุสมผลหรือไม่ ฉันคิดอย่างนั้น

ลองทำให้ชีวิตของเราง่ายขึ้นเล็กน้อยและสมมติว่าตอนนี้เราจะคำนวณขนาดไดเรกทอรีบางแห่งนอกโปรแกรมของเรา (เช่นด้วย " du -sb *") และอ่านข้อมูลนี้จาก stdin

และดูเพิ่มเติมในส่วนของการแก้ปัญหา



0

นอกจากนี้ลองใช้ Discfit ซึ่งเลือกไฟล์และไดเรกทอรีเพื่อคัดลอกไปยังดิสก์ต่างๆ:

https://sourceforge.net/projects/discfit/


คำตอบที่มีลิงก์เท่านั้นไม่ใช่คำตอบที่ดี เมื่อแนะนำซอฟต์แวร์โปรดทำตามโครงร่างนี้ คุณควรขยาย ( แก้ไข ) คำตอบของคุณเพื่อให้ดีขึ้น เช่นคำตอบของคุณไม่เป็นไปตามข้อกำหนด "ให้ภาพรวมคร่าวๆของวิธีใช้ผลิตภัณฑ์ ... "
Kamil Maciorowski

จากเว็บไซต์: "จัดเรียงชุดใหญ่ของไฟล์หรือไดเรกทอรีเพื่อใช้จำนวนสื่อ phisycal ขั้นต่ำ (CD, DVD, BD ... ) คุณสามารถลากชุดผลลัพธ์ไปยังซอฟต์แวร์การเบิร์น (Nero, DVD) -ไป...)".
Anton

เกือบจะ เพื่อให้คำตอบดีขึ้นคุณควรแก้ไขคำตอบ
Kamil Maciorowski

ฉันไม่เห็นอะไรที่จะเพิ่มนอกเหนือไปจากสิ่งที่ผู้เขียนเขียน หนึ่งอาจจะเพียงแค่ไปที่เว็บไซต์และสอบถาม
Anton

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