Langsamer Transfer von Medien von iOS zu macOS

Wer ein neueres iOS-Gerät nutzt und von diesem, mittels der macOS-App Digitale Bilder, Bilder auf den Mac herunterlädt wird feststellen, das dieser Prozess eine Weile dauert. Im Gegensatz zum Transfer von älteren iOS-Geräten ist der Transfer objektiv gesehen wirklich langsamer. Hintergrund hierfür ist eine Konvertierung, welche von der App vorgenommen wird.

Die Option Originale behalten sorgt für einen schnelleren Transfer

Vorgenommen wird die Konvertierung, weil die neueren iOS-Geräte die Bilder und Videos im High Efficiency Image File Format kurz HEIF speichern und diese während des Transfers in gewöhnliche JPEG- und MOV-Dateien konvertiert werden. Um dies zu vermeiden, kann in der Digitale Bilder-App die Option Originale behalten aktiviert werden. Damit werden die Medien ohne Konvertierung direkt auf den Mac übertragen. Die macOS eigene App Photos kommt problemlos mit diesen Dateien zurecht. Auf Wunsch können die Dateien mittels Photos wieder in gebräuchlichere Formate konvertiert werden.

curl zur Abfrage von REST-APIs benutzen

Die Aufgabe des freien Kommandozeilentools curl ist einfach beschrieben: Datentransfer. So unterstützt curl unterschiedlichste Protokolle wie FTP, HTTP, HTTPS, IMAP, SCP, SMB und viele mehr. Ein einfacher Download einer Datei über HTTP bzw. HTTPS würde mit curl wie folgt aussehen:

curl -O https://example.com/file.zip

Auch ein Transfer z.B. per FTP ist kein Problem:

ftp://example.com/file.zip

Allerdings beherrscht curl wesentlich mehr Operationen als nur das Herunterladen von Dateien. So kann curl genutzt werden, um REST-APIs zu benutzen. Diese APIs arbeiten nicht nur mit dem HTTP-Verb GET, sondern auch mit anderen Verben wie POST und PUT. Ein einfacher GET-Request wurde mittels curl wie folgt aussehen:

curl -X GET https://example.com/

Ein POST-Request wird auf die gleiche Art durchgeführt:

curl -X POST https://example.com/

Sollen zusätzlich Daten übertragen werden, so geschieht dies mit dem Parameter -d:

curl -X POST https://example.com/  -d '{
	field: "data",
	field2: "data",
	field3: "data"
}'

Damit werden die Daten im Body des Requests mitgesendet. Auch die Übergabe von Headern ist mittels curl möglich:

curl -X POST https://example.com/ 
 -H 'HeaderField: headerValue'
 -d '{
	field: "data",
	field2: "data",
	field3: "data"
}'

Manche APIs und andere Services blockieren Abrufe über curl manchmal. Dabei wird der Useragent von curl ausgesperrt. Allerdings kann dieser einfach geändert werden:

curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0" -X GET https://example.com/

Damit können solche fragwürdigen Maßnahmen, welche zum Ausschluss von curl führen, umgangen werden. Daneben verfügt curl über viele weitere Operationen bzw. Optionen. So kann z.B. mittels des Parameters -I nur der Header des Response bezogen werden:

curl -I -X GET https://example.com

Somit bietet curl die entsprechende Funktionalität um REST-APIs für Tests und ähnliches flexibel abzufragen.