การสร้างโฟลเดอร์บีบอัด HFS + อัตโนมัติ


17

ฉันต้องการตั้งค่าวิธีอัตโนมัติสำหรับการเก็บถาวรไฟล์ใน OS X Lion โดยการเก็บถาวรฉันหมายถึงการใช้คุณสมบัติการบีบอัด HFS + ในโฟลเดอร์เฉพาะและทำให้ทุกไฟล์ที่ฉันย้ายเข้าสู่โฟลเดอร์นี้ถูกบีบอัดโดยอัตโนมัติ ฉันกำลังคิดที่จะใช้สิ่งนี้เพื่อเก็บไฟล์ขนาดใหญ่ที่ฉันไม่ได้ใช้บ่อยๆ แต่ไม่ต้องสร้างคลังข้อมูลบีบอัดด้วยตนเองและต้องแตกไฟล์ออกในกรณีที่ฉันต้องการ

ฉันเจอเครื่องมือafsctool ( brew install afsctool) ซึ่งสามารถใช้การบีบอัด HFS + กับโฟลเดอร์และไฟล์ทั้งหมดในนั้นผ่านทางบรรทัดคำสั่ง แต่ฉันเชื่อว่าจะไม่เปิดใช้งานการบีบอัดไฟล์ในอนาคตที่ย้ายไปยังโฟลเดอร์

การย้ายไฟล์ด้วยตนเองและการรันคำสั่งบรรทัดคำสั่งซ้ำ ๆ ไม่สะดวก ดังนั้นฉันเดาว่าฉันจะต้องใช้ Automator / AppleScript เพื่อดำเนินการนี้ในสองขั้นตอน:

  1. สร้างสคริปต์ที่อนุญาตให้ย้ายไฟล์ใด ๆ ไปยังโฟลเดอร์เฉพาะ เป็นการดีที่ตัวเลือกชื่อไฟล์เก็บถาวรสามารถเข้าถึงได้ผ่านคลิกขวาบนไฟล์
  2. เรียกใช้คำสั่งบรรทัดคำสั่งafsctool -c <folder>เพื่อเปิดใช้งานการบีบอัดไฟล์ใหม่ทั้งหมดที่เพิ่งย้ายไปยังโฟลเดอร์

ฉันไม่มีประสบการณ์ในการใช้ Automator หรือ AppleScript ดังนั้นฉันต้องการทราบว่าจะเริ่มต้นอย่างไรโดยเฉพาะอย่างยิ่งเกี่ยวกับวิธีเพิ่มแอคชันใน Finder และวิธีเรียกใช้เครื่องมือบรรทัดคำสั่งจากสคริปต์


อัพเดท

@kopischke คู่มือทำงานได้ดี สคริปต์ของตัวเองที่ผมทำอยู่บนพื้นฐานของคำตอบโดย @ Mark แต่ใช้แทนafsctool -c <folder> dittoนี่คือสคริปต์: มันควรจะใส่เข้าไป~/Library/Scripts/Folder Action Scripts

on adding folder items to this_folder after receiving these_items
repeat with i from 1 to number of items in these_items
    try
        set this_item to item i of these_items
        tell application "Finder"
            set the file_name to the POSIX path of this_item
        end tell
        set cmd to "/usr/local/bin/afsctool -c " & file_name
        do shell script cmd
    on error the error_message number the error_number
        display dialog "Error: " & the error_number & ". " & the error_message buttons {"OK"} default button 1

    end try
end repeat
end adding folder items to

เนื่องจาก afsctool ที่ MobileMe ไม่สามารถใช้งานได้อีกต่อไปจึงมีdiimdeep / afsctoolที่ GitHub ซึ่งปัจจุบัน 1.6.4

นอกจากนี้afsctool ใน MacPortที่พวกเขาตระหนักถึงปัญหา MobileMe แต่อาจไม่รู้แหล่งที่มาที่ GitHub


เป็นคำถามที่ดี อัตราการบีบอัดใดสามารถคาดหวังจากนี้
n1000

คำตอบ:


6

