Otomatik HFS + sıkıştırılmış klasör oluşturma


17

OS X Lion'da dosyaları arşivlemek için otomatik bir yol ayarlamak istiyorum. Arşivleyerek, belirli bir klasörde HFS + sıkıştırma özelliğini kullanmak ve bu klasöre taşıdığım her dosyayı otomatik olarak sıkıştırmak istiyorum. Sık kullanmadığım büyük dosyaları arşivlemek için bunu kullanmayı düşünüyorum, ancak elle sıkıştırılmış arşivler oluşturmak zorunda kalmadan ve ihtiyaç duyduğumda bunları ayıklamak zorunda kalmadan.

Komut satırı aracılığıyla bir klasöre ve içindeki tüm dosyalara HFS + sıkıştırma uygulayabilen afsctool ( brew install afsctool) aracına rastladım . Ancak, klasöre taşınan gelecekteki dosyaların sıkıştırılmasını etkinleştirmediğine inanıyorum.

Dosyaları manuel olarak taşımak ve bir komut satırı talimatını tekrar tekrar çalıştırmak elverişsizdir. Bu nedenle, bunu iki adımda yürütmek için automator / AppleScript kullanmam gerekeceğini tahmin ediyorum:

  1. Herhangi bir dosyayı belirli bir klasöre taşımanıza izin veren bir komut dosyası oluşturun. İdeal olarak, dosyaya sağ tıklayarak erişilebilen Arşiv adlı bir seçenek.
  2. afsctool -c <folder>Klasöre taşınan tüm yeni dosyalar üzerinde sıkıştırmayı etkinleştirmek için bir komut satırı talimatı çalıştırın .

Automator veya AppleScript kullanma konusunda hiçbir deneyimim yok, bu yüzden nereden başlayacağımı bilmek istiyorum, özellikle Finder'a eylem ekleme ve komut dosyasından bir komut satırı aracını çalıştırma.


Güncellemeler

@kopischke kılavuzu iyi çalışıyor. Betiğin kendisi, @mark'ın cevabına dayanarak yaptım, ama afsctool -c <folder>yerine, kullandım ditto. İşte senaryo: Bu konmalı~/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'deki afsctool artık mevcut olmadığından GitHub'da şu anda 1.6.4 olan diimdeep / afsctool var .

Ayrıca MacPorts'ta MobileMe sorununun farkında olduklarını ancak GitHub'daki kaynağın farkında olmadığından afsctool .


Güzel soru. Bundan ne gibi sıkıştırma oranları beklenebilir?
n1000

Yanıtlar:


6

Sorunuzun cevabının iki kısmı vardır.

  1. “Arşiv” dosyalarına Finder bağlam menü öğesi nasıl eklenir: Bir Automator Hizmeti oluşturarak bunu başarmak kolaydır (Mac OS X Automation, OS X 10.6'da sunulan Automator hizmetlerinin neler yapabileceğine dair iyi bir genel bakışa sahiptir ):

    • Automator'ı başlatın, oluşturmak istediğiniz iş akışı türü istendiğinde "Hizmet" i seçin.
    • "Hizmet alır" açılır menüsünde "Dosyalar veya Klasörler" i seçin (yaklaşık çeviriler - Alman sistemindeyim). İsteğe bağlı olarak, "giriş" açılır menüsünü "Bulucu" olarak ayarlayın.
    • “Seçili Bulucu Öğelerini Al” işlemi ekleyin.
    • Bunun altına bir “Bulucu Öğelerini Taşı” işlemi ekleyin ve hedef klasörünüze ayarlayın.
    • Hizmetinizi varsayılan konuma ( ~/Library/Services) “Arşiv” olarak kaydedin .

    artık seçilen dosyayı veya klasörü hedefinize taşıyacak yeni bir hizmet menüsü ve bağlam menüsü girişiniz (etkin hizmet sayısına bağlı olarak: ilk menü düzeyinde veya “Hizmetler” alt menüsünde) “Arşiv” olarak adlandırılır Klasör.

  2. Hedef klasörünüze eklenen dosyaların HFS + sıkıştırmasını otomatikleştirme: Bunu başarmanın birkaç yolu vardır. Elbette bu adımı arşivleme hizmetinize ekleyebilirsiniz. Bu yaklaşımın dezavantajı, elbette hizmetin dışındaki klasöre dosya veya klasör eklenirse, sıkıştırma yapılmamasıdır. Daha iyi bir yaklaşım, giriş vektörüne veya kullanıcı etkileşimine güvenmeksizin klasördeki her şeyin otomatik olarak sıkıştırılmasıdır.

    Bir yolu, keşfettiğiniz gibi, izlediğiniz klasöre her dosya veya klasör eklendiğinde bir sıkıştırma yardımcı programının çalıştırılmasıdır:

    • AppleScript'te bir kabuk yardımcı programını başlatmanın yolu do shell scriptkomuttur - bağlantılı belgelere bakın;
    • bir AppleScript'teki dosya sistemi olaylarından yararlanmanın yerleşik yolu , izlenen klasördeki değişikliklerde AppleScripts'i çağıran Klasör Eylemleri kullanmaktır . Komut dosyasının sağladığı olaylar, komut dosyasının kendisi tarafından, sağladığı işleyiciler aracılığıyla tanımlanır (örneğin, Mark'ın yanıtındaki komut dosyasının bir işleyicisi vardır adding folder items- yani yeni eklenen dosyalara tepki verir; tam başvuru için Applescript Dil Kılavuzu'na bakın ) . Klasör Eylemleri yapılandırması, Finder'daki klasörlerin hizmetler menüsünde bulunur (içerik menüsünde de).
    • Klasör Eylemlerine turboşarjlı bir alternatif , kurallara dayalı işleme ve basit Klasör Eylemleriyle elde edebileceğinizin çok ötesine geçen dosya sistemi olay işleme için çok sayıda kriter ekleyen Paul Kim'in Hazel'i (ticari yazılım) - Hazel'i araştırmak isteyebilirsiniz şimdi planladığınız şey boyunca daha fazla veya daha karmaşık şeyler yapmayı planlayın

    Komut dosyası oluşturma yaklaşımının alternatifi , izlenen klasörlerin içeriğine otomatik olarak uygulanan (ve gerektiğinde yeniden uygulayan) hiçbir şey yapmayan başka bir ticari yazılım olan LateNiteSoft's Clusters'ı kullanmaktır .


Cevabınız için teşekkürler. AppleScript'i Klasör Eylemi olarak çalıştırma seçeneğini deneyeceğim. Kümelerin farkındayım ve elde etmeye çalıştığım şey tam olarak bu (fakir bir adamın Kümeleri);)
Boj

@williamvoor: Yardımcı olabilirsek sevindim. Peki cevabı kabul eder misiniz? Bu onay işareti düğmesi :).
kopischke

