Chciałbym skonfigurować automatyczny sposób archiwizacji plików w OS X Lion. Przez archiwizację mam na myśli użycie funkcji kompresji HFS + w określonym folderze i automatyczne kompresowanie każdego pliku, który przenoszę do tego folderu. Zastanawiam się nad tym, aby zarchiwizować duże pliki, których nie używam często, ale bez konieczności ręcznego tworzenia skompresowanych archiwów i wyodrębniania ich na wypadek, gdyby były potrzebne.
Natknąłem się na narzędzie afsctool ( brew install afsctool
), które może za pomocą wiersza poleceń zastosować kompresję HFS + do folderu i wszystkich plików w nim zawartych. Ale uważam, że nie aktywuje kompresji przyszłych plików przeniesionych do folderu.
Ręczne przenoszenie plików i wielokrotne uruchamianie instrukcji wiersza poleceń jest niewygodne. Dlatego zgaduję, że musiałbym użyć automatora / AppleScript, aby wykonać to w dwóch krokach:
- Utwórz skrypt, który pozwala przenieść dowolny plik do określonego folderu. Idealnie opcja o nazwie Archiwum dostępna po kliknięciu pliku prawym przyciskiem myszy.
- Uruchom instrukcję wiersza polecenia
afsctool -c <folder>
, aby włączyć kompresję wszystkich nowych plików właśnie przeniesionych do folderu.
Nie mam doświadczenia w korzystaniu z automatyzatora lub AppleScript, więc chciałbym wiedzieć, od czego zacząć, szczególnie w zakresie dodawania akcji do Findera i uruchamiania narzędzia wiersza poleceń ze skryptu.
Aktualizacje
Przewodnik @kopischke działa dobrze. Sam skrypt wykonałem na podstawie odpowiedzi @mark, ale używając afsctool -c <folder>
zamiast ditto
. Oto skrypt: Należy go wprowadzić~/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
Ponieważ afsctool w MobileMe nie jest już dostępny, diimdeep / afsctool w GitHub, obecnie 1.6.4.
Również afsctool w MacPorts, gdzie są świadomi problemu MobileMe, ale być może nie wiedzą o źródle w GitHub.
Odpowiedzi:
Odpowiedź na twoje pytanie składa się z dwóch części.
Jak dodać pozycję menu kontekstowego Findera do plików „Archiwum”: można to łatwo osiągnąć, tworząc usługę Automator (system Mac OS X Automation ma dobry przegląd tego, co mogą zrobić usługi Automatora wprowadzone w OS X 10.6):
~/Library/Services
) jako „Archiwum”.masz teraz nowe menu usługi i pozycję menu kontekstowego (w zależności od liczby aktywnych usług: na pierwszym poziomie menu lub w podmenu „Usługi”) o nazwie „Archiwum”, która przeniesie wybrany plik lub folder do miejsca docelowego teczka.
Jak zautomatyzować kompresję HFS + plików dodanych do folderu docelowego: Istnieje kilka sposobów na osiągnięcie tego. Oczywiście możesz po prostu dodać ten krok do usługi archiwizacji. Wadą tego podejścia jest to, że nie zostanie zastosowana kompresja, jeśli pliki lub foldery zostaną dodane do folderu poza usługą, oczywiście. Lepszym rozwiązaniem byłoby automatyczne kompresowanie wszystkiego w folderze, bez polegania na wektorze wejściowym lub interakcji użytkownika.
Jak odkryłeś, jednym ze sposobów jest uruchomienie narzędzia kompresji za każdym razem, gdy plik lub folder jest dodawany do obserwowanego folderu:
do shell script
polecenie - zobacz dołączoną dokumentację;adding folder items
- co oznacza, że reaguje na nowo dodane pliki; pełny przewodnik znajduje się w przewodniku języka Applescript ) . Konfiguracja akcji folderów znajduje się w menu usług folderów w Finderze (także w menu kontekstowym).Alternatywą dla całego podejścia skryptowego jest użycie klastrów LateNiteSoft - innego komercyjnego oprogramowania, które nie robi nic poza automatycznym stosowaniem (i ponownym stosowaniem, w razie potrzeby) kompresji HFS + do zawartości obserwowanych folderów.
źródło
@williamvoor: Skrypt nie działa z ścieżkami plików, które zawierają spacje, ponieważ
set the file_name to the POSIX path of this_item
nie ucieka poprawnie. Popraw odpowiedni wiersz kodu do tego:Objaśnienie : Argument nazwa_pliku afcstool jest otoczony znakami cudzysłowu, które same w kodzie AppleScript są usuwane, aby można je było poprawnie przekazać do środowiska wiersza poleceń.
Meta-temat : Ponieważ brakuje mi punktów reputacji, nie mogłem komentować odpowiedniego stanowiska (= do własnego posta @williamvoor), dlatego zamieszczam go jako własną odpowiedź i proszę o zmianę zmiany kodu w swoim poście, i kciuki do góry, aby zyskać wystarczającą reputację, co pozwoli mi na bezpośrednie komentowanie w przyszłości. Dzięki!
Po tym ja lub administrator mogliby usunąć mój post.
źródło
Wątek ten udostępnia skrypt jabłkowy do użycia jako akcji Folder, która kompresuje pliki podczas ich dodawania
źródło
--hfsCompression
opcji wditto
- dobra! Ale twoja odpowiedź nie odnosi się do pytania OP dotyczącego integracji ruchomego skryptu w Finderze, przenosi pliki upuszczone w folderze archiwum do innego folderu (co moim zdaniem byłoby przekierowaniem większym niż planowane przez OP) i poprosi o uwierzytelnienie za każdym razem (denerwujące w kontekście automatyzacji).Klastry
Kompresja folderów MoreSpace
Pierwszeństwo
Z tych dwóch uważam, że Klastry są bardziej dojrzałe i łatwiejsze w użyciu - prawdopodobnie lepiej pasują do tego pytania.
Postępuj ostrożnie
W przypadku krawędzi może wystąpić cicha utrata danych w przypadku korzystania z AppleFSCompression. Z tego, co mogę powiedzieć, jest to błąd w systemie operacyjnym i może wystąpić tylko w przypadku nadzwyczajnego braku wolnego miejsca. Przekażę błąd do Apple.
źródło