एक स्वचालित HFS + संपीड़ित फ़ोल्डर बनाना


17

मैं ओएस एक्स लायन में फाइलों को संग्रह करने के लिए एक स्वचालित तरीका स्थापित करना चाहूंगा। संग्रह करने से मेरा मतलब है कि एक विशिष्ट फ़ोल्डर पर HFS + संपीड़न सुविधा का उपयोग करना, और इस फ़ोल्डर में जाने वाली प्रत्येक फ़ाइल को स्वचालित रूप से संपीड़ित करना। मैं इसे बड़ी फ़ाइलों को संग्रहित करने के लिए उपयोग करने के बारे में सोच रहा हूं जो मैं अक्सर उपयोग नहीं करता हूं, लेकिन मैन्युअल रूप से संपीड़ित अभिलेखागार बनाने और उन्हें मेरी आवश्यकता के मामले में निकालने के लिए बिना।

मैं उपकरण afsctool ( brew install afsctool) में आया था , जो कमांड-लाइन के माध्यम से, एक फ़ोल्डर में HFS + संपीड़न और उसमें सभी फाइलें लागू कर सकता है। लेकिन मेरा मानना ​​है कि यह फ़ोल्डर में स्थानांतरित भविष्य की फ़ाइलों के संपीड़न को सक्रिय नहीं करता है।

फ़ाइलों को मैन्युअल रूप से ले जाना और कमांड लाइन निर्देश को बार-बार चलाना असुविधाजनक है। इसलिए मैं अनुमान लगा रहा हूं कि मुझे इसे दो चरणों में निष्पादित करने के लिए ऑटोमेकर / AppleScript उपयोग करने की आवश्यकता होगी:

  1. एक स्क्रिप्ट बनाएं जो किसी भी फाइल को एक विशिष्ट फ़ोल्डर में ले जाने की अनुमति देता है। आदर्श रूप से पुरालेख नाम का एक विकल्प फ़ाइल पर राइट-क्लिक के माध्यम से पहुँचा जा सकता है।
  2. एक कमांड लाइन निर्देश चलाएं afsctool -c <folder>, बस फ़ोल्डर में स्थानांतरित सभी नई फाइलों पर संपीड़न को सक्रिय करने के लिए।

मुझे ऑटोमेकर या AppleScript का उपयोग करने का कोई अनुभव नहीं है, इसलिए मैं जानना चाहता हूं कि कहां से शुरू करना है, विशेष रूप से फाइंडर में क्रियाओं को कैसे जोड़ना है, और स्क्रिप्ट से कमांड लाइन टूल कैसे चलाना है।


अपडेट

@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

चूंकि MobileMe में afsctool अब उपलब्ध नहीं है, इसलिए वर्तमान में 1.6.4 पर GitHub में diimdeep / afsctool है

MacPorts में भी afsctool जहां वे MobileMe मुद्दे के बारे में जानते हैं लेकिन शायद GitHub के स्रोत से अनजान हैं।


अच्छा प्रश्न। इससे किन संपीड़न दरों की उम्मीद की जा सकती है?
n1000

जवाबों:


6