คำตอบสำหรับคำถามของคุณมีสองส่วน

  1. วิธีเพิ่มรายการเมนูบริบท Finder ลงในไฟล์“ เก็บถาวร”:ทำได้ง่ายโดยสร้างบริการอัตโนมัติ (Mac OS X Automation มีภาพรวมที่ดีเกี่ยวกับสิ่งที่บริการ Automator ที่แนะนำใน OS X 10.6 สามารถทำได้):

    • เรียกใช้ Automator เลือก "บริการ" เมื่อได้รับแจ้งสำหรับประเภทของเวิร์กโฟลว์ที่คุณต้องการสร้าง
    • เลือก“ ไฟล์หรือโฟลเดอร์” ในรายการแบบเลื่อนลง“ บริการรับ” (คำแปลโดยประมาณ - ฉันใช้ระบบเยอรมัน) อีกทางเลือกหนึ่งให้ตั้ง“ ใน” เลื่อนลงไปที่“ Finder”
    • เพิ่มการกระทำ“ รับรายการ Finder ที่เลือก”
    • เพิ่มการกระทำ“ ย้ายรายการค้นหา” ด้านล่างและดำเนินการกับโฟลเดอร์เป้าหมายของคุณ
    • บันทึกบริการของคุณในตำแหน่งเริ่มต้น ( ~/Library/Services) เป็น "เก็บถาวร"

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

  2. วิธีทำการบีบอัดไฟล์ HFS + ให้กับโฟลเดอร์เป้าหมายของคุณโดยอัตโนมัติ:มีหลายวิธีที่จะทำให้สำเร็จ แน่นอนคุณสามารถเพิ่มขั้นตอนนั้นในบริการเก็บถาวรของคุณ ข้อเสียของวิธีการนี้คือจะไม่มีการบีบอัดข้อมูลหากไฟล์หรือโฟลเดอร์ถูกเพิ่มลงในโฟลเดอร์ภายนอกบริการแน่นอน วิธีที่ดีกว่าคือให้ทุกอย่างในโฟลเดอร์ถูกบีบอัดโดยอัตโนมัติโดยไม่ต้องพึ่งพาเวกเตอร์รายการหรือการโต้ตอบกับผู้ใช้

    วิธีหนึ่งคือตามที่คุณค้นพบว่าให้ยูทิลิตี้การบีบอัดทำงานทุกครั้งที่มีการเพิ่มไฟล์หรือโฟลเดอร์ลงในโฟลเดอร์ที่จับตาดูของคุณ:

    • วิธีเรียกใช้งานเชลล์ยูทิลิตี้ใน AppleScript คือdo shell scriptคำสั่ง - ดูเอกสารที่เชื่อมโยง
    • วิธี inbuilt ในการใช้ประโยชน์จากเหตุการณ์ระบบไฟล์ใน AppleScript คือการใช้การกระทำโฟลเดอร์ซึ่งเรียก AppleScripts เกี่ยวกับการเปลี่ยนแปลงในโฟลเดอร์ที่จับตาดู เหตุการณ์ใดที่สคริปต์ตอบสนองถูกกำหนดโดยสคริปต์เองผ่านตัวจัดการที่มีให้ (ตัวอย่างเช่นสคริปต์ในคำตอบของ Markมีตัวจัดการadding folder items- หมายถึงมันตอบสนองกับไฟล์ที่เพิ่มใหม่ดูคู่มือภาษา Applescript สำหรับการอ้างอิงแบบเต็ม ) . พบการกำหนดค่าการดำเนินการของโฟลเดอร์ในเมนูบริการของโฟลเดอร์ใน Finder (ในเมนูบริบทด้วย)
    • เป็นทางเลือกที่องคาพยพที่จะกระทำการโฟลเดอร์เป็นพอลคิมเฮเซล (ซอฟต์แวร์เชิงพาณิชย์) ซึ่งจะเพิ่มการประมวลผลตามกฎและมากมายเหลือเฟือของเกณฑ์สำหรับการจัดการเหตุการณ์ระบบแฟ้มที่ไปไกลเกินกว่าสิ่งที่คุณสามารถประสบความสำเร็จกับการกระทำโฟลเดอร์ง่าย - คุณอาจต้องการที่จะตรวจสอบ Hazel ถ้าคุณ วางแผนในการทำสิ่งที่ซับซ้อนมากขึ้นตามแนวของสิ่งที่คุณวางแผนตอนนี้

    อีกทางเลือกหนึ่งของวิธีการเขียนสคริปต์ทั้งหมดคือการใช้Clustersของ LateNiteSoft ซึ่งเป็นซอฟต์แวร์เชิงพาณิชย์อีกตัวที่ไม่ทำอะไรเลยนอกจากจะนำไปใช้โดยอัตโนมัติ


