Base de conocimientos

1 000 FAQ, 500 tutoriales y vídeos explicativos. ¡Aquí sólo hay soluciones!

Importar datos a kDrive desde iCloud

Esta guía detalla cómo importar datos de iCloud utilizando rClone en kDrive de Infomaniak.

 

✘ NO DISPONIBLE con
kSuite gratuito / kSuite Estándar
my kSuite / my kSuite+ (ik.me, etik.com, ikmail.com)


 

Prólogo

  • Como Apple no ofrece una API como sus competidores, una solución para recuperar los documentos de un iCloud Drive es instalar la app kDrive macOS para sincronizar la carpeta icloud que debe encontrarse en su biblioteca. La guía a continuación propone una alternativa sólida.
  • kDrive admite la subida en streaming de rclone a través de WebDAV, hasta 50 Go (extensible a 100 Go) para evitar abusos, con gestión automática de errores si se supera el límite sin especificar previamente el tamaño a través de Content-Length.

 

1. Configurar rclone para el acceso a los drives

 

Instalación de rclone en su ordenador

Existe una versión de rclone con interfaz gráfica (GUI) pero es completamente posible hacerlo desde la línea de comandos (CLI):

  1. Instale rclone desde una aplicación de tipo Terminal en su dispositivo, escribiendo todo el siguiente comando:
    sudo -v ; curl https://rclone.org/install.sh | sudo bash
  2. Introduzca la contraseña de su sesión en su ordenador para comenzar la instalación:

 

Configuración del disco remoto (iCloud) en rclone

  1. Una vez instalado rclone, introduzca el comando rclone config.
  2. A continuación, elija configurar una nueva importación remota respondiendo n para New remote.
  3. Nombre el disco remoto, por ejemplo appledrive:
  4. A continuación, elija el tipo de disco a importar respondiendo iclouddrive que corresponde a iCloud Drive entre las opciones propuestas.
  5. Indique a rclone el apple_id introduciendo su Apple ID (una dirección de correo electrónico en principio).
  6. Elija utilizar su propia contraseña vinculada a la cuenta Apple ID (y).
  7. Introduzca su contraseña dos veces como se le solicite:
  8. Responda “No” n a la pregunta sobre la “configuración avanzada”.
  9. Una ventana en su dispositivo debe abrirse para advertirle de una conexión remota; autorícela:
  10. Una ventana en su dispositivo debe abrirse con un código 2FA; cópielo:
  11. Pegue el código cuando rclone lo solicite.
  12. Responda “Sí” y a la última pregunta si toda la información presentada es correcta.

 

Configuración del disco de destino (kDrive) en rclone

Es posible actuar directamente sobre el archivo de configuración de rclone pegando su configuración kDrive en forma, por ejemplo:

