Base di conoscenze

1 000 FAQ, 500 tutorial e video esplicativi. Qui ci sono delle soluzioni!

Importare dati su kDrive da iCloud

Questa guida dettaglia come importare i dati iCloud utilizzando rClone su kDrive Infomaniak.

 

✘ NON DISPONIBILE con
kSuite gratuito / kSuite Standard
my kSuite / my kSuite+ (ik.me, etik.com, ikmail.com)


 

Premessa

  • Poiché Apple non offre un'API come i suoi concorrenti, una soluzione per recuperare i documenti di un iCloud Drive è installare l'app kDrive macOS per sincronizzare la cartella icloud che deve trovarsi nella tua libreria. La guida seguente propone un'alternativa solida.
  • kDrive supporta il caricamento in streaming di rclone tramite WebDAV, fino a 50 Go (estendibile a 100 Go) per evitare abusi, con gestione automatica degli errori se il limite viene superato senza specificare preventivamente la dimensione tramite Content-Length.

 

1. Configurare rclone per l'accesso ai drive

 

Installazione di rclone sul tuo computer

Esiste una versione di rclone con interfaccia grafica (GUI) ma è possibile farlo anche tramite linea di comando (CLI):

  1. Installa rclone da un'applicazione di tipo Terminal sul tuo dispositivo, digitando l'intero comando seguente:
    sudo -v ; curl https://rclone.org/install.sh | sudo bash
  2. Inserisci la password della tua sessione sul computer per iniziare l'installazione:

 

Configurazione del disco remoto (iCloud) su rclone

  1. Una volta installato rclone, digita il comando rclone config.
  2. Scegli quindi di configurare una nuova importazione remota rispondendo n per New remote.
  3. Nominare il disco remoto, ad esempio appledrive:
  4. Scegli quindi il tipo di disco da importare rispondendo iclouddrive che corrisponde a iCloud Drive tra le opzioni proposte.
  5. Indica a rclone il apple_id inserendo il tuo Apple ID (di solito un indirizzo email).
  6. Scegli di utilizzare la tua password personale collegata all'account Apple ID (y).
  7. Inserisci la tua password due volte come richiesto:
  8. Rispondi “No” n alla domanda sulla “configurazione avanzata”.
  9. Una finestra sul tuo dispositivo dovrebbe aprirsi per avvisarti di una connessione remota; autorizzala:
  10. Una finestra sul tuo dispositivo deve aprirsi con un codice 2FA; copialo:
  11. Incolla il codice quando rclone te lo chiede.
  12. Rispondi “Sì” y all'ultima domanda se tutte le informazioni presentate sono corrette.

 

Configurazione del disco di destinazione (kDrive) su rclone

È possibile agire direttamente sul file di configurazione di rclone incollando la tua configurazione kDrive, ad esempio:

[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

Ma ecco come procedere passo dopo passo come per la configurazione precedente:

  1. Sempre nel terminale, inserisci n per una nuova configurazione del disco e inserisci il nome kDrive per riconoscere il tuo disco di destinazione:
  2. Scegli quindi il tipo di disco da importare rispondendo webdav che corrisponde a una configurazione WebDAV tra le opzioni proposte.
  3. Inserisci le seguenti informazioni:
    • url = accesso diretto a kDrive (consulta questa guida riguardo all'ID kDrive per l'URL di connessione)
    • vendor = rclone (l'opzione n°6)
    • user = indirizzo email di accesso all'account utente Infomaniak
  4. Rispondi “Sì” y alla domanda sulla password, quindi inserisci la password:
    • password dell'applicazione in caso di autenticazione a due fattori attivata o quella del tuo account utente Infomaniak se non hai attivato la 2FA.
  5. Lascia vuoto il bearer_token quindi rispondi “No” n alla domanda sulla “configurazione avanzata”.
  6. Rispondi “Sì” y all'ultima domanda e i tuoi 2 dischi vengono visualizzati:

 

2. Copiare i dati da iCloud a kDrive

Prerequisiti

  • Consulta le opzioni disponibili nella guida ufficiale prima di avviare un'importazione.

Esempio di comando che consente di avviare una copia dei tuoi dati iCloud nella radice del tuo kDrive:

sudo rclone copy appledrive: kDrive:

Questo avvierà immediatamente la copia delle tue cartelle, sottocartelle e contenuti iCloud nella cartella personale del tuo kDrive Infomaniak!

 

Dettagli sulle date delle tue foto esportate

Se esporti le tue foto da iCloud a kDrive Infomaniak, fai attenzione alle metadati delle date. Durante l'esportazione, le date di creazione dei file possono essere modificate e sostituite con la data di esportazione invece della data originale dello scatto.

Ecco uno script per utenti esperti che consente di ripristinare i dati corretti ai tuoi file a partire dalle informazioni EXIF (è consigliabile elaborare lotti di massimo 7000 foto per evitare crash):

  1. Scarica ExifTool https://exiftool.org/index.html (Pacchetto macOS).
  2. Installa l'applicazione autorizzandone l'apertura in precedenza se necessario:
  3. Apre Script Editor (situato nella tua cartella Applicazioni > Utilità):
  4. Clicca su Nuovo documento.
  5. Copia e incolla il lungo script proposto di seguito nella finestra di Script Editor.
  6. Clicca su Esegui per avviare lo script, si apre una finestra:
  7. Seleziona la cartella da analizzare.
  8. Lascia quindi girare lo script, modificherà le date o scriverà gli errori in un file errors.txt sulla scrivania.

Lo script da copiare e incollare completamente:

-- 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

Questa FAQ è stata utile?