자동화 된 HFS + 압축 폴더 생성


17

OS X Lion에서 파일을 자동으로 보관하는 방법을 설정하고 싶습니다. 보관한다는 것은 특정 폴더에서 HFS + 압축 기능을 사용한다는 것을 의미하며이 폴더로 이동하는 모든 파일을 자동으로 압축합니다. 나는 이것을 자주 사용하지 않는 큰 파일을 보관하기 위해 이것을 사용하려고 생각하지만 압축 보관 파일을 수동으로 만들지 않고 필요할 때 압축을 풀지 않아도됩니다.

명령 줄을 통해 HFS + 압축을 폴더와 그 안의 모든 파일에 적용 할 수 있는 도구 afsctool ( brew install afsctool)을 발견했습니다. 그러나 폴더로 이동 한 향후 파일의 압축을 활성화하지는 않는다고 생각합니다.

파일을 수동으로 이동하고 명령 행 명령을 반복적으로 실행하는 것은 불편합니다. 따라서 automator / AppleScript를 사용하여 두 단계로 실행해야한다고 생각합니다.

  1. 파일을 특정 폴더로 이동할 수있는 스크립트를 작성하십시오. 파일을 마우스 오른쪽 단추로 클릭하여 액세스 가능한 아카이브라는 옵션이 이상적입니다.
  2. 명령 행 명령을 실행하여 afsctool -c <folder>방금 폴더로 이동 한 모든 새 파일에서 압축을 활성화하십시오.

자동화 또는 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

MobileMe의 afsctool은 더 이상 사용할 수 없으므로 GitHub에는 현재 1.6.4 인 diimdeep / afsctool 이 있습니다.

또한 afsctool MacPorts를에서 그들은 모바일 미의 문제를 알고 있지만, GitHub의에서 소스의 아마 모르고있어.


좋은 질문. 이것으로부터 어떤 압축률을 기대할 수 있습니까?
n1000

답변:


6

귀하의 질문에 대한 답변에는 두 부분이 있습니다.

  1. “아카이브”파일에 Finder 컨텍스트 메뉴 항목을 추가하는 방법 : Automator 서비스 를 생성하면 쉽게 달성 할 수 있습니다 (Mac OS X Automation에는 OS X 10.6에 도입 된 Automator 서비스의 기능에 대한 개요잘 나와 있습니다).

    • Automator를 시작하고 생성하려는 워크 플로 종류에 대한 프롬프트가 표시되면 "서비스"를 선택하십시오.
    • "서비스 수신"드롭 다운에서 "파일 또는 폴더"를 선택하십시오 (대략적인 번역 – 저는 독일 시스템에 있습니다). 선택적으로 "in"드롭 다운을 "Finder"로 설정하십시오.
    • “선택된 파인더 항목 가져 오기”조치를 추가하십시오.
    • 그 아래에“Finder 항목 이동”작업을 추가하고 대상 폴더로 설정하십시오.
    • 서비스를 기본 위치 ( ~/Library/Services)에“아카이브”로 저장하십시오 .

    이제 선택한 파일 또는 폴더를 대상으로 이동시키는 "아카이브"라는 새로운 서비스 메뉴 상황에 맞는 메뉴 항목 (사용중인 서비스 수에 따라 : 첫 번째 메뉴 수준 또는 "서비스"하위 메뉴에 있음)이 있습니다. 폴더.

  2. 대상 폴더에 추가 된 파일의 HFS + 압축을 자동화하는 방법 : 여러 가지 방법으로이를 달성 할 수 있습니다. 물론 해당 단계를 아카이빙 서비스에 간단히 추가 할 수 있습니다. 이 방법의 단점은 파일이나 폴더가 서비스 외부의 폴더에 추가되는 경우 압축이 적용되지 않는다는 것입니다. 더 좋은 방법은 항목 벡터 또는 사용자 상호 작용에 의존하지 않고 폴더의 모든 내용을 자동으로 압축하는 것입니다.

    한 가지 방법은 발견 한 바와 같이 파일 또는 폴더가 감시 폴더에 추가 될 때마다 압축 유틸리티를 실행하는 것입니다.

    • AppleScript에서 쉘 유틸리티를 시작하는 방법은 do shell script명령입니다 – 링크 된 문서를보십시오;
    • AppleScript에서 파일 시스템 이벤트를 활용하는 기본 제공 방법 은 감시 폴더의 변경 사항에 대해 AppleScript를 호출 하는 Folder Actions 를 사용 하는 것입니다. 스크립트가 반응하는 이벤트는 스크립트가 제공하는 핸들러를 통해 스크립트 자체에 의해 정의됩니다 (예 : Mark의 답변 에있는 스크립트 에는 핸들러가 있습니다 adding folder items. 즉, 새로 추가 된 파일에 반응합니다. 자세한 내용은 Applescript 언어 안내서 참조 ) . 폴더 작업 구성은 Finder에있는 폴더의 서비스 메뉴 (컨텍스트 메뉴에서도)에 있습니다.
    • Folder Actions에 대한 과급 된 대안은 Paul Kim의 Hazel (상업용 소프트웨어)이며, 규칙 기반 처리와 간단한 폴더 작업으로 달성 할 수있는 것보다 훨씬 많은 파일 시스템 이벤트 처리에 대한 기준을 추가합니다. 계획하고있는 내용에 따라 더 복잡한 작업을 계획하십시오.

    전체 스크립팅 방식에 대한 대안은 LateNiteSoft의 클러스터를 사용하는 것입니다. LateNiteSoft의 클러스터 – 감시되는 폴더의 내용에 HFS + 압축을 자동으로 적용 (필요한 경우 다시 적용)하는 것 외에는 아무것도 없습니다.


