Zo, het weekend is voorbij en na een lekkere bak koffie op den winderige maandag kunnen we weer aan de slag ...
Er worden heel veel waarheden aangehaald binnen dit draadje ... Al moet gezegd: .DS_Store bestanden worden soms 'krachten toegedicht' die zie gewoonweg niet beschikken.
.DS_Store bestanden zijn bestanden die primair door de Finder worden aangemaakt om allerlei metadata over de betreffende map op te slaan, later is daar bijgekomen dat de bestanden tevens Spotlight data kunnen bevatten.
Maak je een ZIP-bestand aan vanuit de Finder? Dan bevat deze de bestanden, met daarbij een mapje _MACOSX met bestanden voorafgegaan met een punt (.) underscore (_) gevolgd door de bestandsnamen die in het zitbestand zijn opgeslagen. Betrof het een map, dan zitten daar tevens .DS_Store bestanden in ...
Synchroniseer je een map via FTP? Dan is het niet onwaarschijnlijk dat (wederom) allerlei metadata, maar in ieder geval .DS_Store bestanden, tussen de bestanden hun weg vinden naar de FTP-server ...
Kopieer je naar een bestandssysteem dat niet meta-data van het HFS+ bestandssysteem begrijpt? Dan worden dus .DS_Store bestanden plus de individuele meta-bestanden (voorafgegaan met ._) gekopieerd worden NAAST de feitelijke bestanden.
In de Finder worden mappen en bestanden, voorafgegaan met een punt (.) niet getoond. Hetgeen betekend dat je op een externe FAT32/ExFAT/NTFS/EXT [2/3/4] of voor mijn part een ZFS partitie de bestanden vanuit de Finder nooit zullen opvallen, immers: ze zijn onzichtbaar.
Maar ... Linux, (andere) Unix, Windows, Embedded devices ... Die zullen ze meestal wel laten zien, daar bestandsnamen (beginnend met een punt) bij vele besturingssystemen niet de functie hebben van 'onzichtbaar bestand'.
Je kunt dit makkelijk testen:
Maak een mapje aan in de finder: 'TEST'
Maak een tekstbestandje aan en plaats dit in de map ...
Comprimeer de map vanuit de finder ...
Open een terminal en type:
unzip -l (bestandsnaam)
Dus: unzip (spatie) (min) l (spatie)
En sleep het icon naar de finder en druk op de enter toets ...
Je krijgt dan iets in de trend van:
unzip -l Test.zip
Archive: Test.zip
Length Date Time Name
-------- ---- ---- ----
680 12-11-15 13:05 Test.txt
0 02-08-16 09:49 __MACOSX/
120 12-11-15 13:05 __MACOSX/._Test.txt
-------- -------
800 3 files
Dit fenomeen doet zich tevens voor op externe media zoals USB-Sticks, HDD's, Memory Cards, enzovoorts ...
Een veel voorkomend probleem daarbij is dat je zeer lange bestands- en map-namen kunt hanteren met belachelijke 'dieptes' in MacOS X ... Een erfenis uit het unix-domein. Echter, zelfs binnen MacOS X is er een grappige discrepantie tussen de wijze waarop de Finder bestandsnamen hanteert en hoe de 'onderlaag' (Darwin) dat doet ...
De verschillen moeten gezocht worden in de afhandeling van leestekens, accenten en niet-latijnse schrijftekens.
Windows kent overigens een soortgelijk verschil (of probleem
)
Ook dit kun je makkelijk testen: pak een ExFat schijf en kopieer (een deel?) van je iTunes bibliotheek. Moet er wel het nodige in staan (arabische tekens, chinese tekens, russische tekens of franse tekens bijvoorbeeld?) met daarbij een behoorlijke bibliotheek die de nodige diepte kent (en lange bestandsnamen) ...
Start Windows op en kopieer de iTunes map naar een andere (externe of interne) schijf en de kans is groot dat Windows begint te klagen over niet gevonden bestanden (te lange bestandsnamen) ... Niets is minder waar, Windows kan prima omgaan met lange bestandsnamen, maar de afhandeling van UTF8/16 verschilt tussen de besturingssystemen en zo ook de afhandeling van zogeheten escape characters ...
Open je een Command Line onder Windows en geef je dan een kopieer opdracht? Dan kopieert Windows vrolijk en probleemloos alle bestanden in alle mappen ...
Is dit dan een probleem zuiver van de 'buitenwereld'?
Neen, Apple is vaker gevraagd om de wijze waarop deze omgaat met zijn 'externe leefomgeving' als het gaat om opslag (lees: externe opslagmedia en server-opslag) onder handen te nemen en er netter mee om te gaan.
Volgens mij bestaat deze roep al sinds MacOS 10.3 of 10.4 ... We zitten bij 10.11 en er is nog immer geen verbetering.
Om een voorbeeld te geven: ik heb zonet één van mijn externe iTunes schijven gepakt en aan de Mac Mini gehangen ...
Het is een ExFat Schijf die normaliter enkel aan Windows hangt ...
diskutil list disk1
/dev/disk1 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *1.0 TB disk1
1: Windows_NTFS iTunes 1.0 TB disk1s1
Laten we eens kijken wat MacOS 10.11 er van maakt:
ls -lah /Volumes/iTunes/
total 4608
drwxrwxrwx 1 docapple staff 256K Jan 8 17:00 $RECYCLE.BIN
drwxrwxrwx 1 docapple staff 256K Jan 1 1980 .
drwxrwxrwt@ 5 root admin 170B Feb 8 10:11 ..
drwxrwxrwx 1 docapple staff 256K Feb 8 10:11 .Spotlight-V100
drwxrwxrwx@ 1 docapple staff 256K Feb 8 10:11 .Trashes
-rwxrwxrwx 1 docapple staff 4.0K Feb 8 10:11 ._.Trashes
-rwxrwxrwx 1 docapple staff 4.0K Feb 8 10:11 ._.com.apple.timemachine.donotpresent
-rwxrwxrwx@ 1 docapple staff 0B Feb 8 10:11 .com.apple.timemachine.donotpresent
drwxrwxrwx 1 docapple staff 256K Feb 8 10:11 .fseventsd
drwxrwxrwx 1 docapple staff 256K Jan 8 12:25 System Volume Information
drwxrwxrwx 1 docapple staff 256K Jan 8 12:23 iTunes
Héj, hier heb ik niet om gevraagd!
Windows plaats één map: System Volume Information ... Met daarin de volgende bestanden:
drwxrwxrwx 1 docapple staff 262144 Jan 8 12:25 .
drwxrwxrwx 1 docapple staff 262144 Jan 1 1980 ..
-rwxrwxrwx 1 docapple staff 76 Jan 8 12:25 IndexerVolumeGuid
-rwxrwxrwx 1 docapple staff 12 Jan 10 20:51 WPSettings.dat
En een map die dient als prullenbak: $RECYCLE.BIN
Enkel bij het mounten (aankoppelen) heeft Apple het volgende aangemaakt:
.Spotlight-V100
.Trashes
._Trashes
._.com.apple.timemachine.donotpresent
.com.apple.timemachine.donotpresent
.fseventsd
De punt-underscore bestanden bevatten daarnaast ook nog ACL, Categorie (kleurtjes) en notitie data
Pak een m4a/aac/mp3 bestandje, vraag de informatie op vanuit de finder (cmd-I) en schrijf wat als notitie
Geef het een kleurtje vanuit de finder en sleep vervolgens het bestand naar het externe volume.
Als je dan de terminal opent en de directory bekijkt dan verschijnt er plotseling naast het audio-bestand (in dit voorbeeld) een meta-bestand:
ls -la
total 24576
drwxrwxrwx 1 docapple staff 262144 Jan 8 17:00 $RECYCLE.BIN
drwxrwxrwx 1 docapple staff 262144 Jan 1 1980 .
drwxrwxrwt@ 5 root admin 170 Feb 8 10:11 ..
drwxrwxrwx 1 docapple staff 262144 Feb 8 10:11 .Spotlight-V100
drwxrwxrwx@ 1 docapple staff 262144 Feb 8 10:11 .Trashes
-rwxrwxrwx 1 docapple staff 4096 Feb 8 10:11 ._.Trashes
-rwxrwxrwx 1 docapple staff 4096 Feb 8 10:11 ._.com.apple.timemachine.donotpresent
-rwxrwxrwx 1 docapple staff 4096 Feb 8 11:06 ._05 Promised Land.m4a[/b]
-rwxrwxrwx@ 1 docapple staff 0 Feb 8 10:11 .com.apple.timemachine.donotpresent
drwxrwxrwx 1 docapple staff 262144 Feb 8 10:11 .fseventsd
-rwxrwxrwx@ 1 docapple staff 9893896 Apr 23 2013 05 Promised Land.m4a[/b]
drwxrwxrwx 1 docapple staff 262144 Jan 8 12:25 System Volume Information
drwxrwxrwx 1 docapple staff 262144 Jan 8 12:23 iTunes
En stel je nu eens voor dat je alle bestanden read only hebt gemaakt in je iTunes directory, of
dat er bepaalde rechten aan zijn gekoppeld
of
dat je ze allemaal een categorie hebt meegegeven.
In dat geval zal bij het kopiëren vanaf een HFS+ (MacOS X) bestandssysteem naar een NTFS/ExFat of non Mac bestandssysteem elke map en elk bestand voorzien worden van een zusterbestand.
En bij een bibliotheek van enkele honderden gigabytes aan iTunes data
tikt dat erg hard aan.
Hoe kun je dit schonen? Om het proces enigszins duidelijk te maken splits ik het schoningsproces in enkele stappen.
Open de terminal en type:
cd (spate) (schijf of mapnaam)
cd /Volumes/iTunes
Je kunt ook volstaan door
cd (spate)
in te geven en dan het icoon van de betreffende map of schijf te slepen naar de terminal. In dat geval zal de terminal zelf de locatie invullen.
Hiermee verander je van locatie waar (vervolg) opdrachten betrekking op hebben
Je kunt de locatie checken door de volgende opdracht in te geven:
pwd
Je krijgt dan een terugkoppeling in de vorm van:
pwd
/Volumes/iTunes
Vervolgens plak je de volgende regel:
clear; rm -rf .Spotlight-V100 .Trashes .com.apple.timemachine.donotpresent .fseventsd \$RECYCLE.BIN System\ Volume\ Information; echo Metadata\ Verwijdert
Hiermee ontdoe ik de externe schijf van zowel MacOS X metadata als Windows metadata.
De volgende mappen worden verwijdert:
.Spotlight-V100
.Trashes
.com.apple.timemachine.donotpresent
.fseventsd
$RECYCLE.BIN
System Volume Information
De laatste twee mappen zijn van het Windows-platform. Bestaan deze mappen niet, dan zal de opdracht gewoon uitgevoerd worden en zullen de mappen worden genegeerd.
Vervolgens wil ik dat het systeem op zoek gaat naar de .DS_Store bestanden en metabestanden voorafgegaan door een punt-underscore en deze van de externe schijf verwijdert.
clear; find . -name \.DS\_Store -print -delete; find . -name \.\_* -print -delete; echo Klaar
Dit kan even duren
MacOS X zal nu elke directory doorlopen om te kijken of er bestanden zijn die voldoen aan de opgegeven criteria. En
afhankelijk van het type medium, gebruikte interface, maar zelfs MacOS X versie, processor en geheugen kan dit redelijk snel gaan of het kan een kwartiertje duren.
Zodra de Klaar verschijnt kun je de terminal afsluiten (cmd-Q) en de schijf vanuit de Finder verwijderen.
Belangrijke kanttekening: ga nu niet de schijf vanuit de Finder bekijken. Op het moment dat je dit doet zal het hele verhaal van voren af aan beginnen en de schijf opnieuw geschoond moeten worden.
Systemen waarvan ik weet dat die moeite hebben de aanpak van Apple zijn de audio entertainment systemen, zoals gebruikt in recente Audis (zelf ervaring met een Q5) en het COMAND systeem van Mercedes-Benz (ervaring met een C- en S-klasse).