आपके प्रश्न के उत्तर के दो भाग हैं।

  1. "संग्रह" फ़ाइलों में एक खोजक संदर्भ मेनू आइटम कैसे जोड़ें: यह एक ऑटोमेटर सेवा (मैक ओएस एक्स ऑटोमेशन का एक अच्छा अवलोकन है जिसे ओएस एक्स 10.6 में पेश किया जा सकता है) का निर्माण करके इसे प्राप्त करना आसान है :

    • ऑटोमेटर लॉन्च करें, उस तरह के वर्कफ़्लो के लिए संकेत देने पर "सेवा" चुनें जिसे आप बनाना चाहते हैं।
    • "सेवा प्राप्त करता है" ड्रॉप डाउन (अनुमानित अनुवाद - मैं एक जर्मन प्रणाली पर हूँ) में "फाइलें या फ़ोल्डर" चुनें। वैकल्पिक रूप से, "खोजकर्ता" में "ड्रॉप डाउन" सेट करें।
    • एक "चयनित खोजक आइटम प्राप्त करें" कार्रवाई जोड़ें।
    • उसके नीचे एक "मूव फाइंडर आइटम" क्रियाएं जोड़ें और इसे अपने लक्ष्य फ़ोल्डर में सेट करें।
    • अपनी सेवा ~/Library/Servicesको "पुरालेख" के रूप में डिफ़ॉल्ट स्थान ( ) में सहेजें ।

    अब आपके पास एक नई सेवा मेनू और संदर्भ मेनू प्रविष्टि है (सक्रिय सेवाओं की संख्या के आधार पर: या तो पहले मेनू स्तर पर, या "पुरालेख" नामक "सेवा" उपमेनू में) जो "पुरालेख" कहा जाता है जो आपके लक्ष्य के लिए चयनित फ़ाइल या फ़ोल्डर को स्थानांतरित करेगा। फ़ोल्डर।

  2. अपने लक्षित फ़ोल्डर में जोड़े गए फ़ाइलों के HFS + संपीड़न को स्वचालित कैसे करें: इसे प्राप्त करने के कई तरीके हैं। आप निश्चित रूप से, उस कदम को अपनी संग्रह सेवा में जोड़ सकते हैं। इस दृष्टिकोण का नुकसान यह है कि यदि सेवा के बाहर फ़ोल्डर में कभी भी फाइलें या फ़ोल्डर जोड़े जाते हैं, तो कोई संपीड़न लागू नहीं किया जाएगा। प्रवेश वेक्टर या उपयोगकर्ता इंटरैक्शन पर निर्भरता के बिना, फ़ोल्डर में सब कुछ स्वचालित रूप से संपीड़ित होने के लिए एक बेहतर दृष्टिकोण होगा।

    एक तरीका यह है, जैसा कि आपने खोजा है, एक संपीड़न उपयोगिता को चलाने के लिए हर बार एक फ़ाइल या फ़ोल्डर आपके देखे गए फ़ोल्डर में जोड़ा जाता है:

    • AppleScript में शेल उपयोगिता लॉन्च करने का तरीका do shell scriptकमांड है - लिंक किए गए दस्तावेज़ देखें;
    • AppleScript में फाइलसिस्टम घटनाओं का लाभ उठाने के लिए इनबिल्ट तरीका फोल्डर क्रियाओं का उपयोग करना है , जो कि देखे गए फ़ोल्डर में बदलाव पर AppleScripts को कॉल करता है। स्क्रिप्ट किस प्रतिक्रिया को परिभाषित करती है, यह स्क्रिप्ट द्वारा ही परिभाषित किया जाता है, इसके द्वारा प्रदान किए जाने वाले हैंडलर के माध्यम से, मार्क के उत्तर में स्क्रिप्ट के लिए एक हैंडलर है adding folder items- जिसका अर्थ है कि यह नई जोड़ी गई फ़ाइलों पर प्रतिक्रिया करता है; पूर्ण संदर्भ के लिए एप्सलिप्ट भाषा गाइड देखें ) । फ़ोल्डर एक्टर्स कॉन्फ़िगरेशन फ़ोल्डर के सर्विस मेनू में फाइंडर में पाया जाता है (संदर्भ मेनू में भी)।
    • फोल्डर क्रियाओं के लिए एक टर्बोचार्ज्ड विकल्प पॉल किम हैज़ेल (वाणिज्यिक सॉफ्टवेयर) है, जो नियम आधारित प्रसंस्करण और फाइलसिस्टम घटना से निपटने के लिए मापदंड का एक बहुतायत जोड़ता है जो कि सरल फ़ोल्डर क्रियाओं के साथ आप जो भी हासिल कर सकते हैं, उससे कहीं आगे जाते हैं - आप हेज़ेल की जांच करना चाहते हैं अब आप जो योजना बना रहे हैं, उसकी तर्ज पर अधिक से अधिक जटिल चीजें करने की योजना बनाएं।

    पूरे स्क्रिप्टिंग दृष्टिकोण का एक विकल्प लेटनाइटसाइट्स क्लस्टर्स का उपयोग कर रहा है - एक अन्य वाणिज्यिक सॉफ्टवेयर, जो स्वचालित रूप से लागू होता है (और फिर से लागू होता है, जहां आवश्यक है) देखे गए फ़ोल्डरों की सामग्री के लिए एचएफएस + संपीड़न।