답변 주셔서 감사합니다. 폴더 동작으로 AppleScript를 실행하는 옵션을 시도해 보겠습니다. 내가 클러스터 알고 있어요, 그리고 내가 무엇을 달성하기 위해 노력하고있어 정확히입니다 (가난한 사람의 클러스터))
일본 중앙 은행

@williamvoor : 도움이 될 수 있다면 기쁘다. 그렇다면 대답을 받아 주시겠습니까? 그것은 확인 표시 버튼입니다 :).
kopischke

폴더 작업 스크립트 솔루션이 작동합니다. 내가 질문에 붙여 넣은 스크립트 자체.
Boj

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– 좋은 것! 그러나 귀하의 답변은 이동 스크립트를 Finder에 통합하는 것에 대한 OP의 질문을 다루지 않으며 보관 폴더에 놓인 파일을 다른 폴더로 이동합니다 (OP가 계획 한 것보다 하나 더 리디렉션이라고 생각합니다). 매번 (자동화 컨텍스트에서 성가신).
kopischke

0

클러스터

… Mountain Lion, Lion 및 Snow Leopard의 파일 압축 기술을 활용합니다…

MoreSpace 폴더 압축

… HFS + 압축은 텍스트 및 데이터 문서, 데이터베이스 및 사서함과 같은 압축되지 않은 파일 형식에 가장 효과적입니다. 일반적인 메일 사서함 크기는 최대 50 %까지 줄일 수 있습니다. …

우선권

이 두 가지 중에서 클러스터가 더 성숙하고 사용하기 쉬워서 아마도이 질문에 더 적합 할 것입니다.


조심해서 진행해라

에지의 경우 타사에서 AppleFSCompression을 사용하면 자동 데이터 손실이 발생할 수 있습니다. 내가 말할 수있는 것은 OS의 버그이며 여유 공간이 부족한 경우에만 발생할 수 있습니다. 버그를 Apple에 제공 할 것입니다.


1
이 두 가지 모두 현재 중단 된 것으로 보입니다.
EpicVoyage
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.