[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

Pero aquí está cómo proceder paso a paso, como en la configuración anterior:

  1. Siempre en la terminal, ingrese n para una nueva configuración de disco e ingrese el nombre kDrive para reconocer su disco de destino:
  2. Luego, elija el tipo de disco a importar respondiendo webdav lo que corresponde a una configuración WebDAV entre las opciones propuestas.
  3. Ingrese la siguiente información:
    • url = acceso directo a kDrive (consulte esta otra guía sobre el ID kDrive para la URL de conexión)
    • vendor = rclone (la opción n°6)
    • user = dirección de correo electrónico de inicio de sesión en la cuenta de usuario de Infomaniak
  4. Responda “Sí” y a la pregunta sobre la contraseña y luego ingrese la contraseña:
    • contraseña de aplicación en caso de autenticación doble activada o la de su cuenta de usuario de Infomaniak si no ha activado la 2FA.
  5. Deje vacío el bearer_token y luego responda “No” n a la pregunta sobre la “configuración avanzada”.
  6. Responda “Sí” y a la última pregunta y sus 2 discos se mostrarán:

 

2. Copiar los datos de iCloud a kDrive

Requisitos previos

  • Consulte las opciones disponibles en la guía oficial antes de iniciar una importación.

Ejemplo de comando que permite iniciar una copia de sus datos de iCloud a la raíz de su kDrive:

sudo rclone copy appledrive: kDrive:

Esto tendrá el efecto de iniciar instantáneamente la copia de sus carpetas, subcarpetas y contenidos de iCloud al dossier personal de su kDrive Infomaniak!

 

Precisiones sobre las fechas de sus fotos exportadas

Si exporta sus fotos desde iCloud a kDrive Infomaniak, tenga cuidado con las metadatos de las fechas. Durante la exportación, las fechas de creación de los archivos pueden modificarse y reemplazarse por la fecha de exportación en lugar de la fecha original de la toma.

Aquí hay un script para usuarios avanzados que permite restaurar los buenos datos a sus archivos a partir de las informaciones EXIF (se recomienda procesar lotes de 7000 fotos máx. para evitar un fallo):

  1. Descargue ExifTool https://exiftool.org/index.html (paquete macOS).
  2. Instale la aplicación autorizando su apertura de antemano si es necesario:
  3. Abra Script Editor (ubicado en su carpeta Aplicaciones > Utilidades):
  4. Haga clic en Nuevo documento.
  5. Copie y pegue el largo script propuesto a continuación en la ventana de Script Editor.
  6. Haga clic en Ejecutar para iniciar el script, se abre una ventana:
  7. Seleccione la carpeta a analizar.
  8. Deje que el script se ejecute, modificará las fechas o escribirá los errores en un archivo errors.txt en el escritorio.

El script a copiar y pegar por completo:

-- replace file date with EXIF creation date or date from name after the first dash -

tell application "Finder"
    set FolderPath to choose folder with prompt "Select the folder containing the files to update"
    my processFolder(FolderPath)
end tell

on processFolder(aFolder)
    tell application "Finder"
        -- process files:
        set fileList to files of aFolder
        repeat with eachFile in fileList
            -- process a single file
            
            set theFile to eachFile
            set AppleScript's text item delimiters to {""}
            set fileName to name of eachFile --get the file name
            
            set eachFile to eachFile as string --file path
            set hasDate to true --initialize date found flag
            
            try
                --get date if available
                set photoDate to do shell script "/usr/local/bin/exiftool -DateTimeOriginal " & quoted form of POSIX path of eachFile
                if photoDate is "" then set photoDate to do shell script "/usr/local/bin/exiftool -CreationDate " & quoted form of POSIX path of eachFile
                if photoDate is "" then set photoDate to do shell script "/usr/local/bin/exiftool -CreateDate " & quoted form of POSIX path of eachFile
                
                if photoDate is "" then
                    set hasDate to false --check if date was found
                end if
                
            on error
                set hasDate to false -- error retrieving date
                set photoDate to ""
            end try
            
            if length of photoDate > 20 then
                --format extracted date
                set x to (length of photoDate) - 33
                set OriginalDate to text -x thru -1 of photoDate
                set formattedDate to text 1 thru 5 of OriginalDate
                set theYear to formattedDate
                set formattedDate to formattedDate & text 7 thru 8 of OriginalDate
                set theMonth to text 7 thru 8 of OriginalDate
                set formattedDate to formattedDate & text 10 thru 11 of OriginalDate
                set theDay to text 10 thru 11 of OriginalDate
                set formattedDate to formattedDate & text 13 thru 14 of OriginalDate
                set theHour to text 13 thru 14 of OriginalDate
                set formattedDate to formattedDate & text 16 thru 17 of OriginalDate
                set theMinute to text 16 thru 17 of OriginalDate
                set formattedDate to formattedDate & "." & text 19 thru 20 of OriginalDate
                set theSecond to text 19 thru 20 of OriginalDate
                set newName to theYear & "-" & theMonth & "-" & theDay & " " & theHour & "." & theMinute & "." & theSecond
                
                set testValue to formattedDate as string --check if found date is 000
                if testValue is " 000000000000.00" then
                    set hasDate to false
                else
                    -- set file date to original EXIF date and write to log
                    do shell script "touch -t " & formattedDate & " " & quoted form of POSIX path of eachFile
                    set logFile to open for access ((path to desktop folder as text) & "Date Found.txt") as text with write permission
                    write "Original date found for file: " & OriginalDate & " " & eachFile & return to logFile starting at eof
                    close access logFile
                end if
            end if
            
            if hasDate is false then
                -- get date from file name after first dash
                set nb to ""
                set nameDate to ""
                set fileName to fileName as string
                set savedDelimiters to AppleScript's text item delimiters --save delimiters
                set AppleScript's text item delimiters to {"-"} --split on "-"
                set nb to offset of "-" in fileName
                if nb is not 0 then
                    set AppleScript's text item delimiters to savedDelimiters --restore delimiters
                    set nameDate to characters (nb + 1) thru (nb + 8) of fileName as string
                    set nameDate to nameDate & "1200.00"
                    set cmd1 to "/usr/local/bin/exiftool -datetimeoriginal=" & nameDate & " " & quoted form of POSIX path of eachFile
                    set cmd2 to "/usr/local/bin/exiftool -createdate=" & nameDate & " " & quoted form of POSIX path of eachFile
                end if
                try
                    -- write date from name to EXIF
                    do shell script cmd1
                    do shell script cmd2
                    do shell script "touch -t " & nameDate & " " & quoted form of POSIX path of eachFile
                    do shell script "rm " & quoted form of POSIX path of (eachFile & "_original")
                on error
                    -- if date from name is invalid, log the error
                    set logFile to open for access ((path to desktop folder as text) & "Date Error.txt") as text with write permission
                    write "No valid date found in file name: " & eachFile & return to logFile starting at eof
                    close access logFile
                end try
            end if
        end repeat
        
        -- process folders:
        set folderList to folders of aFolder
        repeat with eachSubfolder in folderList
            -- process a subfolder
            my processFolder(eachSubfolder)
        end repeat
    end tell
end processFolder

tell application "Finder"
    display dialog "Done! All files processed." buttons {"Close"}
end tell

¿Le ha sido útil esta FAQ?