Re-Sparse: Den Sparse-Zustand einer Datei wiederherstellen

Grundsätzliches

Sparse-Dateien verlieren durch bestimmte Aktionen ihren Sparse-Zustand, wie z.B. Komprimieren und wieder entpacken als ZIP oder Kopieren auf ein Dateisystem, was Sparse nicht unterstützt. Mit dem dd Kommando kann der Sparse-Zustand wiederherstellt werden. Das AppleScript dupliziert alle ausgewählte Dateien und hängt dem neuen Dateinamen sparse an.

AppleScript

Dateiname: Re-Sparse.scpt

Im Skripteditor öffnen

(*
Re-Sparse

Stellt den Sparse-Zustand einer Datei wiederher.

Copyright © 2024
Café MegaByte
*)


tell application "Finder"
	activate
	set l_selection to selection
	
	-- Keine Datei gewählt?	
	if (count l_selection) = 0 then
		beep
		display dialog "Zuerst Datei(en) im Finder auswählen, dann das Skript starten." buttons {"Ok"} default button 1
		return
	end if
	
	-- Alle ausgewählten Dateien verarbeiten
	repeat with l_file in l_selection
		
		-- AppleScript-Pfad in Unix-Pfad umwandeln
		set l_path_source to POSIX path of (l_file as string)
		set l_path_target to l_path_source & " sparse"
		
		-- Sparse-Zustand wiederherstellen
		try
			do shell script "dd if='" & l_path_source & "' of='" & l_path_target & "' conv=sparse"
			
			--Fehler?
		on error l_err_msg number l_err_number
			display dialog "Fehler: " & l_err_msg buttons {"Ok"} default button 1
			return
		end try
		
	end repeat
	
	-- Erfolgsmeldung
	display dialog "Sparse-Zustand wiederhergestellt." buttons {"Ok"} default button 1
	
end tell