Tạo thư mục nén HFS + tự động


17

Tôi muốn thiết lập một cách tự động để lưu trữ các tệp trong OS X Lion. Bằng cách lưu trữ, tôi có nghĩa là sử dụng tính năng nén HFS + trên một thư mục cụ thể và làm cho mọi tệp mà tôi di chuyển vào thư mục này được tự động nén. Tôi đang nghĩ đến việc sử dụng điều này để lưu trữ các tệp lớn mà tôi không sử dụng thường xuyên, nhưng không phải tạo thủ công các tài liệu lưu trữ nén và phải giải nén chúng trong trường hợp tôi cần chúng.

Tôi đã xem qua công cụ afsctool ( brew install afsctool), có thể, thông qua dòng lệnh, áp dụng nén HFS + cho một thư mục và tất cả các tệp trong đó. Nhưng tôi tin rằng nó không kích hoạt nén các tệp trong tương lai được chuyển đến thư mục.

Di chuyển tệp theo cách thủ công và chạy một lệnh dòng lệnh nhiều lần là bất tiện. Do đó, tôi đoán rằng tôi sẽ cần sử dụng trình tự động hóa / AppleScript để thực hiện việc này theo hai bước:

  1. Tạo một tập lệnh cho phép di chuyển bất kỳ tập tin vào một thư mục cụ thể. Lý tưởng nhất là một tùy chọn có tên Lưu trữ có thể truy cập thông qua nhấp chuột phải vào tệp.
  2. Chạy một lệnh dòng lệnh afsctool -c <folder>, để kích hoạt nén trên tất cả các tệp mới vừa di chuyển đến thư mục.

Tôi không có kinh nghiệm sử dụng trình tự động hóa hoặc AppleScript, vì vậy tôi muốn biết bắt đầu từ đâu, đặc biệt là về cách thêm hành động vào Finder và cách chạy công cụ dòng lệnh từ tập lệnh.


Cập nhật

Hướng dẫn @kopischke hoạt động tốt. Bản thân kịch bản, tôi đã thực hiện dựa trên câu trả lời của @mark, nhưng sử dụng afsctool -c <folder>, thay vì ditto. Đây là kịch bản: Nó nên được đưa vào~/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

Vì afsctool tại MobileMe không còn khả dụng, nên có diimdeep / afsctool tại GitHub, hiện là 1.6.4.

Ngoài ra afsctool trong MacPorts nơi họ biết về sự cố MobileMe nhưng có thể không biết về nguồn tại GitHub.


Câu hỏi hay. Tỷ lệ nén nào có thể được mong đợi từ điều này?
n1000

Câu trả lời:


6

Có hai phần cho câu trả lời cho câu hỏi của bạn.

  1. Cách thêm một mục trình đơn ngữ cảnh Finder vào các tệp của Archive Archive: điều này dễ dàng đạt được bằng cách tạo Dịch vụ tự động (Mac OS X Tự động hóa có một tổng quan tốt về những gì dịch vụ Automator được giới thiệu trong OS X 10.6 có thể làm):

    • Khởi chạy Automator, chọn Dịch vụ trực tuyến, khi được nhắc về loại quy trình công việc bạn muốn tạo.
    • Chọn các tập tin hoặc thư mục của người khác trong dịch vụ của bạn nhận được các bản thả xuống (bản dịch gần đúng - Tôi đang sử dụng hệ thống của Đức). Tùy chọn, thiết lập các ứng dụng khác trong vùng thả xuống thành Finder Finder.
    • Thêm một mục Nhận các mục Tìm kiếm Tìm kiếm hành động.
    • Thêm một mục Move Move Finder Các hành động khác bên dưới và đặt nó vào thư mục đích của bạn.
    • Lưu dịch vụ của bạn ở vị trí mặc định ( ~/Library/Services) dưới dạng Lưu trữ Lưu trữ.

    Bây giờ bạn có một menu dịch vụ mới mục trình đơn ngữ cảnh (tùy thuộc vào số lượng dịch vụ đang hoạt động: ở cấp menu đầu tiên, hoặc trong menu con Dịch vụ của Hồi quy) được gọi là Lưu trữ Lưu trữ sẽ di chuyển tệp hoặc thư mục đã chọn vào mục tiêu của bạn thư mục.

  2. Cách tự động nén HFS + nén các tệp được thêm vào thư mục đích của bạn: có một số cách để đạt được điều đó. Tất nhiên, bạn có thể chỉ cần thêm bước đó vào dịch vụ lưu trữ của mình. Nhược điểm của phương pháp này là không áp dụng nén nếu các tệp hoặc thư mục được thêm vào thư mục bên ngoài dịch vụ, tất nhiên. Một cách tiếp cận tốt hơn sẽ là để mọi thứ trong thư mục được nén tự động, không phụ thuộc vào vectơ nhập hoặc tương tác người dùng.

    Một cách là, như bạn đã phát hiện ra, để tiện ích nén chạy mỗi khi tệp hoặc thư mục được thêm vào thư mục đã xem của bạn:

    • cách để khởi chạy một tiện ích shell trong AppleScript là do shell scriptlệnh - xem tài liệu được liên kết;
    • cách sẵn có để tận dụng các sự kiện hệ thống tập tin trong AppleScript là sử dụng Tác vụ thư mục , gọi AppleScripts về các thay đổi trong thư mục đã xem. Những sự kiện mà tập lệnh phản ứng được xác định bởi chính tập lệnh, thông qua các trình xử lý mà nó cung cấp (ví dụ: tập lệnh trong câu trả lời của Mark có một trình xử lý adding folder items- có nghĩa là nó phản ứng với các tệp mới được thêm vào; xem Hướng dẫn ngôn ngữ Applescript để tham khảo đầy đủ ) . Cấu hình thư mục Tác vụ được tìm thấy trong menu dịch vụ của các thư mục trong Finder (cũng trong menu ngữ cảnh).
    • một thay thế tăng áp cho Hành động thư mục là Hazel (phần mềm thương mại) của Paul Kim , bổ sung xử lý dựa trên quy tắc và rất nhiều tiêu chí để xử lý sự kiện hệ thống tập tin vượt xa những gì bạn có thể đạt được với Tác vụ thư mục đơn giản - bạn có thể muốn điều tra Hazel nếu bạn lên kế hoạch thực hiện nhiều thứ hoặc nhiều thứ phức tạp hơn dọc theo dòng của những gì bạn đang lên kế hoạch.

    Một thay thế cho phương pháp tiếp cận toàn bộ kịch bản đang sử dụng LateNiteSoft của Clusters - một phần mềm thương mại, mà không làm gì nhưng tự động áp dụng (và tái áp dụng, khi cần thiết) HFS + nén các nội dung của thư mục theo dõi.