आपके उत्तर के लिए धन्यवाद। मैं एक फ़ोल्डर एक्शन के रूप में AppleScript चलाने का विकल्प आज़माऊंगा। मुझे क्लस्टर्स के बारे में पता है, और मैं जो हासिल करने की कोशिश कर रहा हूं, वह ठीक यही है (एक गरीब आदमी का क्लस्टर);)
Boj

@williamvoor: खुशी हो सकती है अगर मदद कर सके। क्या आप जवाब को स्वीकार करने का मन करेंगे? वह चेक मार्क बटन है :)।
kopischke

फ़ोल्डर एक्शन स्क्रिप्ट समाधान काम करता है। स्क्रिप्ट ही मैंने सवाल पर चिपका दी।
बोज

5

@williamvoor: स्क्रिप्ट फ़ाइलपथ के साथ विफल हो जाती है जिसमें रिक्त स्थान होते हैं, क्योंकि set the file_name to the POSIX path of this_itemयह ठीक से नहीं बचता है। अपने कोड की उपयुक्त लाइन को इसमें सुधारें:

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

स्पष्टीकरण : afcstool का file_name तर्क उद्धरण चिह्नों से घिरा हुआ है, जो खुद को AppleScript कोड में कमांड लाइन वातावरण में सही ढंग से सौंपने के लिए बच गए हैं।

मेटा-विषय : जैसा कि मेरे पास प्रतिष्ठा बिंदुओं की कमी है, मैं उपयुक्त स्थिति में टिप्पणी नहीं कर सका (= @williamvoor की अपनी पोस्ट के लिए), इसलिए मैं इसे स्वयं के उत्तर के रूप में पोस्ट करता हूं, और आपको अपने पोस्ट में कोड परिवर्तन संपादित करने के लिए कहता हूं, और मुझे एक अंगूठे दे, ताकि मैं पर्याप्त प्रतिष्ठा हासिल कर सकूं, जिससे मैं भविष्य में सीधे टिप्पणी कर सकूं। धन्यवाद!

उसके बाद मैं किया जाता है या व्यवस्थापक मेरी पोस्ट को हटा सकता है।


3

यह थ्रेड एक फ़ोल्डर एक्शन को एक फोल्डर एक्शन के रूप में उपयोग करने के लिए देता है, जो फाइलों को जोड़ते ही कम्प्रेस कर देगा

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- अच्छा एक! लेकिन आपका उत्तर ओपी के प्रश्न को खोजकर्ता में एक चलती स्क्रिप्ट को एकीकृत करने के बारे में नहीं बताता है, यह संग्रह फ़ोल्डर में गिरा फ़ाइलों को दूसरे फ़ोल्डर में ले जाता है (जो मुझे लगता है कि ओपी की योजना बनाने की तुलना में एक और पुनर्निर्देशन होगा) और यह प्रमाणीकरण के लिए पूछेगा हर बार (एक स्वचालन संदर्भ में कष्टप्रद)।
kopischke

0

क्लस्टर

… माउंटेन लायन, लायन और स्नो लेपर्ड में फ़ाइल कम्प्रेशन तकनीक का लाभ उठाता है…

मोरस्पेस फोल्डर संपीड़न

… एचएफएस + संपीड़न का टेक्स्ट और डेटा दस्तावेजों, डेटाबेस और मेलबॉक्स जैसे असम्पीडित फ़ाइल स्वरूपों पर सबसे अच्छा प्रभाव पड़ता है। एक विशिष्ट मेल मेलबॉक्स का आकार 50% तक कम किया जा सकता है। ...

पसंद

उन दो में से, मुझे क्लस्टर्स अधिक परिपक्व और प्रयोग करने में आसान लगते हैं - शायद इस प्रश्न के लिए एक बेहतर फिट।


सावधानी के साथ आगे बढ़ें

एक किनारे के मामले में, AppleFSCompression के तीसरे पक्ष के उपयोग के साथ मूक डटलॉस हो सकता है। जो मैं बता सकता हूं कि यह ओएस में एक बग है, और केवल वहीं हो सकता है जहां मुक्त स्थान की असाधारण कमी है। मैं बग को Apple को खिलाऊंगा।


1
लगता है ये दोनों अब बंद कर दिए गए हैं।
इपिकवॉयज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.