1000 FAQs, 500 tutorials and explanatory videos. Here, there are only solutions!
Import data to kDrive from iCloud
This guide details how to import data from iCloud using rClone on kDrive Infomaniak.
COMPATIBILITY my kSuite ✗‍‍ | my kSuite+ ✗‍ ✔‍= Compatible offer | ✗‍= Not available |
Preamble
- Since Apple does not offer an API like its competitors, one solution to retrieve documents from an iCloud Drive is to install the app kDrive macOS to synchronize the icloud folder, which should be in your library. The guide below offers a solid alternative.
1. Set up rclone for drive access
Installing rclone on your computer
There is a version of rclone with a graphical interface (GUI) but it is quite possible to do this via command line (CLI):
- Install rclone from a terminal application on your device by entering the following command:
sudo -v ; curl https://rclone.org/install.sh | sudo bash
- Enter the password for your session on your computer to start the installation:
- Refer to the official installation guide if necessary.
Configuration of the remote drive (iCloud) on rclone
- Once rclone is installed, enter the command
rclone config
.- Refer to the official configuration guide if necessary.
- Then choose to configure a new remote import by answering
n
forNew remote
. - Name the remote disk, for example
appledrive
: - Then choose the type of drive to import by responding with
iclouddrive
, which corresponds to iCloud Drive among the options offered. - Specify the
apple_id
to rclone by entering your Apple ID (usually an email address). - Choose to use your own password linked to the Apple ID account (
y
). - Enter your password twice as prompted:
- Answer “No”
n
to the question about “advanced configuration”. - A window on your device should open to warn you of a remote connection; authorize it:
- A window on your device should open with a 2FA code; copy it:
- Paste the code when rclone it asks you.
- Answer “Yes”
y
to the last question if all the presented information is correct.
Setting up the destination drive (kDrive) on rclone
It is possible to act directly on the configuration file of rclone by pasting your kDrive configuration in the following format, for example:
[kDrive]
type = webdav
url = https://kDrive_ID_HERE.connect.kdrive.infomaniak.com/
vendor = other
user = user@email.com
pass = PASSWORD_HERE_OR_APP_PASSWORD_IF_2FA
But here is how to proceed step by step, just like for the previous configuration:
- Still in the terminal, enter
n
for a new disk configuration and enter the namekDrive
to recognize your destination disk: - Then choose the type of disk to import by entering
webdav
, which corresponds to a WebDAV configuration among the options offered. - Enter the following information:
url
= direct access to kDrive (refer to this other guide regarding the kDrive ID for the connection URL)vendor
= rclone (option number 6)user
= email address for logging into the Infomaniak user account
- Answer “Yes”
y
when prompted for the password, then enter the password:- application password if two-factor authentication is enabled or‍ the one for your Infomaniak user account if you have not enabled 2FA.
- Leave
bearer_token
empty, then answer “No”n
to the question about “advanced configuration”. - Answer “Yes”
y
to the last question and your 2 drives will be displayed:‍
2. Copy iCloud data to kDrive
Prerequisites
- Check the available options on the official guide before starting an import.
Example command to start copying your iCloud data to the root of your kDrive:
sudo rclone copy appledrive: kDrive:
This will instantly start copying your folders, subfolders, and iCloud contents to your personal folder in your Infomaniak kDrive!
Details about the dates of your exported photos
If you export your photos from iCloud to kDrive Infomaniak, be mindful of the date metadata. During export, the file creation dates may be altered and replaced with the export date instead of the original capture date.
Here is a script for advanced users that allows you to restore the correct data to your files from the EXIF information (it is recommended to process batches of 7000 photos max. to avoid a crash):
- Download ExifTool https://exiftool.org/index.html (MacOS Package).
- Install the application by allowing it to open beforehand if necessary:
- Open Script Editor (located in your Applications > Utilities folder):
- Click on New document.
- Copy and paste the long script below into the Script Editor window.
- Click on Run to start the script, a window opens:
- Select the folder to analyze.
- Let the script run, it will modify the dates or write errors in a file errors.txt on the desktop.
The script to copy and paste in full:
-- remplace date du fichier par la date exif creation
tell application "Finder"
set Chemin to choose folder with prompt "Sélectionnez le dossier contenant les fichiers à redater"
my inspecter(Chemin)
end tell
on inspecter(un_dossier)
tell application "Finder"
-- traitement des fichiers :
set les_fichiers to files of un_dossier
repeat with chaque_fichier in les_fichiers
-- traitement d'un fichier
set lefichier to chaque_fichier
set AppleScript's text item delimiters to {""}
set nom to name of chaque_fichier --récupère le nom du fichier
set extens to document file nom in un_dossier --recupere l extension du fichier
set lextension to name extension of extens
set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
set AppleScript's text item delimiters to {"."} --récupère la partie avant le dernier "."
set elements to text items of nom
set nomcourt to (items 1 thru -2 of elements) as string
set ancien_nom to nomcourt
set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur
set chaque_fichier to chaque_fichier as string
try
set datephoto to do shell script "/usr/local/bin/exiftool -DateTimeOriginal " & quoted form of POSIX path of chaque_fichier
if datephoto is "" then set datephoto to do shell script "/usr/local/bin/exiftool -CreationDate " & quoted form of POSIX path of chaque_fichier
if datephoto is "" then set datephoto to do shell script "/usr/local/bin/exiftool -CreateDate " & quoted form of POSIX path of chaque_fichier
on error
-- Ecrit un fichier erreur sur le bureau si erreur chargement date
set lelog to open for access ((path to desktop folder as text) & "errors.txt") as text with write permission
write "Le fichier ne contient pas de date : " & chaque_fichier & return to lelog starting at eof
close access lelog
set datephoto to ""
end try
if length of datephoto > 20 then
set x to (length of datephoto) - 33
set DateOriginale to text -x thru -1 of datephoto
set ladate to text 1 thru 5 of DateOriginale
set lannee to ladate
set ladate to ladate & text 7 thru 8 of DateOriginale
set lemois to text 7 thru 8 of DateOriginale
set ladate to ladate & text 10 thru 11 of DateOriginale
set lejour to text 10 thru 11 of DateOriginale
set ladate to ladate & text 13 thru 14 of DateOriginale
set lheure to text 13 thru 14 of DateOriginale
set ladate to ladate & text 16 thru 17 of DateOriginale
set lesminutes to text 16 thru 17 of DateOriginale
set ladate to ladate & "." & text 19 thru 20 of DateOriginale
set lessecondes to text 19 thru 20 of DateOriginale
set newnom to lannee & "-" & lemois & "-" & lejour & " " & lheure & "." & lesminutes & "." & lessecondes
set xxx to ladate as string
if xxx is " 000000000000.00" then
-- Ecrit un fichier erreur sur le bureau si erreur chargement date(=0000...)
set lelog to open for access ((path to desktop folder as text) & "errors.txt") as text with write permission
write "Le fichier ne contient pas de date : " & chaque_fichier & return to lelog starting at eof
close access lelog
else
do shell script "touch -t " & ladate & " " & quoted form of POSIX path of chaque_fichier
end if
end if
if datephoto is not "" then
else
set lelog to open for access ((path to desktop folder as text) & "errors.txt") as text with write permission
write "Le fichier ne contient pas de date : " & chaque_fichier & return to lelog starting at eof
close access lelog
end if
end repeat
-- traitement des dossiers :
set les_dossiers to folders of un_dossier
repeat with chaque_dossier in les_dossiers
-- traitement d'un dossier
my inspecter(chaque_dossier)
end repeat
end tell
end inspecter
tell application "Finder"
(display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell