Saya ingin mengatur cara otomatis untuk pengarsipan file di OS X Lion. Maksud saya pengarsipan adalah menggunakan fitur kompresi HFS + pada folder tertentu, dan membuat setiap file yang saya pindahkan ke folder ini secara otomatis dikompresi. Saya berpikir untuk menggunakan ini untuk mengarsipkan file besar yang tidak sering saya gunakan, tetapi tanpa harus secara manual membuat arsip terkompresi dan harus mengekstraknya jika saya membutuhkannya.
Saya menemukan alat afsctool ( brew install afsctool
), yang dapat, melalui command-line, menerapkan kompresi HFS + ke folder dan semua file di dalamnya. Tapi saya percaya itu tidak mengaktifkan kompresi file masa depan yang dipindahkan ke folder.
Memindahkan file secara manual dan menjalankan instruksi baris perintah berulang kali tidak nyaman. Karena itu saya rasa saya perlu menggunakan automator / AppleScript untuk menjalankan ini dalam dua langkah:
- Buat skrip yang memungkinkan memindahkan file apa pun ke folder tertentu. Idealnya opsi bernama Arsip dapat diakses melalui klik kanan pada file.
- Jalankan instruksi baris perintah
afsctool -c <folder>
, untuk mengaktifkan kompresi pada semua file baru saja pindah ke folder.
Saya tidak punya pengalaman menggunakan automator atau AppleScript, jadi saya ingin tahu harus mulai dari mana, terutama tentang cara menambahkan tindakan ke Finder, dan cara menjalankan alat baris perintah dari skrip.
Pembaruan
Panduan @kopischke bekerja dengan baik. Script itu sendiri, saya buat berdasarkan jawaban oleh @mark, tetapi menggunakan afsctool -c <folder>
, bukan ditto
. Ini skripnya: Ini harus dimasukkan~/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
Karena afsctool di MobileMe tidak lagi tersedia, ada diimdeep / afsctool di GitHub, saat ini 1.6.4.
Juga afsctool di MacPorts di mana mereka mengetahui masalah MobileMe tetapi mungkin tidak mengetahui sumbernya di GitHub.
Jawaban:
Ada dua bagian jawaban untuk pertanyaan Anda.
Cara menambahkan item menu konteks Finder ke file "Archive": ini mudah dicapai dengan membuat Layanan Automator (Otomatisasi Mac OS X memiliki tinjauan yang baik tentang apa yang dapat dilakukan oleh layanan Automator yang diperkenalkan di OS X 10.6):
~/Library/Services
) sebagai "Arsip".Anda sekarang memiliki menu layanan baru dan entri menu konteks (tergantung pada jumlah layanan aktif: baik pada tingkat menu pertama, atau di submenu "Layanan") yang disebut "Arsip" yang akan memindahkan file atau folder yang dipilih ke target Anda map.
Cara mengotomatiskan kompresi HFS + file yang ditambahkan ke folder target Anda: ada beberapa cara untuk mencapai itu. Anda tentu saja dapat menambahkan langkah itu ke layanan pengarsipan Anda. Kerugian dari pendekatan ini adalah tidak ada kompresi yang akan diterapkan jika file atau folder ditambahkan ke folder di luar layanan, tentu saja. Pendekatan yang lebih baik adalah membuat segala sesuatu di folder dikompres secara otomatis, tanpa bergantung pada vektor entri atau interaksi pengguna.
Salah satu caranya adalah, seperti yang Anda temukan, menjalankan utilitas kompresi setiap kali file atau folder ditambahkan ke folder yang Anda tonton:
do shell script
perintah - lihat dokumentasi yang ditautkan;adding folder items
- artinya skrip bereaksi terhadap file yang baru ditambahkan; lihat Panduan Bahasa Applescript untuk referensi lengkap ) . Konfigurasi Tindakan Folder ditemukan dalam menu layanan folder dalam Finder (dalam menu konteks, juga).Alternatif untuk keseluruhan pendekatan scripting adalah menggunakan LateNiteSoft's Clusters - perangkat lunak komersial lain, yang tidak melakukan apa pun kecuali secara otomatis menerapkan (dan mendaftar ulang, jika perlu) kompresi HFS + ke isi folder yang ditonton.
sumber
@williamvoor: Script gagal dengan filepath yang berisi spasi, karena
set the file_name to the POSIX path of this_item
tidak lolos dengan benar. Perbaiki baris kode yang sesuai untuk ini:Penjelasan : Argumen nama file afcstool dikelilingi dengan tanda kutip, yang sendiri dalam kode AppleScript lolos agar diserahkan dengan benar ke lingkungan baris perintah.
Meta-topic : Karena saya kekurangan poin reputasi, saya tidak bisa berkomentar di posisi yang sesuai (= untuk posting @williamvoor), oleh karena itu saya mempostingnya sebagai jawaban sendiri, dan meminta Anda untuk mengedit perubahan kode ke dalam posting Anda, dan memberi saya acungan jempol, sehingga saya mendapatkan reputasi yang cukup, memungkinkan saya untuk langsung berkomentar di masa depan. Terima kasih!
Setelah itu selesai saya atau admin bisa menghapus posting saya.
sumber
Utas ini memberikan applescript untuk digunakan sebagai tindakan Folder yang akan memampatkan file saat ditambahkan
sumber
--hfsCompression
opsiditto
- bagus! Tetapi jawaban Anda tidak menjawab pertanyaan OP tentang mengintegrasikan skrip bergerak ke Finder, ia memindahkan file yang dijatuhkan ke folder arsip ke folder lain (yang saya pikir akan menjadi satu lagi pengalihan daripada OP berencana untuk melakukan) dan itu akan meminta otentikasi setiap kali (menjengkelkan dalam konteks otomatisasi).Cluster
Kompresi Folder MoreSpace
Pilihan
Dari keduanya, saya menemukan Cluster lebih matang dan lebih mudah digunakan - mungkin lebih cocok untuk pertanyaan ini.
Lanjutkan dengan hati hati
Dalam kasus tepi, silent dataloss dapat terjadi dengan penggunaan pihak ketiga AppleFSCompression. Dari apa yang saya tahu ini adalah bug di OS, dan mungkin terjadi hanya di mana ada kekurangan ruang kosong yang luar biasa. Saya akan memberi makan bug ke Apple.
sumber