A MacOSXhints.com hint recently dealt with the inability of zip to deal with resource forks in files that had them or folders that contained files that had.
This is the hint reduced to AppleScript:
to TarFile(toTar, putHere) -- compresses an object INCLUDING its resource fork, given alias paths
set tName to name of (info for toTar) -- toTar is a path
set toTar to quoted form of POSIX path of toTar
set putHere to quoted form of POSIX path of putHere -- path to container of compressed file
try
return paragraphs of (do shell script "/usr/bin/tar cjvf " & putHere & tName & ".tbz " & toTar)
on error
return false
end try
-- returns posix path of objects that were compressed, or if compression fails, returns false
-- the ._name files are the resource forks, if any.
end TarFile
to UnTarFile(tbzFile) -- uncompresses a tbz file including attaching the resource forks of the files.
if name extension of (info for tbzFile) is "tbz" then
try
return (do shell script "/usr/bin/tar xjvf " & quoted form of POSIX path of tbzFile)
on error
return 0
end try
else
return 1
end if
-- returns path to untarred objects, or 0 if decompression fails, or 1 if original was not a tbz file
end UnTarFile
-- In the following, substitute your own file or folder...
set tarThis to alias ((path to desktop folder as text) & "FracMath:") -- file or folder
set putHere to (path to desktop folder) -- container
set TBZ to TarFile(tarThis, putHere)
-- TBZ is posix path to objects that were compressed where "._name" files are resource forks.
-- and to uncompress the archive...
--Move tarThis, comment the tarThis line and the TBZ line, and uncomment the following.
(*set wasTarred to alias ((putHere as text) & "FracMath.tbz")
set tFiles to UnTarFile(wasTarred)*)