ขอบคุณสำหรับคำตอบ. ฉันจะลองใช้ตัวเลือกในการเรียกใช้ AppleScript เป็น Folder Action ฉันตระหนักถึงกลุ่มและสิ่งที่ฉันพยายามที่จะบรรลุคือว่า (กลุ่มคนยากจน);)
Boj

@williamvoor: ดีใจถ้าสามารถช่วยได้ คุณจะยอมรับคำตอบไหม? นั่นคือปุ่มเครื่องหมายถูก :)
kopischke

โซลูชันสคริปต์การดำเนินการโฟลเดอร์ทำงาน สคริปต์ตัวเองฉันวางคำถาม
Boj

5

@williamvoor: สคริปต์ล้มเหลวด้วย filepaths ซึ่งมีช่องว่างเนื่องจากset the file_name to the POSIX path of this_itemไม่สามารถหลบหนีได้อย่างถูกต้อง แก้ไขบรรทัดที่เหมาะสมของรหัสของคุณเป็น:

set cmd to "/Users/sn/bin/bin/afsctool -c \"" & file_name & "\""

คำอธิบาย : อาร์กิวเมนต์ file_name ของ afcstool ล้อมรอบด้วยเครื่องหมายอัญประกาศซึ่งตัวเองในรหัส AppleScript จะถูกหลีกเลี่ยงเพื่อที่จะส่งมอบอย่างถูกต้องให้กับสภาพแวดล้อมบรรทัดคำสั่ง

Meta-topic : เมื่อฉันขาดคะแนนชื่อเสียงฉันไม่สามารถแสดงความคิดเห็นในตำแหน่งที่เหมาะสม (= ถึง @williamvoor โพสต์ของตัวเอง) ดังนั้นฉันโพสต์มันเป็นคำตอบของตัวเองและขอให้คุณแก้ไขรหัสในโพสต์ของคุณ และยกนิ้วให้ฉันเพื่อที่ฉันจะได้รับชื่อเสียงที่เพียงพอทำให้ฉันสามารถแสดงความคิดเห็นโดยตรงในอนาคต ขอบคุณ!

หลังจากนั้นฉันหรือผู้ดูแลระบบสามารถลบโพสต์ของฉันได้


3

เธรดนี้ให้ applescript เพื่อใช้เป็นการกระทำของโฟลเดอร์ซึ่งจะบีบอัดไฟล์เมื่อมีการเพิ่ม

on adding folder items to thisFolder after receiving theseItems
    set destinationPath to "/POSIX path/to/destination/folder"
    repeat with thisItem in theseItems
        set cmd to "ditto --hfsCompression " & quoted form of POSIX path of thisItem & " " & destinationPath
        do shell script cmd with administrator privileges
    end repeat
end adding folder items to

ไม่ทราบเกี่ยวกับ--hfsCompressionตัวเลือกในditto- ดี! แต่คำตอบของคุณไม่ได้ตอบคำถามของ OP เกี่ยวกับการรวมสคริปต์การย้ายลงใน Finder มันจะย้ายไฟล์ที่ถูกวางลงในโฟลเดอร์เก็บถาวรไปยังโฟลเดอร์อื่น (ซึ่งฉันคิดว่าน่าจะเป็นการเปลี่ยนเส้นทางมากกว่าที่ OP วางแผนไว้) ทุกครั้ง (น่ารำคาญในบริบทอัตโนมัติ)
kopischke

0

เครือข่ายวิสาหกิจ

... ใช้ประโยชน์จากเทคโนโลยีการบีบอัดไฟล์ใน Mountain Lion, Lion และ Snow Leopard ...

การบีบอัดโฟลเดอร์ MoreSpace

…การบีบอัด HFS + มีผลดีที่สุดในรูปแบบไฟล์ที่ไม่บีบอัดเช่นเอกสารข้อความและข้อมูลฐานข้อมูลและกล่องจดหมาย ขนาดกล่องจดหมายเมลทั่วไปสามารถลดได้สูงสุด 50% ...

การตั้งค่า

ในสองเรื่องนี้ฉันพบว่ากลุ่มผู้ใหญ่และใช้งานง่ายกว่า - น่าจะเหมาะกับคำถามนี้มากกว่า


ดำเนินการต่อด้วยความระมัดระวัง

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


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