Klasör eylem komut dosyası çözümü çalışır. Senaryonun kendisine soruyu yapıştırdım.
Boj

5

@williamvoor: Komut dosyası, set the file_name to the POSIX path of this_itemdüzgün şekilde kaçmadığı için boşluk içeren dosya yollarıyla başarısız oluyor . Kodunuzun uygun satırını şu şekilde düzeltin:

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

Açıklama : afcstool'un dosya_adı argümanı, komut satırı ortamına doğru bir şekilde teslim edilmek için AppleScript kodunda yer alan tırnak işaretleriyle çevrelenmiştir.

Meta-konu : İtibar puanlarım olmadığından, uygun pozisyonda yorum yapamadım (= @williamvoor'un kendi postasına), bu yüzden bunu kendi cevabım olarak gönderiyorum ve kod değişikliğini postanıza düzenlemenizi rica ediyorum, ve bana bir başparmak ver, böylece yeterince üne kavuşarak geleceğe doğrudan yorum yapmamı sağlıyorum. Teşekkürler!

Bu işlemden sonra ben veya yönetici gönderimi silebilirdim.


3

Bu iş parçacığı , dosyaları eklendikçe sıkıştıracak bir Klasör eylemi olarak kullanılacak bir el yazısı verir

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

--hfsCompressionSeçenek hakkında bilmiyordum ditto- iyi bir! Ancak cevabınız OP'nin hareketli bir komut dosyasını Finder'a entegre etme konusundaki sorusunu ele almıyor, arşiv klasörüne bırakılan dosyaları başka bir klasöre taşıyor (bence OP'nin yapmayı planladığından bir yönlendirme olacağını düşünüyorum) ve kimlik doğrulama isteyecek her zaman (bir otomasyon bağlamında sinir bozucu).
kopischke

0

Kümeler

… Mountain Lion, Lion ve Snow Leopard'daki dosya sıkıştırma teknolojisinden yararlanıyor…

Alan Klasörü Sıkıştırma

… HFS + sıkıştırması, metin ve veri belgeleri, veritabanları ve posta kutuları gibi sıkıştırılmamış dosya biçimleri üzerinde en iyi etkiye sahiptir. Tipik bir Posta posta kutusu boyutu% 50'ye kadar azaltılabilir. ...

Tercih

Bu ikisinden Kümeleri daha olgun ve kullanımı daha kolay buluyorum - muhtemelen bu soru için daha uygun.


Dikkatle ilerle

Bir uç durumda, AppleFSCompression'ın üçüncü taraf kullanımlarında sessiz veri kaybı oluşabilir. Söyleyebileceğimden, bu işletim sisteminde bir hata ve sadece olağanüstü bir boş alan eksikliği olduğunda ortaya çıkabilir. Hatayı Apple'a besleyeceğim.


1
Bunların her ikisi de şimdi durduruldu.
18:18, EpicVoyage
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.