Cảm ơn câu trả lời của bạn. Tôi sẽ thử tùy chọn chạy AppleScript dưới dạng Thư mục hành động. Tôi biết về các cụm và những gì tôi đang cố gắng đạt được chính xác là như vậy (Cụm của một người nghèo);)
Boj

@williamvoor: Vui mừng nếu có thể giúp đỡ. Bạn có phiền khi chấp nhận câu trả lời không? Đó là nút đánh dấu :).
kopischke

Các giải pháp kịch bản hành động thư mục hoạt động. Chính kịch bản tôi đã dán vào câu hỏi.
Boj

5

@williamvoor: Kịch bản thất bại với các filepath chứa khoảng trắng, vì set the file_name to the POSIX path of this_itemkhông thoát đúng. Sửa dòng mã thích hợp của bạn thành dòng này:

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

Giải thích : đối số file_name của afcstool được bao quanh bằng dấu ngoặc kép, chính chúng trong mã AppleScript được thoát để được chuyển chính xác đến môi trường dòng lệnh.

Chủ đề meta : Vì tôi thiếu điểm danh tiếng, tôi không thể nhận xét ở vị trí thích hợp (= bài đăng của riêng @williamvoor), do đó tôi đăng bài đó dưới dạng câu trả lời của riêng mình và yêu cầu bạn chỉnh sửa thay đổi mã vào bài đăng của bạn, và cho tôi một ngón tay cái lên, để tôi có đủ danh tiếng, cho phép tôi nhận xét trực tiếp trong tương lai. Cảm ơn!

Sau khi xong, tôi hoặc quản trị viên có thể xóa bài viết của mình.


3

Đây chủ đề cho một AppleScript để sử dụng như một hành động thư mục đó sẽ nén các file khi chúng được bổ sung

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

Không biết về --hfsCompressiontùy chọn trong ditto- tốt! Nhưng câu trả lời của bạn không giải quyết được câu hỏi của OP về việc tích hợp tập lệnh di chuyển vào Finder, nó di chuyển các tập tin được thả vào thư mục lưu trữ sang thư mục khác (mà tôi nghĩ sẽ là một chuyển hướng nhiều hơn OP dự định làm) và nó sẽ yêu cầu xác thực mọi lúc (khó chịu trong bối cảnh tự động hóa).
kopischke

0

Cụm

Lợi dụng công nghệ nén tập tin trong Mountain Lion, Lion và Snow Leopard

Nén thư mục MoreSpace

Nén nén HFS + có hiệu quả tốt nhất đối với các định dạng tệp không nén như văn bản và tài liệu dữ liệu, cơ sở dữ liệu và hộp thư. Kích thước hộp thư Mail thông thường có thể giảm tới 50%. Giáo dục

Ưu tiên

Trong hai điều đó, tôi thấy Cl cluster trưởng thành hơn và dễ sử dụng hơn - có lẽ phù hợp hơn cho câu hỏi này.


Tiến hành thận trọng

Trong trường hợp cạnh, dataloss im lặng có thể xảy ra với việc sử dụng AppleFSCompression của bên thứ ba. Từ những gì tôi có thể nói đây là một lỗi trong HĐH và chỉ có thể xảy ra khi thiếu không gian trống. Tôi sẽ cung cấp lỗi cho Apple.


1
Cả hai điều này dường như đã bị ngưng ngay bây giờ.
EpicVoyage 18/03/18
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.