Base de connaissances
1 000 FAQ, 500 tutoriels et vidéos explicatives. Ici, il n'y a que des solutions !
Importer des données sur kDrive depuis iCloud
Ce guide explique comment importer des données iCloud Drive ou iCloud Photos vers kDrive Infomaniak à l'aide de rclone.
✘ INDISPONIBLE avec
kSuite gratuit / kSuite Standard
my kSuite / my kSuite+ (ik.me, etik.com, ikmail.com)
Préambule
- Cette méthode s'adresse aux utilisateurs avertis qui souhaitent transférer des données iCloud vers kDrive sans passer par une copie manuelle fichier par fichier.
- rclone permet de configurer une source iCloud Drive ou iCloud Photos, puis une destination kDrive via WebDAV.
- L'accès iCloud avec rclone nécessite le mot de passe habituel de l'Apple ID et la double authentification Apple. Les mots de passe d'application Apple ne sont pas acceptés pour cette configuration.
- L'authentification iCloud peut devoir être renouvelée périodiquement avec
rclone reconnectourclone config. - La commande
rclone copycopie les fichiers vers kDrive sans les supprimer de la source iCloud.
1. Installer rclone
rclone peut être installé en ligne de commande. Sur macOS, Linux ou BSD, ouvrez l'application Terminal et exécutez la commande suivante:
sudo -v ; curl https://rclone.org/install.sh | sudo bashPrenez connaissance du guide officiel d'installation de rclone si nécessaire, notamment pour Windows ou pour une installation manuelle.
Une fois l'installation terminée, vérifiez que rclone répond correctement:
rclone version
2. Configurer la source iCloud dans rclone
Dans Terminal, lancez la configuration de rclone:
rclone config- Choisissez
npour créer un nouveau disque distant (New remote). Donnez un nom explicite à cette source, par exemple:
iCloudDrive- Choisissez le type de stockage
iclouddrive. - Pour importer des documents stockés dans iCloud Drive, conservez le service par défaut
drive. - Pour importer des éléments depuis iCloud Photos, choisissez le service
photosou créez un second disque distant dédié, par exempleiCloudPhotos. - Indiquez votre Apple ID, généralement une adresse e-mail.
- Choisissez d'entrer votre propre mot de passe, puis saisissez le mot de passe habituel de votre Apple ID.
- Répondez
nà la configuration avancée, sauf besoin particulier. - Validez la connexion depuis votre appareil Apple de confiance, puis saisissez le code de double authentification lorsque rclone le demande.
- Lorsque le récapitulatif est correct, répondez
ypour enregistrer la configuration.
Vérifiez que la source iCloud est accessible:
rclone lsd iCloudDrive:Si vous avez configuré une source dédiée à iCloud Photos, vérifiez-la également:
rclone lsd iCloudPhotos:
3. Configurer la destination kDrive dans rclone
kDrive doit être configuré dans rclone comme un stockage WebDAV.
Relancez la configuration si vous n'êtes plus dans le menu rclone:
rclone config- Choisissez
npour créer un nouveau disque distant. Donnez un nom explicite à la destination, par exemple:
kDrive- Choisissez le type de stockage
webdav. Pour l'URL, indiquez l'accès WebDAV direct à votre kDrive:
https://ID_KDRIVE.connect.kdrive.infomaniak.com/- Remplacez
ID_KDRIVEpar l'identifiant de votre kDrive ; prenez connaissance de cet autre guide si nécessaire.
- Remplacez
- Pour le fournisseur WebDAV (
vendor), choisissezother. - Pour l'utilisateur (
user), indiquez l'adresse e-mail de connexion au compte utilisateur Infomaniak. - Pour le mot de passe, indiquez:
- un mot de passe d'application si la double authentification est activée sur le compte Infomaniak;
- le mot de passe du compte utilisateur Infomaniak si la double authentification n'est pas activée.
- Laissez le
bearer_tokenvide. - Répondez
nà la configuration avancée, sauf besoin particulier. - Lorsque le récapitulatif est correct, répondez
ypour enregistrer la configuration.
La configuration obtenue ressemble à ceci dans le fichier de configuration rclone:
[kDrive]
type = webdav
url = https://ID_KDRIVE.connect.kdrive.infomaniak.com/
vendor = other
user = user@example.com
pass = PASSWORD_STORED_BY_RCLONELe mot de passe affiché dans le fichier de configuration rclone n'est pas écrit en clair lorsque la configuration est réalisée avec rclone config. Si vous modifiez ce fichier manuellement, générez la valeur du champ pass avec la commande rclone obscure.
Vérifiez que la destination kDrive est accessible:
rclone lsd kDrive:
4. Copier les données iCloud vers kDrive
N'utilisez pas sudo pour les commandes de copie si la configuration rclone a été créée avec votre session utilisateur habituelle. Sinon, rclone risque de chercher une autre configuration et de ne pas retrouver les accès créés précédemment.
Avant de lancer une copie complète, listez les dossiers disponibles sur la source:
rclone lsd iCloudDrive:Il est recommandé d'effectuer un test sans transfert réel avec --dry-run:
rclone copy iCloudDrive: kDrive:iCloudDrive --dry-run --progressSi le résultat est correct, lancez la copie:
rclone copy iCloudDrive: kDrive:iCloudDrive --progress --transfers 4 --checkers 8 --retries 5 --low-level-retries 10 --log-level INFO --log-file "$HOME/Desktop/rclone-kdrive-import.log"Cette commande copie les dossiers, sous-dossiers et fichiers de la source iCloudDrive: vers le dossier iCloudDrive de votre kDrive.
En cas d'interruption de la connexion ou de l'ordinateur, relancez la même commande. rclone reprend la comparaison et évite de recopier les fichiers déjà présents lorsque leur taille et leurs informations disponibles correspondent.
Pour vérifier la cohérence du volume copié, vous pouvez comparer la source et la destination par taille:
rclone check iCloudDrive: kDrive:iCloudDrive --size-only --one-way --progress
Copier des photos iCloud
Si vous avez configuré une source dédiée à iCloud Photos, listez d'abord les bibliothèques et dossiers disponibles:
rclone lsd iCloudPhotos:Adaptez ensuite le chemin source selon l'arborescence affichée par rclone. Exemple:
rclone copy iCloudPhotos: kDrive:iCloudPhotos --dry-run --progressPuis lancez la copie si le résultat du test est correct:
rclone copy iCloudPhotos: kDrive:iCloudPhotos --progress --transfers 4 --checkers 8 --retries 5 --low-level-retries 10 --log-level INFO --log-file "$HOME/Desktop/rclone-kdrive-photos.log"
5. Corriger les dates des photos si nécessaire
Après une exportation ou une copie de photos, les dates système des fichiers peuvent ne plus correspondre à la date originale de prise de vue. Si l'affichage chronologique n'est pas correct, vous pouvez corriger les dates sur une copie locale des fichiers avant de les envoyer définitivement dans kDrive.
Travaillez toujours sur une copie locale des fichiers avant d'exécuter un script de correction. Le script ci-dessous ne s'exécute pas directement sur une source distante rclone: il traite un dossier présent sur l'ordinateur.
Pour préparer un dossier local à corriger, copiez par exemple les photos dans un dossier temporaire sur le bureau:
rclone copy iCloudPhotos: "$HOME/Desktop/iCloud-Photos" --progressInstallez ensuite ExifTool depuis https://exiftool.org/index.html, puis exécutez le script ci-dessous sur macOS depuis l'application Terminal.
Le script recherche une date dans les métadonnées du fichier, puis dans son nom. Les fichiers corrigés sont listés dans DateFound.txt et les fichiers sans date exploitable dans DateError.txt, sur le bureau.
Le script à copier-coller entièrement:
/bin/bash <<'BASH'
#!/bin/bash
set -u
ROOT="$(osascript -e 'POSIX path of (choose folder with prompt "Select the folder containing the files to update")')" || exit 0
DESKTOP="$HOME/Desktop"
LOG_FOUND="$DESKTOP/DateFound.txt"
LOG_ERROR="$DESKTOP/DateError.txt"
: > "$LOG_FOUND"
: > "$LOG_ERROR"
find_exiftool() {
if command -v exiftool >/dev/null 2>&1; then
command -v exiftool
return 0
fi
if [ -x "/usr/local/bin/exiftool" ]; then
printf '%s\n' "/usr/local/bin/exiftool"
return 0
fi
if [ -x "/opt/homebrew/bin/exiftool" ]; then
printf '%s\n' "/opt/homebrew/bin/exiftool"
return 0
fi
return 1
}
EXIFTOOL="$(find_exiftool)" || {
printf '%s\n' "ExifTool not found. Install it, then run the script again." >> "$LOG_ERROR"
printf '%s\n' "ExifTool not found. Check DateError.txt on the desktop."
exit 1
}
if [ ! -d "$ROOT" ]; then
printf 'Invalid folder: %s\n' "$ROOT" >> "$LOG_ERROR"
printf '%s\n' "Invalid folder. Check DateError.txt on the desktop."
exit 1
fi
get_exif_date() {
"$EXIFTOOL" -s3 -d "%Y:%m:%d %H:%M:%S" -DateTimeOriginal -CreateDate -MediaCreateDate -TrackCreateDate -CreationDate -ModifyDate -- "$1" 2>/dev/null | awk '/^[0-9]{4}:[0-9]{2}:[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/ { print substr($0, 1, 19); exit }'
}
get_name_date() {
local name
name="$(basename "$1")"
if [[ "$name" =~ ([12][0-9]{3})[-_]?([01][0-9])[-_]?([0-3][0-9])([_\ -]?([0-2][0-9])[-_\.]?([0-5][0-9])[-_\.]?([0-5][0-9]))? ]]; then
local year="${BASH_REMATCH[1]}"
local month="${BASH_REMATCH[2]}"
local day="${BASH_REMATCH[3]}"
local hour="12"
local minute="00"
local second="00"
if [ -n "${BASH_REMATCH[5]:-}" ]; then
hour="${BASH_REMATCH[5]}"
minute="${BASH_REMATCH[6]}"
second="${BASH_REMATCH[7]}"
fi
printf '%s:%s:%s %s:%s:%s\n' "$year" "$month" "$day" "$hour" "$minute" "$second"
return 0
fi
return 1
}
is_valid_date() {
date -j -f "%Y:%m:%d %H:%M:%S" "$1" "+%Y:%m:%d %H:%M:%S" >/dev/null 2>&1
}
to_touch_date() {
printf '%s' "$1" | sed -E 's/^([0-9]{4}):([0-9]{2}):([0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})$/\1\2\3\4\5.\6/'
}
write_metadata() {
local file="$1"
local date_value="$2"
"$EXIFTOOL" -overwrite_original "-DateTimeOriginal=$date_value" "-CreateDate=$date_value" "-ModifyDate=$date_value" -- "$file" >/dev/null 2>&1 || true
}
process_file() {
local file="$1"
local date_value=""
local source=""
date_value="$(get_exif_date "$file")"
if [ -n "$date_value" ]; then
source="EXIF"
else
date_value="$(get_name_date "$file")"
if [ -n "$date_value" ]; then
source="file name"
fi
fi
if [ -n "$date_value" ] && is_valid_date "$date_value"; then
local touch_value
touch_value="$(to_touch_date "$date_value")"
if [ "$source" != "EXIF" ]; then
write_metadata "$file" "$date_value"
fi
if touch -t "$touch_value" "$file" 2>/dev/null; then
printf '%s | %s | %s\n' "$source" "$date_value" "$file" >> "$LOG_FOUND"
else
printf 'Unable to update file date: %s\n' "$file" >> "$LOG_ERROR"
fi
else
printf 'No valid date found: %s\n' "$file" >> "$LOG_ERROR"
fi
}
while IFS= read -r -d '' file; do
case "$file" in
*.json|*_original) continue ;;
esac
process_file "$file"
done < <(find "$ROOT" -type f -print0)
printf '%s\n' "Done. Check DateFound.txt and DateError.txt on the desktop."
BASHAprès correction, envoyez le dossier local corrigé vers kDrive:
rclone copy "$HOME/Desktop/iCloud-Photos" kDrive:iCloudPhotos --progress --transfers 4 --checkers 8 --retries 5 --low-level-retries 10
6. Accéder aux données depuis kDrive
Une fois la copie terminée, vos données sont accessibles depuis l'app Web kDrive, les apps mobiles kDrive et les appareils synchronisés avec l'app desktop kDrive.
Si vous utilisez également l'app desktop kDrive, patientez jusqu'à la fin de la synchronisation locale avant de déplacer ou renommer les dossiers importés.
Lien vers cette FAQ: https://faq.infomaniak.com/2515
Cette FAQ a été utile?